Struts2配置一个Action实现多个请求
2015-07-06 21:55
573 查看
struts2中的Action默认执行方法为execute(),尽管可以通过<action name="addUser" class="addUser" method="doFun">设置默认执行方法,但也难以改变一个<action>一个方法的窘境。
那么,一个Action中多个方法,如何配置呢?
先上方法,简单举例:用户管理
UserManagerAction.java
[java]
view plaincopyprint?
public class UserManagerAction extends ActionSupport implements RequestAware { private User user; @Resource private UserManager userManager; private Map<String, Object> request; @Override public void setRequest(Map<String, Object> request) { this.request = request; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String addUser() throws Exception { System.out.println("-----UserManagerAction.addUser()-----"); userManager.addUser(user); return "success"; } public String modifyUser() { System.out.println("-----UserManagerAction.modifyUser()-----"); userManager.modifyUser(user); return "success"; } public String delUser() { System.out.println("-----UserManagerAction.delUser()-----"); userManager.delUser(user.getUsername()); return "success"; } public String queryUser() { System.out.println("-----UserManagerAction.queryUser()-----"); User user1 = userManager.queryUser(user.getUsername()); request.put("user1", user1); return "success"; } public String queryAllUser() { System.out.println("-----UserManagerAction.queryAllUser()-----"); List<User> userList = userManager.queryAllUser(); request.put("userList", userList); return "success"; } }
struts.xml配置,一个Action处理多个请求的配置
1.第一种方法:多个<action>标签,设置不同的method属性
[html]
view plaincopyprint?
<package name="userManager" namespace="/user" extends="struts-default">
<action name="addUser" class="com.ys.action.UserManagerAction" method="addUser" />
<action name="modifyUser" class="com.ys.action.UserManagerAction" method="modifyUser" />
<action name="delUser" class="com.ys.action.UserManagerAction" method="delUser" />
</package>
2.第二种方法:采用!的方式访问请求,例如:user/userManager!addUser
[html]
view plaincopyprint?
<package name="userManager" namespace="/user" extends="struts-default">
<action name="userManager" class="com.ys.action.UserManagerAction">
<result name="success">/success.jsp</result>
<result name="error" type="redirect">/error.jsp</result>
</action>
</package>
*.jsp页面请求如:myForm.action = "user/userManager!addUser";
3.第三种方法:采用通配符的方式(推荐)
[html]
view plaincopyprint?
<package name="userManager" namespace="/user" extends="struts-default">
<action name="*User_*" class="UserManagerAction" method="{1}User">
<result name="success">/{2}.jsp</result>
<result name="error" type="redirect">/error.jsp</result>
</action>
</package>
({1}匹配第一个*,{2}匹配第二个*)
*.jsp页面请求如:myForm.action = "user/addUser_success";
那么,一个Action中多个方法,如何配置呢?
先上方法,简单举例:用户管理
UserManagerAction.java
[java]
view plaincopyprint?
public class UserManagerAction extends ActionSupport implements RequestAware { private User user; @Resource private UserManager userManager; private Map<String, Object> request; @Override public void setRequest(Map<String, Object> request) { this.request = request; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String addUser() throws Exception { System.out.println("-----UserManagerAction.addUser()-----"); userManager.addUser(user); return "success"; } public String modifyUser() { System.out.println("-----UserManagerAction.modifyUser()-----"); userManager.modifyUser(user); return "success"; } public String delUser() { System.out.println("-----UserManagerAction.delUser()-----"); userManager.delUser(user.getUsername()); return "success"; } public String queryUser() { System.out.println("-----UserManagerAction.queryUser()-----"); User user1 = userManager.queryUser(user.getUsername()); request.put("user1", user1); return "success"; } public String queryAllUser() { System.out.println("-----UserManagerAction.queryAllUser()-----"); List<User> userList = userManager.queryAllUser(); request.put("userList", userList); return "success"; } }
public class UserManagerAction extends ActionSupport implements RequestAware { private User user; @Resource private UserManager userManager; private Map<String, Object> request; @Override public void setRequest(Map<String, Object> request) { this.request = request; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } public String addUser() throws Exception { System.out.println("-----UserManagerAction.addUser()-----"); userManager.addUser(user); return "success"; } public String modifyUser() { System.out.println("-----UserManagerAction.modifyUser()-----"); userManager.modifyUser(user); return "success"; } public String delUser() { System.out.println("-----UserManagerAction.delUser()-----"); userManager.delUser(user.getUsername()); return "success"; } public String queryUser() { System.out.println("-----UserManagerAction.queryUser()-----"); User user1 = userManager.queryUser(user.getUsername()); request.put("user1", user1); return "success"; } public String queryAllUser() { System.out.println("-----UserManagerAction.queryAllUser()-----"); List<User> userList = userManager.queryAllUser(); request.put("userList", userList); return "success"; } }
struts.xml配置,一个Action处理多个请求的配置
1.第一种方法:多个<action>标签,设置不同的method属性
[html]
view plaincopyprint?
<package name="userManager" namespace="/user" extends="struts-default">
<action name="addUser" class="com.ys.action.UserManagerAction" method="addUser" />
<action name="modifyUser" class="com.ys.action.UserManagerAction" method="modifyUser" />
<action name="delUser" class="com.ys.action.UserManagerAction" method="delUser" />
</package>
<package name="userManager" namespace="/user" extends="struts-default"> <action name="addUser" class="com.ys.action.UserManagerAction" method="addUser" /> <action name="modifyUser" class="com.ys.action.UserManagerAction" method="modifyUser" /> <action name="delUser" class="com.ys.action.UserManagerAction" method="delUser" /> </package>
2.第二种方法:采用!的方式访问请求,例如:user/userManager!addUser
[html]
view plaincopyprint?
<package name="userManager" namespace="/user" extends="struts-default">
<action name="userManager" class="com.ys.action.UserManagerAction">
<result name="success">/success.jsp</result>
<result name="error" type="redirect">/error.jsp</result>
</action>
</package>
<package name="userManager" namespace="/user" extends="struts-default"> <action name="userManager" class="com.ys.action.UserManagerAction"> <result name="success">/success.jsp</result> <result name="error" type="redirect">/error.jsp</result> </action> </package>
*.jsp页面请求如:myForm.action = "user/userManager!addUser";
3.第三种方法:采用通配符的方式(推荐)
[html]
view plaincopyprint?
<package name="userManager" namespace="/user" extends="struts-default">
<action name="*User_*" class="UserManagerAction" method="{1}User">
<result name="success">/{2}.jsp</result>
<result name="error" type="redirect">/error.jsp</result>
</action>
</package>
<package name="userManager" namespace="/user" extends="struts-default"> <action name="*User_*" class="UserManagerAction" method="{1}User"> <result name="success">/{2}.jsp</result> <result name="error" type="redirect">/error.jsp</result> </action> </package>
({1}匹配第一个*,{2}匹配第二个*)
*.jsp页面请求如:myForm.action = "user/addUser_success";
相关文章推荐
- spring 发送邮件问题
- 快速排序的java版本
- ubuntu 15.04 安装配置 JDK1.8
- 安装332bit JAVA 后eclipse无法启动 错误代码exit code=13
- Java模板模式(Template模式)
- java并发4-单例设计方法
- 文章标题
- Eclipse/MyEclipse中常用快捷键总结
- LeetCode102 Binary Tree Level Order Traversal Java题解
- Java集合系列之ArrayList源码分析
- JAVA集合类
- Java 内存溢出(java.lang.OutOfMemoryError)的常见情况和处理方式总结
- JavaBean 用反射自己实现简单内省操作 基础
- Spring揭秘:第七章-第十二章Spring AOP框架
- Java实现链式存储的二叉查找树(递归方法)
- Java中的System.in,System.out,System.err
- Summary Ranges
- JAVA中最常用的十个快捷键
- Spring技术内幕:Spring AOP的实现原理(五)
- Java集合之ArrayList源码分析