转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html

在struts1.x中我们知道通过继承DispatchAction可以实现把多个Action进行统一操作,在struts2中实现action的统一操作也很简单。我们以crud操作为例,把crud集中到一个Action中。
步骤一、建立CRUDAction,内容如下:
package com.asm;

import
com.opensymphony.xwork2.ActionSupport;

public class
CRUDAction extends ActionSupport {

public String
add() {

return "success";

}

public String
del() {

return "success";

}

public String
update() {

return "success";

}

public String query()
{

return "success";

}

}

步骤二、配置此Action,为了清晰明了,专为此Action,建立一个配置文件crud.xml,主要内容如下:
<struts>

<package name="crud"
extends="struts-default" namespace="/crud">

<action name="add"
class="com.asm.CRUDAction"
method="add">

<result name="success">/crud/addSuccess.jsp</result>

</action>

<action name="del"
class="com.asm.CRUDAction"
method="del">

<result name="success">/crud/delSuccess.jsp</result>

</action>

<action name="update"
class="com.asm.CRUDAction"
method="update">

<result name="success">/crud/updateSuccess.jsp</result>

</action>

<action name="query"
class="com.asm.CRUDAction"
method="query">

<result name="success">/crud/querySuccess.jsp</result>

</action>

</package>

</struts>

分析:上面的method方法的值来源于CRUDAction中方法的名字,这样当我们访问上面的每一个Action时,它实质是和method指定的方法关联上。

步骤三、把crud.xml配置文件并入struts.xml中,只需增加如下代码:
<include file="jack.xml"></include>

步骤四、编写相应的jsp页面,在此略去crud文件夹下的四个跳转jsp页面(addSuccess.jsp等),重点是crud.jsp页面。内容如下:
<html>

<%

String path=request.getContextPath();

%>

<body>

<a href="<%=path %>/crud/add.action">添加数据</a><br>

<a href="<%=path %>/crud/del.action">删除数据</a><br>

<a href="<%=path %>/crud/query.action">查询数据</a><br>

<a href="<%=path %>/crud/update.action">修改数据</a><br>

</body>

</html>
步骤五、发布测试。
补充扩展,动态调用DMI不使用method实现统一.我们在crud.xml中增加如下内容:
<action name="op"
class="com.asm.CRUDAction">

<result name="success">/crud/op.jsp</result>

</action>

然后再在crud.jsp中定义如下链接:

<a href="<%=path %>/crud/op!add.action">添加数据</a><br>

<a href="<%=path %>/crud/op!del.action">删除数据</a><br>

<a href="<%=path %>/crud/op!query.action">查询数据</a><br>

<a href="<%=path %>/crud/op!update.action">修改数据</a><br>

注意查看上面的链接地址,它们都是针对op action,然后再加地上“!+CRUDAction中相应的方法名”,最后再写上.action即可以访问到统一页面op.jsp。这样做虽然能减少页面,但是由于它们实质用到的是同一个Action,所以这就意味着我们要使用的拦截器相同,相同的跳转result。实际中这种方式很少使用,在此略作了解。如果不想使用动态方法调用,我们可以通过常量来关闭,即在struts.xml中增加如下配置:
<constant name="struts.enable.DynamicMethodInvocation"
value="false"/>

扩展2:在CRUDAction中使用do。举例:我们在CRUDAction中增加一个新的方法,内容如下:

public String
doMain(){

return "success";

}

然后再在在crud.xml中增加如下内容:

<action name="main"
class="com.asm.CRUDAction"
method="main">

<result name="success">/crud/main.jsp</result>

</action>
注意:配置中method属性值是doMain中去掉do后M小写。然后再在crud.jsp中增加如下链接:
<a href="<%=path %>/crud/main.action">main页面</a><br>

随后便可以访问到.../crud/main.jsp页面了。

10.Action中的method属性的更多相关文章

  1. struts2.Action中的method属性配置

    .Action中的method属性 在struts1.x中我们知道通过继承DispatchAction可以实现把多个Action进行统一操作,在struts2中实现action的统一操作也很简单.我们 ...

  2. Struts2 | struts.xml文件中使用method属性和通配符简化action标签和Action处理类的编写

    转自:https://www.jianshu.com/p/310e89ee762d 在Struts2框架中,我们知道基本的Action标签只能实现一个url请求对应一个Action处理类.那么我们如果 ...

  3. struts2配置文件中Action中的各属性的含义

    StrutsApacheBeanJSPServlet attribute:      这个属性用来指定ActionForm保存到指定上下文时所使用的属性名.如果不指定attribute属性的值,将使用 ...

  4. android Action中的data属性

    (2) 根据Action和Data匹配 <activity android:name=".MyActivityTwo" android:label="@string ...

  5. 10、一个action中处理多个方法的调用第一种方法动态调用

    我们新建一个用户的action package com.weiyuan.test; import com.opensymphony.xwork2.ActionSupport; /** * * 这里不用 ...

  6. struts2 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

    Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...

  7. 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用

    Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...

  8. [转]Struts2理解--动态方法和method属性及通配符_默认Action

    众所周知,默认条件下,在浏览器输入indexAction!execute.action,便会执行indexAction类里的execute方法,这样虽然方便,但可能带来安全隐患,通过url可以执行Ac ...

  9. Struts2理解--动态方法和method属性及通配符_默认Action

    众所周知,默认条件下,在浏览器输入indexAction!execute.action,便会执行indexAction类里的execute方法,这样虽然方便,但可能带来安全隐患,通过url可以执行Ac ...

随机推荐

  1. Oracle 11gR2 RAC 新特性说明

    最近接触了一下Oracle 11g R2 的RAC,发现变化很大. 所以在自己动手做实验之前还是先研究下它的新特性比较好. 一.    官网介绍 先看一下Oracle 的官网文档里对RAC 新特性的一 ...

  2. Spring 相关注解

    spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository.@Service 和 @Controller. 在目前的 Sprin ...

  3. python 函数参数的传递(参数带星号的说明) 元组传递 字典传递

    python中函数参数的传递是通过赋值来传递的.函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何被解析 先看第一个问题,在python中函数参数的定义主要 ...

  4. jenkins进阶-集成钉钉机器人(6)

    最早做Jenkins发布完成以后通过邮件发送信息通知相关的联系人,发现邮件会受限于大家接收的设置,导致不能及时的看到相关的发布内容,公司使用钉钉做为公司内部的通讯工具,所以想通过Jenkins发布完成 ...

  5. 静态编译opencv3.4.0

    问题: 编译了静态库之后可以不要那么多dll 解决办法: 其实和编译动态库的区别就在于: Cmake里面操作的时候,去掉下面这个选项的勾勾 BUILD_SHARED_LIBS

  6. java 中getDeclaredFields() 与getFields() 的区别

    java 中getDeclaredFields() 与getFields() 的区别 getDeclaredFields()返回Class中所有的字段,包括私有字段.例证: package com.t ...

  7. bzoj2458 最小三角形

    Description Xaviera现在遇到了一个有趣的问题.平面上有N个点,Xaviera想找出周长最小的三角形.由于点非常多,分布也非常乱,所以Xaviera想请你来解决这个问题.为了减小问题的 ...

  8. jenkins的war包下载地址

    https://jenkins.io/doc/book/installing/

  9. print 出来的信息添加到text文件里

  10. JVM插码之五:Java agent+ASM实战--监控所有方法执行时间

    本文建立在对instrumentation和agent有初步的了解的前提下阅读,关于这2个类的讲解在其它文章中. 这是一个maven项目,pom中需要的配置,lib中有asm的jar包 pom.xml ...