struts2.Action中的method属性配置
.Action中的method属性
在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页面了。
版权声明:本文为博主原创文章,未经博主允许不得转载。
struts2.Action中的method属性配置的更多相关文章
- 10.Action中的method属性
转自:https://wenku.baidu.com/view/84fa86ae360cba1aa911da02.html 在struts1.x中我们知道通过继承DispatchAction可以实现把 ...
- Struts2 | struts.xml文件中使用method属性和通配符简化action标签和Action处理类的编写
转自:https://www.jianshu.com/p/310e89ee762d 在Struts2框架中,我们知道基本的Action标签只能实现一个url请求对应一个Action处理类.那么我们如果 ...
- 将 jsp 页面的值 传到struts2 action中(不是表单中的值)
JSP: 页面: <%@ page language="java" pageEncoding="GBK"%> <%@taglib prefi ...
- Analysis Services 中的服务器属性配置
Analysis Services 中的服务器属性配置: https://docs.microsoft.com/zh-cn/sql/analysis-services/server-propertie ...
- VS IDE 中Visual C++ 中的项目属性配置
VS IDE 中Visual C++ 中的项目属性配置 一. Visual C++ 项目系统基于 MSBuild. 虽然可以直接在命令行上编辑 XML 项目文件和属性表,我们仍建议你使用 VS IDE ...
- struts2 中属性驱动(其实就是struts2 action 中处理 request 的参数【old 方式servlet api 封装数据到javabean中(or beanutils)】),这里属性驱动是新方式
1.属性驱动 a\ 一般的set public class UserAction extends ActionSupport { private String username; private S ...
- struts2配置文件中Action中的各属性的含义
StrutsApacheBeanJSPServlet attribute: 这个属性用来指定ActionForm保存到指定上下文时所使用的属性名.如果不指定attribute属性的值,将使用 ...
- 第三章Struts2 Action中动态方法调用、通配符的使用
01.Struts 2基本结构 使用Struts2框架实现用登录的功能,使用struts2标签和ognl表达式简化了试图的开发,并且利用struts2提供的特性对输入的数据进行验证,以及访问Servl ...
- Struts2 Action中动态方法调用、通配符的使用
一.Struts2执行过程图: 二.struts2配置文件的加载顺序 struts-default.xml---struts-plugin.xml---struts.xml 具体步骤: 三.Actio ...
随机推荐
- Intel IPP 图像空间转换
一. 背景 用QuickSync VPP模块做RGBA到NV12的颜色空间转换导致文字显示蒙上一层颜色的问题, 暂时怀疑是VPP自身的问题,因为参数设置都是按官方demo设置的.所以尝试使用IPP来做 ...
- Python赋值魔法技巧
实验环境: [root@localhost ~]# python -V Python 2.7.5 1.序列解包 多个赋值操作可以同时进行 >>> x,y,z = 1,2,3 > ...
- HDU - 1175 连连看 【DFS】【BFS】
题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1175 思路 这种题一想到就用搜索, 但是内存是32m 用 bfs 会不会MLE 没错 第一次 BFS的 ...
- 每天一个Linux命令(33)cal命令
cal命令用于显示当前日历,或者指定日期的日历. (1)用法: 用法: cal [选项] [[[日] 月] 年] (2)功能: 功能: 用于查看日历等时间信息,如只有一 ...
- 第二十二篇、IO多路复用 一
一.简介io多路复用 可以监听多个文件描述符(socket对象)(文件句柄),一旦文件句柄出现变化,就会感知到 Linux中的 select,poll,epoll(内核2.6以上) 都是IO多路复用的 ...
- 爬虫 spider
python 2.x # -*- coding: utf-8 -*-import reimport urllib url = 'http://tieba.baidu.com/p/4872795764' ...
- 修改push动画的方向
CATransition *animation = [CATransition animation]; animation.duration = 0.4; animation.timingFuncti ...
- MySQL中NOT IN语句对NULL值的处理
与使用in时不同: 在使用in 时: SELECT COUNT(name) FROM CVE WHERE name NOT IN ('CVE-1999-0001', 'CVE-1999-0002'); ...
- 英语发音规则---发/i:/的字母及字母组合
英语发音规则---发/i:/的字母及字母组合 一.总结 一句话总结: 1.字母组合ee发/iː/? bee beef see agree week meeting feel sweet free be ...
- MVC中使用showModalDialog
1.mvc中使用模态对话框用于修改数据,如果第一次修改过后刷新页面,第二次修改时显示内容依然是第一次修改之前的,这里用js中的Math.Random()解决 Views: <%: Html.Ac ...