struts2--(3)一些小知识点--方法调用问题
2014-03-25 13:10
176 查看
---方法调用问题
在struts2中,是通过在struts.xml中配置要调用action中的那个方法的,一般是通过action标签的属性,method来指定,默认是调用其
execute方法。常见有三种方法来指定调用action中的那个方法(这些方法的返回值都需要为String类型)。
方法一:
在action标签中,通过method属性来指定该方法名,不指定的话,默认为execute,如下:
在struts.xml中配置完后,只需要在浏览器地址中输入
http://localhost:8080/Struts2_0001/TestAction,它将会调用TestAction中的add方法。
在实际应用中,这种方法有个缺点,当一个action要处理很请求时,每个请求调用不同的方法,那么这个时候就要编写很多这种action配置。
比较繁琐。
方法二:
鉴于上面那种方法的缺点,struts2提供了一种方法叫动态调用,它将可以在URL中指定要调用的方法,而action中不用做任何配置。这时就
可以实现,只配置一个action,就可以处理多个请求。但是使用这种方法的前提是要在struts.xml中配置如下内容:
它会将动态方法调用打开。具体示例如下:
action配置中,无需指定method方法;区别于方法一的是,在URL访问地址中写成如下方式
http://localhost:8080/Struts2_0001/test/Test!add
(注意,要是action配置了后缀,url需写成如下方式:
http://localhost:8080/Struts2_0001/test/Test!add.action)
其中,Test为action名,add为action中的方法。需要通过"!"号来指定。但是这种方法也不太推荐使用。
方法三:
这种方法其实就是第一种方法,不通的是,它是通过通配符来实现的。这样也可以做到只配置一个action,就可以访问到所有action方法。
其原理是在aciton名中带一部分内容,此内容代表访问action中的方法,这部分内容用通配符"*"号代替。method就指定这个"*"匹配方法。
配置如下:
上述配置中{1}就是指定的方法。这是URL中地址可以这样写:
URL:http://localhost:8080/Struts2_0001/test/Test_add 它将调用TestAction中的add方法
URL:http://localhost:8080/Struts2_0001/test/Test_update ,它将调用TestAction中的update方法
这种方法是官方推荐使用的一种方法。
在struts2中,是通过在struts.xml中配置要调用action中的那个方法的,一般是通过action标签的属性,method来指定,默认是调用其
execute方法。常见有三种方法来指定调用action中的那个方法(这些方法的返回值都需要为String类型)。
方法一:
在action标签中,通过method属性来指定该方法名,不指定的话,默认为execute,如下:
<action name="*Action" class="cn.itcast.action.TestAction" method="add"> <result name="success"> /WEB-INF/jsp/success.jsp </result> <result name="error"> /WEB-INF/jsp/error.jsp </result> </action>
在struts.xml中配置完后,只需要在浏览器地址中输入
http://localhost:8080/Struts2_0001/TestAction,它将会调用TestAction中的add方法。
在实际应用中,这种方法有个缺点,当一个action要处理很请求时,每个请求调用不同的方法,那么这个时候就要编写很多这种action配置。
比较繁琐。
方法二:
鉴于上面那种方法的缺点,struts2提供了一种方法叫动态调用,它将可以在URL中指定要调用的方法,而action中不用做任何配置。这时就
可以实现,只配置一个action,就可以处理多个请求。但是使用这种方法的前提是要在struts.xml中配置如下内容:
<constant name="struts.enable.DynamicMethodInvocation" value="true" />
它会将动态方法调用打开。具体示例如下:
<action name="Test" class="cn.itcast.action.TestAction"> <result name="success"> /WEB-INF/jsp/success.jsp </result> <result name="error"> /WEB-INF/jsp/error.jsp </result> </action>
action配置中,无需指定method方法;区别于方法一的是,在URL访问地址中写成如下方式
http://localhost:8080/Struts2_0001/test/Test!add
(注意,要是action配置了后缀,url需写成如下方式:
http://localhost:8080/Struts2_0001/test/Test!add.action)
其中,Test为action名,add为action中的方法。需要通过"!"号来指定。但是这种方法也不太推荐使用。
方法三:
这种方法其实就是第一种方法,不通的是,它是通过通配符来实现的。这样也可以做到只配置一个action,就可以访问到所有action方法。
其原理是在aciton名中带一部分内容,此内容代表访问action中的方法,这部分内容用通配符"*"号代替。method就指定这个"*"匹配方法。
配置如下:
<action name="Test_*" class="cn.itcast.action.TestAction" method="{1}"> <result name="success"> /WEB-INF/jsp/success.jsp </result> <result name="error"> /WEB-INF/jsp/error.jsp </result> </action>
上述配置中{1}就是指定的方法。这是URL中地址可以这样写:
URL:http://localhost:8080/Struts2_0001/test/Test_add 它将调用TestAction中的add方法
URL:http://localhost:8080/Struts2_0001/test/Test_update ,它将调用TestAction中的update方法
这种方法是官方推荐使用的一种方法。
相关文章推荐
- Struts2中DMI(动态方法调用)的一些问题
- Struts2中DMI(动态方法调用)的一些问题
- Struts2中DMI(动态方法调用)的一些问题
- Struts2中DMI(动态方法调用)的一些问题 4000
- Struts2中(动态方法调用)DMI的一些问题
- Struts2中DMI(动态方法调用)的一些问题
- Struts2动态方法调用(DMI)小问题
- mac java调用终端 的一些问题解决方法
- 关于java jni调用c++动态库的一些问题及解决方法
- 在chrom中,array的一些方法的调用出错的问题
- [Struts2 框架学习] Struts2.5 通配符动态方法调用问题
- c#的一些小知识点:object/string 转化为float,float保留2位小数,Replace的使用,静态方法的调用
- Struts2使用!动态方法调用无效问题
- 转载:.Cocos2dx2.2下使用JNI技术调用jar包里面的一些方法遇到的一些问题及解决方案。
- struts2--(3)--一些小知识点---action接收参数问题
- 【Struts2复习知识点五】-ActionMethod 动态指定调用方法
- 最近在ArcGIS Engine开发中关于调用gp工具过程出现COM 组件的调用返回了错误 HRESULT E_FAIL 错误的解决方法 和 学习oracle中遇到的一些问题总结
- struts2动态方法调用 无效问题
- Struts2中DMI(动态方法调用)的错误问题(There is no Action mapped for namespace [/xxx] and action name [xxx!yyy] a)
- 【Struts2复习知识点五】-ActionMethod 动态指定调用方法(转载)