您的位置:首页 > 编程语言 > Java开发

struts2--(3)一些小知识点--方法调用问题

2014-03-25 13:10 176 查看
 ---方法调用问题

 

 在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方法

      

     这种方法是官方推荐使用的一种方法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: