Struts2中动态方法调用就是为了解决一个action对应多个请求的处理,以免action太多。

  主要有一下三种方法:指定method属性、感叹号方式和通配符方式。推荐使用第三种方式。

  1.指定method属性

    LoginAction.java

  1. public class LoginAction extends ActionSupport{
  2. public String execute (){
  3.  
  4. return "success" ;
  5. }
  6. public String add(){
  7. return "add" ;
  8. }
  9. public String update(){
  10. return "update" ;
  11. }
  12. }

    struts.xml,配置多个action标签。

  1. <struts >
  2. <package name= "default" namespace ="/" extends="struts-default" >
  3. <action name= "LoginAction" class="com.struts2.action.LoginAction" method ="execute" >
  4. <result name= "success">/success.jsp </result>
  5. </action>
  6. <action name= "addAction" class="com.struts2.action.LoginAction" method ="add" >
  7. <result name= "add">/add.jsp </result>
  8. </action>
  9. <action name= "updateAction" class="com.struts2.action.LoginAction" method ="update" >
  10. <result name= "update">/update.jsp </result>
  11. </action>
  12. </package>
  13. </struts >

   当访问路径为http://localhost:8088/jspToAction1/LoginAction.action时,跳转到success.jsp

   当访问路径为http://localhost:8088/jspToAction1/addAction.action时,跳转到add.jsp

     当访问路径为http://localhost:8088/jspToAction1/updateAction.action时,跳转到update.jsp

  

  2.感叹号方式

  LoginAction.java不变如1所示。

  struts.xml

  struts.enable.DynamicMethodInvocation = true 表示动态方法调用

  1. <struts >
  2. <package name= "default" namespace ="/" extends="struts-default" >
  3. <action name= "LoginAction" class="com.struts2.action.LoginAction" method ="execute" >
  4. <result name= "success">/success.jsp </result>
  5. <result name= "add">/add.jsp </result>
  6. <result name= "update">/update.jsp </result>
  7. </action>
  8. </package>
  9. <constant name= "struts.enable.DynamicMethodInvocation" value="true" ></constant>
  10. </struts >

  

  访问链接时:http://localhost:8080/struts2Demo/LoginAction!update.action,跳转到update.jsp

  访问链接时:http://localhost:8080/struts2Demo/LoginAction!add.action,跳转到add.jsp

  3.通配符方式(最常用的方式也是struts官方推荐的方式)

  LoginAction.java同样不变,struts.xml改为如下:

  1. <struts >
  2. <package name= "default" namespace ="/" extends="struts-default" >
  3. <!-- {1}通过*的方式传递进来 -->
  4. <action name= "LoginAction_*" class="com.struts2.action.LoginAction" method ="{1}" >
  5. <result name= "success">/{1}.jsp</result>
  6. <result name= "add">/{1}.jsp</result>
  7. <result name= "update">/{1}.jsp</result>
  8. </action>
  9. </package>
  10. <constant name= "struts.enable.DynamicMethodInvocation" value="false" ></constant>
  11. </struts >
  1.   "LoginAction_*"中的“*”就代表{1},通过链接的方式进行匹配、传值,从而达到一个动态访问的效果。如果name=""中有多个”*“,则第一个用{1}来表示,第二个有{2}来表示,以此类推。
      访问链接时: http://localhost:8088/jspToAction1/HelloWorld_add.action 跳转到add.jsp
      访问链接时: http://localhost:8088/jspToAction1/HelloWorld_update.action   跳转到update.jsp
      

**************************************************************************************************

  如若转载请注明出处,谢谢。By奋斗的小蘑菇

Struts2中动态方法的调用的更多相关文章

  1. Action中动态方法的调用 Action中通配符的使用 Result的配置

       Action中动态方法的调用 动态方法调用(Dynamic Method Invocation,DMI) 标识符:! 一.通过以下选中的文件来查看是否禁止调用动态方法

  2. struts2中的方法的调用

    转载:http://blog.csdn.net/hephec/article/details/41808585 在Struts2中方法调用概括起来主要有三种形式: 第一种方式:指定method属性 & ...

  3. 第三章Struts2 Action中动态方法调用、通配符的使用

    01.Struts 2基本结构 使用Struts2框架实现用登录的功能,使用struts2标签和ognl表达式简化了试图的开发,并且利用struts2提供的特性对输入的数据进行验证,以及访问Servl ...

  4. Struts2 Action中动态方法调用、通配符的使用

    一.Struts2执行过程图: 二.struts2配置文件的加载顺序 struts-default.xml---struts-plugin.xml---struts.xml 具体步骤: 三.Actio ...

  5. Struts2的动态方法,及result跳转方式,全局结果以及默认的action的配置

    Action动态方法的调用 首先我们需要在struts.xml中去配置一个常量值如下 那么去哪找呢?找到Struts-core.jar并打开 method属性 <action name=&quo ...

  6. 分享知识-快乐自己:Struts2(动态方法、动态结果、通配符、方法内部跳转、action跳转、OGNL 的使用及注意事项)

    这里主要以案例演示:涵盖以下知识点 1.动态方法调用:使用关键 符号 ! 进行操作   例如:/命名空间 ! 方法名 2.动态结果集:就是说,通过后台返回的结果 ${} 获取,重定向到符合预期的页面. ...

  7. InvocationHandler中invoke()方法的调用问题

    转InvocationHandler中invoke()方法的调用问题 Java中动态代理的实现,关键就是这两个东西:Proxy.InvocationHandler,下面从InvocationHandl ...

  8. 分析spring事务@Transactional注解在同一个类中的方法之间调用不生效的原因及解决方案

    问题: 在Spring管理的项目中,方法A使用了Transactional注解,试图实现事务性.但当同一个class中的方法B调用方法A时,会发现方法A中的异常不再导致回滚,也即事务失效了. 当这个方 ...

  9. struts2.3.15.3中动态方法调用默认是关闭的

    初学ssh,用的struts2.3.15.3,使用了如下表单: <form action="/spring3/index/login.action" method=" ...

随机推荐

  1. web.xml listener和event

    Listener接口 Event类 ServletContextListener ServletContextEvent ServletContextAttributeListener Servlet ...

  2. alibaba fastjson List<Map<String, String>>2Str

    import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map; impo ...

  3. torrent

    The World's Largest BitTorrent System

  4. Sprint2(12.6)

    Sprint1第二阶段 1.类名:软件工程-第二阶段 方案一:此方案操作界面只有前台.厨房 (1)前台:用户到前台点餐,服务员操作界面,勾选客人所在桌号(不可重复勾选),并输入所选菜品,可增.删.改所 ...

  5. 仿苹果导航菜单js问题

    通过鼠标与不同图片的间距比对图片做相应的放大缩小. <div id="box"> <img src="images/1.png" class= ...

  6. 版本控制简介,git使用----使用GitHub托管代码

    关于版本控制: 很久以前,人们苦于对写过的代码进行版本的管理,经常过了一段时间想恢复原来写过的代码却又忘了不知道丢到哪儿去了,有的人用加上时间后缀来命名文件的方法,便于后期维护,但是这样做的麻烦也很大 ...

  7. ionic 的下拉刷新 与 上拉加载

    <ion-view view-title="消息通知"> <ion-content class="padding"> <!-- & ...

  8. UISegmentControl

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  9. DEV控件中GridView中的复选框与CheckBox实现联动的全选功能

    最初的界面图如图1-1(全选框ID: cb_checkall  DEV控件名称:gcCon ): 要实现的功能如下图(1-2  1-3  1-4)及代码所示: 图1-2 图1-3 图1-4 O(∩_∩ ...

  10. javascript实现列表的点击展开折叠

    <script> window.onload = function() { //要折叠的区域 var catalog = document.getElementById("div ...