您的位置:首页 > 编程语言 > Java开发

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"; } }

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";
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: