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

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

  1.指定method属性

    LoginAction.java

public class LoginAction extends ActionSupport{
public String execute (){ return "success" ;
}
public String add(){
return "add" ;
}
public String update(){
return "update" ;
}
}

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

<struts >
<package name= "default" namespace ="/" extends="struts-default" >
<action name= "LoginAction" class="com.struts2.action.LoginAction" method ="execute" >
<result name= "success">/success.jsp </result>
</action>
<action name= "addAction" class="com.struts2.action.LoginAction" method ="add" >
<result name= "add">/add.jsp </result>
</action>
<action name= "updateAction" class="com.struts2.action.LoginAction" method ="update" >
<result name= "update">/update.jsp </result>
</action>
</package>
</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 表示动态方法调用

<struts >
<package name= "default" namespace ="/" extends="struts-default" >
<action name= "LoginAction" class="com.struts2.action.LoginAction" method ="execute" >
<result name= "success">/success.jsp </result>
<result name= "add">/add.jsp </result>
<result name= "update">/update.jsp </result>
</action>
</package>
<constant name= "struts.enable.DynamicMethodInvocation" value="true" ></constant>
</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改为如下:

<struts >
<package name= "default" namespace ="/" extends="struts-default" >
<!-- {1}通过*的方式传递进来 -->
<action name= "LoginAction_*" class="com.struts2.action.LoginAction" method ="{1}" >
<result name= "success">/{1}.jsp</result>
<result name= "add">/{1}.jsp</result>
<result name= "update">/{1}.jsp</result>
</action>
</package>
<constant name= "struts.enable.DynamicMethodInvocation" value="false" ></constant>
</struts >
  "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. 泛型数组列表 ArrayList

    为什么使用泛型数组列表而不使用普通数组? 1.普通数组经常会发生容量太大以致浪费的情况 2.普通数组无法动态更改数组 基本概念: 1.采用[类型参数]的[类]---->[泛型类] 2.[泛型类型 ...

  2. 移动端上传图片iphone图片旋转以及服务端处理方法

    判断是否需要旋转 /**             *iphone判断图片方向,是否需要旋转图片             */            if(strpos($_SERVER['HTTP_U ...

  3. angular学习input输入框筛选

    学习angular,看到 angular-phonecat测试用例,照着教程运行了一遍,对于初学者有点不是很理解angular 帅选代码的意思,于是找教材,参考资料,明白了input筛选原来这么简单. ...

  4. hostapd与wpa_supplicant

    hostapd与wpa_supplicant hostapd hostapd includes IEEE 802.11 access point management (authentication ...

  5. iOS 调试问题汇总

    // PBXcp error修复-No such file or directory (2013-05-02 15:20:50) 差不多算是Xcode比较常见的一个编译错误了,原因往往是添加或删除美术 ...

  6. 转:深入浅出UML类图(具体到代码层次)

    深入浅出UML类图 作者:刘伟 ,发布于:2012-11-23,来源:CSDN   在UML 2.0的13种图形中,类图是使用频率最高的UML图之一.Martin Fowler在其著作<UML ...

  7. 【转】 linux编程之GDB调试

    GDB是一套字符界面的程序集,可以用它在linux上调试C和C++程序,它提供了以下的功能: 1 在程序中设置断点,当程序运行到断点处暂停 2 显示变量的值,可以打印或者监视某个变量,将某个变量的值显 ...

  8. Linux文件权限查看及修改命令chmod

    查看权限 Linux文件访问权限分为可读,可写和可执行三种. 可用ls -l命令查看,例: ls -l或者 ll 显示为 -r--r--r--. 1 root root 21 Jan 5 23:02 ...

  9. cf#382div2

    A. 题意:字符串长度n,每次可向左向右跳k个格子.要求不能在障碍物处停留('#'),可以在空地处停留(' . ').给出字符串,从G开始,问能不能到达T. 分析:直接从G处开始向两边搜,如果能到T则 ...

  10. 《精通C#》委托与事件(10章)

    委托可用来解耦以及状态变化的实时通知,以及其他的一些作用,但是经验所限,目前还未遇见.网上的大多数例子都是类似于,使用委托,然后用console返回方法的返回值,有时候会在想,委托的通知如果是这样的话 ...