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> 

posted @ 2013-02-25 16:26  My_World  阅读(1713)  评论(0编辑  收藏  举报