10.Action中的method属性
转自: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属性的更多相关文章
- struts2.Action中的method属性配置
.Action中的method属性 在struts1.x中我们知道通过继承DispatchAction可以实现把多个Action进行统一操作,在struts2中实现action的统一操作也很简单.我们 ...
- Struts2 | struts.xml文件中使用method属性和通配符简化action标签和Action处理类的编写
转自:https://www.jianshu.com/p/310e89ee762d 在Struts2框架中,我们知道基本的Action标签只能实现一个url请求对应一个Action处理类.那么我们如果 ...
- struts2配置文件中Action中的各属性的含义
StrutsApacheBeanJSPServlet attribute: 这个属性用来指定ActionForm保存到指定上下文时所使用的属性名.如果不指定attribute属性的值,将使用 ...
- android Action中的data属性
(2) 根据Action和Data匹配 <activity android:name=".MyActivityTwo" android:label="@string ...
- 10、一个action中处理多个方法的调用第一种方法动态调用
我们新建一个用户的action package com.weiyuan.test; import com.opensymphony.xwork2.ActionSupport; /** * * 这里不用 ...
- struts2 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用
Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...
- 笔记01 登录、常用配置参数、Action访问Servlet API 和设置Action中对象的值、命名空间和乱码处理、Action中包含多个方法如何调用
Struts2登录 1. 需要注意:Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDis ...
- [转]Struts2理解--动态方法和method属性及通配符_默认Action
众所周知,默认条件下,在浏览器输入indexAction!execute.action,便会执行indexAction类里的execute方法,这样虽然方便,但可能带来安全隐患,通过url可以执行Ac ...
- Struts2理解--动态方法和method属性及通配符_默认Action
众所周知,默认条件下,在浏览器输入indexAction!execute.action,便会执行indexAction类里的execute方法,这样虽然方便,但可能带来安全隐患,通过url可以执行Ac ...
随机推荐
- hdu1059 dp(多重背包二进制优化)
hdu1059 题意,现在有价值为1.2.3.4.5.6的石头若干块,块数已知,问能否将这些石头分成两堆,且两堆价值相等. 很显然,愚蠢的我一开始并想不到什么多重背包二进制优化```因为我连听都没有听 ...
- dockercompose up build fail
docker https://auth.docker.io/token dial tcp lookup auth.docker.io i/o timeo Error response from dae ...
- SQL Server中如何实现遍历表的记录
SQL Server遍历表一般都要用到游标,SQL Server中可以很容易的用游标实现循环,实现SQL Server遍历表中记录. 但游标在实际的开发中都不推荐使用. 我们知道还可以借助临时表或表变 ...
- sql 变量赋值
mysql 的变量赋值如下: set @name='app' ; or set @name:='appfirst'; or with select select @appname:='you name ...
- Oracle 存储过程了解
简要记录存储过程语法与Java程序的调用方式 一 存储过程 首先,我们建立一个简单的表进行存储过程的测试 createtable xuesheng(id integer, xing_ming varc ...
- VPC/VM/VBOX安装GHOST版的无法启动系统
本人最近在安装一些公司的虚拟机,方便开发使用,不用每次都安装几个小时的装机和安装软件,但是本次却遇到了一点问题,虚拟机安装完成后一直无法进入系统,只有一个光标在黑色的屏幕上一闪一闪的,也没有任何错误提 ...
- file-loader 与 url-loader 的区别
url-loader是对file-loader的一个封装,比如webpack中对图片的加载器配置 {test: /\.(png|jpg)$/, loader: 'url-loader?limit=81 ...
- java 中的 hashcode
在Java的Object类中有一个方法: public native int hashCode(); 根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没 ...
- 浅谈fhq_treap
\(BST\) 二叉查找树,首先它是一颗二叉树,其次它里面每个点都满足以该点左儿子为根的子树里结点的值都小于自己的值,以该点右儿子为根的子树里结点的值都大于自己的值.如果不进行修改,每次查询都是\(O ...
- JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象 。
JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对 ...