Struts2配置一个Action实现多个请求

转载 2015年07月06日 21:55:01

struts2中的Action默认执行方法为execute(),尽管可以通过<action name="addUser" class="addUser" method="doFun">设置默认执行方法,但也难以改变一个<action>一个方法的窘境。

那么,一个Action中多个方法,如何配置呢?

先上方法,简单举例:用户管理

UserManagerAction.java

  1. public class UserManagerAction extends ActionSupport implements RequestAware {  
  2.   
  3.     private User user;  
  4.       
  5.     @Resource  
  6.     private UserManager userManager;   
  7.       
  8.     private Map<String, Object> request;  
  9.       
  10.     @Override  
  11.     public void setRequest(Map<String, Object> request) {  
  12.         this.request = request;  
  13.     }  
  14.       
  15.     public User getUser() {  
  16.         return user;  
  17.     }  
  18.   
  19.     public void setUser(User user) {  
  20.         this.user = user;  
  21.     }  
  22.   
  23.     public String addUser() throws Exception {  
  24.         System.out.println("-----UserManagerAction.addUser()-----");  
  25.         userManager.addUser(user);  
  26.         return "success";  
  27.     }  
  28.       
  29.     public String modifyUser() {  
  30.         System.out.println("-----UserManagerAction.modifyUser()-----");  
  31.         userManager.modifyUser(user);  
  32.         return "success";  
  33.     }  
  34.       
  35.     public String delUser() {  
  36.         System.out.println("-----UserManagerAction.delUser()-----");  
  37.         userManager.delUser(user.getUsername());  
  38.         return "success";  
  39.     }  
  40.       
  41.     public String queryUser() {  
  42.         System.out.println("-----UserManagerAction.queryUser()-----");  
  43.         User user1 = userManager.queryUser(user.getUsername());  
  44.         request.put("user1", user1);  
  45.         return "success";  
  46.     }  
  47.   
  48.     public String queryAllUser() {  
  49.         System.out.println("-----UserManagerAction.queryAllUser()-----");  
  50.         List<User> userList = userManager.queryAllUser();  
  51.         request.put("userList", userList);  
  52.         return "success";  
  53.     }  
  54. }  


struts.xml配置,一个Action处理多个请求的配置

1.第一种方法:多个<action>标签,设置不同的method属性

  1. <package name="userManager" namespace="/user" extends="struts-default">  
  2.     <action name="addUser" class="com.ys.action.UserManagerAction" method="addUser" />  
  3.     <action name="modifyUser" class="com.ys.action.UserManagerAction" method="modifyUser" />  
  4.     <action name="delUser" class="com.ys.action.UserManagerAction" method="delUser" />  
  5. </package>  


2.第二种方法:采用!的方式访问请求,例如:user/userManager!addUser

  1. <package name="userManager" namespace="/user" extends="struts-default">  
  2.     <action name="userManager" class="com.ys.action.UserManagerAction">  
  3.         <result name="success">/success.jsp</result>  
  4.         <result name="error" type="redirect">/error.jsp</result>  
  5.     </action>      
  6. </package>  

 

*.jsp页面请求如:myForm.action = "user/userManager!addUser";

3.第三种方法:采用通配符的方式(推荐)

  1. <package name="userManager" namespace="/user" extends="struts-default">  
  2.     <action name="*User_*" class="UserManagerAction" method="{1}User">  
  3.         <result name="success">/{2}.jsp</result>  
  4.         <result name="error" type="redirect">/error.jsp</result>  
  5.     </action>  
  6. </package>  

({1}匹配第一个*,{2}匹配第二个*)

*.jsp页面请求如:myForm.action = "user/addUser_success";

Struts2一个Action内包含多个请求处理方法(三种方式)

Struts2一个Action内包含多个请求处理方法的处理(三种方式) Struts1提供了DispatchAction,从而允许一个Action内包含多个请求处理方法。Struts2也提供...
  • u010802573
  • u010802573
  • 2013年06月19日 11:54
  • 1975

struts2中Action处理多个请求(五)

下面来介绍一下三种Action处理多请求的方法: .1,动态方法调用 2,定义逻辑Action 3,在配置文件中使用通配符 动态方法调用:一个Action中定义多个业务方法,在请求时采用“...
  • zeq9069
  • zeq9069
  • 2013年03月23日 09:29
  • 1743

【Struts2集锦】Struts2的Action中多个方法调用

以前刚做java项目的时候,就用的是SSH框架,做了两个项目都用的是SSH框架,但是里面Action多个方法调用的时候却不一样,其实不止这一个不一样,不同项目用的都叫SSH框架,但是实现方式不一样,后...
  • u010539352
  • u010539352
  • 2016年01月29日 08:29
  • 2940

struts2--为Action配置Method属性,实现同一文件,多个Action

每个action单独一个文件,配置麻烦,代码重复多,尝试多个action合并为一个,这个项目中经常用到。 1、编写 Action文件: public class LoginAction exten...
  • zhanghaipeng1989
  • zhanghaipeng1989
  • 2014年10月19日 15:45
  • 853

《struts2》指定多个配置文件和默认Action

《struts2》:指定多个配置文件和默认Action由于我们不可能将一个所有的内容写在一个struts.xml文件中,特别是在比较大的应用中更是如此,为便于管理,就可以根据功能的不同写在不同的.xm...
  • u010412719
  • u010412719
  • 2016年04月21日 21:02
  • 1179

Struts2用通配符配多个action方法

 使用通配符映射(wildcard mappings)方式:在struts.xml文件中配置元素时,它的name、class、method属性都可支持通配符,这种通配符的方式是另一种形式的动态方法调用...
  • del1214
  • del1214
  • 2011年07月02日 21:56
  • 1838

如何做到 一个Action 类 应对多个action 请求

问题:如果一个Action类需要应对多个action请求,且每个action 请求的验证规则有不一样,该如何处理? > 为每一个不同的 action 请求定义其对应的验证文件: ActionCla...
  • chuck_kui
  • chuck_kui
  • 2016年05月12日 16:24
  • 1564

关于struts2种的action执行两次,或多次,或重复执行的bug

今天在做项目的时候发现一个bug,就是action会莫名其妙的执行两次,网上搜了很多帖子,关于这个问题也得到了一些处理方法,但是没有我想要的,造成执行两次活多次的问题呢,有很多种原因,我在这里只说一种...
  • neu_sunlei
  • neu_sunlei
  • 2015年06月26日 14:01
  • 1588

struts2中一个表单中提交多个请求(动态调用方法)

在很多Web应用中,为了完成不同的工作,一个HTML form标签中可能有两个或多个submit按钮,Struts2中提供了另外一种方法,使得无需要配置可以在同一个action类中执行不同的方法(默认...
  • tuke_tuke
  • tuke_tuke
  • 2015年09月26日 12:48
  • 931

把struts2的struts.xml配置文件分解成多个配置文件

把struts2的struts.xml配置文件分解成多个配置文件      在默认的情况下,Struts只自动加载路径下的struts.xml,default-struts.xml和struts-pl...
  • qq_20545159
  • qq_20545159
  • 2015年03月26日 18:36
  • 1873
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts2配置一个Action实现多个请求
举报原因:
原因补充:

(最多只允许输入30个字)