Struts2 | struts.xml文件中使用method属性和通配符简化action标签和Action处理类的编写
转自:https://www.jianshu.com/p/310e89ee762d
在Struts2框架中,我们知道基本的Action标签只能实现一个url请求对应一个Action处理类。那么我们如果有三个action请求,我们就需要在struts.xml中写三个action标签,同时还需要写三个对应的Action处理类。
例如:
1、我有三个url请求,分别对应增加用户,删除用户和修改用户的三个功能:
<a href = "/addUser.action">增加用户</a>
<a href = "/deleteUser.action">增加用户</a>
<a href = "/modifyUser.action">增加用户</a>
2、那么我就需要对应编写三个Action处理类,同时在struts.xml中配置三个action标签,如下:
<package name = "demo" extends="struts-default" namespace="/">
<action name= "addUser" class = "com.demo.AddUserAction"></action>
<action name= "deleteUser" class = "com.demo.DeleteUserAction"></action>
<action name= "modifyUser" class = "com.demo.ModifyUserAction"></action>
</package>
这样做功能上虽然没有什么问题,但是如果我项目功能较多,那么就需要编写大量的Action类,并在struts.xml中配置大量action标签,这样会造成大量冗余代码。
那么有没有办法可以让一个Action类处理多个url请求呢?当然有!那就是:
使用action标签中的method属性使一个Action类处理多个不同的Url请求
代码示例:
1、还是上面三个url请求,代码就不重复写了
2、在同一个Action中编写这三个功能的逻辑
public class UserAction extends ActionSupport{
public String addUser(){
Sysotem.out.println("增加用户方法被执行了");
return NONE;
}
public String deleteUser(){
Sysotem.out.println("删除用户方法被执行了");
return NONE;
}
public String modifyUser(){
System.out.println("修改用户的方法执行了");
return NONE;
}
}
3、然后在action标签中使用method属性即可以将这三个url请求都引导到UserAction中执行对应的方法
<action name="addUser" class="com.demo.UserAction" method="addUser"></action>
<action name="deleteUser" class="com.demo.UserAction" method="deleteUser"></action>
<action name="modifyUser" class="com.demo.UserAction" method="modifyUser"></action>
通过这样的方式,我们就可以简化Action处理类的数量,将一些功能逻辑放在一个Action中,再通过struts.xml文件中的action标签的method属性就可以实现多个请求对应一个Action。
但是struts.xml文件中的action标签还是很多,每一个url请求都要写一个action标签,那么能不能一个action标签处理所有的url请求呢?程序猿怎么能说自己不能!
使用method属性配合通配符实现一个Action类、一个action标签处理多个url请求
代码示例:
1、修改请求页面的url请求地址
<a href = "/userAction_addUser.action">增加用户</a>
<a href = "/userAction_deleteUser.action">增加用户</a>
<a href = "/userAction_modifyUser.action">增加用户</a>
2、在action标签中配合使用method属性和通配符
<action **name="userAction_*"** class="com.demo.UserAction" **method="{1}"**></action>
当url请求匹配到"userAction_"字段时,通配符*会自动匹配请求过来的url后面部分,method属性"{n}",n代表前面name属性中第n个通配符,然后自动执行Action类中相对性的方法。
例如:当我请求userAction_addUser.action时,* = addUser,此时{1} = addUser,那么此时这个action标签就变成了"<action name="userAction_addUser" class="com.demo.UserAction" method="addUser"></action>",此时这个url请求就会直接分配到UserAction类中的addUser()方法执行。以此类推。
由此,使用action标签中的method属性配合通配符可以极大的简化Action类和struts.xml文件中action标签的编写工作。
作者:Asimov
链接:http://www.jianshu.com/p/310e89ee762d
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
Struts2 | struts.xml文件中使用method属性和通配符简化action标签和Action处理类的编写的更多相关文章
- struts.xml 文件中的 namespace 属性图文详解
namespace:名称空间.默认值是""(空字符串). 名称空间+动作名称:构成了动作的访问路径
- struts.xml文件中配置tiles.xml
Apache Tiles是一个JavaEE应用的页面布局框架.Tiles框架提供了一种模板机制,可以为某一类页面定义一个通用的模板,该模板定义了页面的整体布局.布局由可以复用的多个块组成,每个页面可以 ...
- struts.xml文件中package元素的各大属性讲解
Struts2中的包: Struts2使用包来组织Action,将Action放在包下来定义,通过package元素配置一个包,通过package的子元素action来定义一个Action: Stru ...
- Struts2 学习笔记——struts.xml文件之Bean的配置
Struts2的大部分核心组件不是以硬编码的形式写在代码中,而是通过自身的IoC容器来管理的. Struts2以可配置的形式来管理核心组件,所以开发者可以很容易的扩展框架的核心组件.当开发者需要扩展或 ...
- struts2——配置struts.xml文件
在struts2框架中struts.xml是应当放到src的根目录,程序编译后会将struts.xml放到WEB-INF/classes目录下. Struts2在web.xml中的一般配置如下: &l ...
- Struts2.0 xml文件的配置(package,namespace,action)
struts.xml配置 struts.xml文件是整个Struts2框架的核心. struts.xml文件内定义了Struts2的系列Action,定义Action时,指定该Action的实现类,并 ...
- struts.xml文件:
struts.xml文件中包含的配置信息,你将修改所采取的措施的开发.这个文件可以被用来覆盖默认设置的应用程序,例如struts.devMode=false和其他设置中定义的属性文件.这个文件可以创建 ...
- struts2.Action中的method属性配置
.Action中的method属性 在struts1.x中我们知道通过继承DispatchAction可以实现把多个Action进行统一操作,在struts2中实现action的统一操作也很简单.我们 ...
- Struts2学习-struts.xml文件配置
学习框架过程中,一直对框架中的配置文件比较难理解,特搜集资料简要记录一下struts.xml文件遇到的问题. <?xml version="1.0" encoding=&qu ...
随机推荐
- 极路由4pro交叉编译c、c++的代码
首先在官方文档中下载SDK 极路由4pro是mtmips架构,即32位mips,小端的,因此下载这个 防止官方的下载链接失效,特意上传到百度网盘: 链接:https://pan.baidu.com/s ...
- gdb学习-checkpoint,watch
checkpoint的内容参考: http://blog.chinaunix.net/uid-23629988-id-2943273.html 这一篇主要是checkpoint,在next之前加che ...
- [Angular] Set Metadata in HTTP Headers with Angular HttpHeaders
Besides sending (or requesting) the actual data to the server API, there’s also often the need to se ...
- HTTP Status 404 - /servlet/Item/AddItemServlet
我想学习编程的人对404和500都是非常敏感非常熟悉的.在做DRP系统的时候多次遇到这两个错误,今天让我遇到他并且让我铭记他,那就是一个"/": 这是说jsp出问题了,并且找不到, ...
- bzoj1103: [POI2007]大都市meg(树链剖分)
1103: [POI2007]大都市meg 题目:传送门 简要题意: 给你一棵树,给出每条边的权值,两个操作:1.询问根到编号x的最短路径的权值和 2.修改一条边的边权 题解: 很明显啊,看懂了题基 ...
- linux 下的两种软件安装方式 —— 源码(编译、安装),编译好的二进制(直接安装)
我们以 GPG(加密工具)为例来说明两种安装方式的区别: 源码(Source code releases,名称中则会含有src等说明信息,tarball:source),先编译再安装 GPU 的源码地 ...
- xBIM 实战04 在WinForm窗体中实现IFC模型的加载与浏览
系列目录 [已更新最新开发文章,点击查看详细] WPF底层使用 DirectX 进行图形渲染.DirectX 能理解可由显卡直接渲染的高层元素,如纹理和渐变,所以 DirectX 效率更高. ...
- OC冒泡排序算法
面试的时候很多公司会要求写一个冒泡排序算法,于是用OC写了一个,代码如下所示 需要注意的事项:oc数组只能存放oc对象,因此遍历数组输出的时候,记得通过NSString对象转换成intValue #i ...
- shiro什么时候会进入doGetAuthorizationInfo(PrincipalCollection principals)
shiro会进入授权方法一共有三种情况!(注解.标签.代码) 1.subject.hasRole(“admin”) 或 subject.isPermitted(“admin”):自己去调用这个是否有什 ...
- 【实战经验】64位Win7安装+32位Oracle + PL/SQL 解决方法
软件环境:64位win7.32位Oracle 10g. PL/SQL 9.0.4.1644 前言:以前开发用的都是32位系统,突然换到64位上,安装环境真的有点麻烦了,尤其对于PL/SQL只支持32位 ...