Struts2 中的Action分发
Struts2 中的Action分发
Struts2中Action不需要单独继承任何的特殊Action,当继承ActionSupport就支持分发,同时validate验证方法也支持分发,实现分发有以下两种形式:
通过Struts2自定义的分发字符(!)完成Action分发:
action格式为:action名!方法名.action。
validate验证方法则为:validate+方法名,分发方法名首字母大写。如:validateLogin()
index.jsp:
<center>
<s:actionerror name="error"/>
<s:fielderror />
<form action="user!login.action" method="post">
User ID:<input type="text" name="user.userid"/>
<br/>${fieldErrors["userid"][0]}<br/>
PassWord:<input type="password" name="user.password"/>
<br/>${fieldErrors["password"][0]}<br/>
<input type="submit" value="登录"/>
<input type="reset" value="重置"/>
</form>
</center>
--------------------------------------------------------------------------------------------------------------------------
在Action中不再覆写execute方法,直接定义一个login方法,而且该方法返回值类型为String。
UserAction.java:
public class UserAction extends ActionSupport {
private User user = new User();
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String login() {
if (user.getUserid().equals("Hello")&& user.getPassword().equals("12345")) {
ServletActionContext.getRequest().getSession().setAttribute("users", user);
return "suc";
}
super.addActionError("用户名或密码错误!");
return "input";
}
public void validateLogin() {
if (user.getUserid() == null || user.getUserid().trim().equals("")) {
super.addFieldError("userid", "用户ID不能为空!");
}
if (user.getPassword() == null || user.getPassword().trim().equals("")) {
super.addFieldError("password", "密码不能为空!");
}
}
}
------------------------------------------------------------------------------------------------------------------------
struts.xml:
<struts>
<package name="login" namespace="/" extends="struts-default">
<action name="user" class="org.wu.struts.action.UserAction">
<result name="suc">/suc.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>
</struts>
-----------------------------------------------------------------------------------------------------------------------
suc.jsp:
<center>
欢迎光临,${users.userid}
</center>
-----------------------------------------------------------------------------------------------------------------------
二、任意定义分隔符,通过在struts.xml中的配置来进行分发的处理。
<form action="user_login.action" method="post">
---------------------------------------------------------------------------------------
<struts>
<package name="login" namespace="/" extends="struts-default">
<action name="user_*" class="org.wu.struts.action.UserAction" method="{1}">
<!—- {1}表示取得在name中出现的第一个*,填写到method值中 -->
<result name="suc">/suc.jsp</result>
<result name="input">/index.jsp</result>
</action>
</package>
</struts>