zl程序教程

您现在的位置是:首页 >  后端

当前栏目

Struts2的Action中方法的几种访问方式详解编程语言

方法编程语言 详解 方式 访问 几种 struts2 Action
2023-06-13 09:20:31 时间

在Struts2中方法调用概括起来主要有以下几种形式:沿用上篇文章关于OGNL表达式的程序

1、指定Action的method属性访问

先在Action中再添加一个方法:

 public String success(){ 

 System.out.println("方法为:"+"success"); 

 return SUCCESS; 

 }
 !-- 第一种访问方式 

 http://localhost:8081/struts2/execute 

 http://localhost:8081/struts2/success 

 当action标签不指定method属性时,默认访问Action的execute方法 

 http://localhost:8081/struts2/default 

 package name="cn.test.action" namespace="/" extends="main" 

 action name="success" method="execute" 

 result name="success" /WEB-INF/page/index.jsp /result 

 /action 

 action name="default" 

 result name="success" /WEB-INF/page/index.jsp /result 

 /action 

 action name="execute" method="execute" 

 result name="success" /WEB-INF/page/index.jsp /result 

 /action 

 /package 

2、通配符“*”的方式访问

在使用method属性来实现同一个Action的不同方法处理不同的请求时,会发现,随着方法的增多,从而导致大量的Action配置,这时我们就需要通过使用通配符来解决Action配置过多的方法。

 !-- 第二种访问方式通配符方式 

 http://localhost:8081/struts2/execute 

 一个通配符 -- 

 package name="cn.test.action" extends="main" 

 action name="*" method="{1}" 

 result name="success" /WEB-INF/page/index.jsp /result 

 /action 

 /package 

 !-- http://localhost:8081/struts2/Ognl_execute span 多个通配符之间用"_"隔开并注意action的name的属性-- 

 package name="cn.test.action" extends="main" 

 action name="*_*" method="{2}" 

 result name="success" /WEB-INF/page/index.jsp /result 

 /action 

 /package 

3、“!”的是方式访问

注意:该方法都要开启DMI:Dynamic Method Invocation即动态方法调用。

constant name= struts.enable.DynamicMethodInvocation value= true /  

开启动态方法调用后,这样虽然方便,但可能带来安全隐患,通过url可以执行Action中的任意方法。

相关链接:今天晚上 中国互联网被Struts2漏洞血洗

Apache struts2漏洞血洗中国互联网 系统安全如何保障?

Apache Struts 2 远程命令执行漏洞,你受到影响了?

 !-- 第三种访问方式 !号前面为访问的action的标签名,后面为访问的方法名 

 http://localhost:8081/struts2/ognlAction!success 

 package name="cn.test.action" extends="main" 

 action name="ognlAction" 

 result name="success" /WEB-INF/page/index.jsp /result 

 /action 

 /package 

4、其他方式访问

 !-- 第四种访问方式 

 http://localhost:8081/struts2/ognlAction?method:execute=xxx 

 package name="cn.test.action" extends="main" 

 action name="ognlAction" 

 result name="success" /WEB-INF/page/index.jsp /result 

 /action 

 /package 

以上是struts2中访问action中的方法的方式,建议使用通配符的方式。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/11188.html

cjava