struts2表单:Struts2表单请求流程( 2)— Struts2高级的POJO访问

  Struts 2.0支持更高级POJO访问先定义个User.java类把username和password属性从Login类中分离出来它可以使系统结构更清晰对开发多层系统尤其有用

  User.java

package com.bulktree.struts2;
public User {
  private String username;
  private String password;
  public String getUsername {
    .out.prln("******getUsername******");
     username;
  }
  public void Username(String username) {
    .out.prln("*******Username********");
    this.username = username;
  }
  public String getPassword {
    .out.prln("******getPassword*******");
     password;
  }
  public void Password(String password) {
    .out.prln("******Password*********");
    this.password = password;
  }
}
login2.jsp
<s:form action="login2" method="post">
    <s:textfield name="user.username" label="USERNAME" tooltip="Enter Your UserName"></s:textfield>
    <s:password name= "user.password" label="PASSWORD" tooltip="Enter Your PassWord"></s:password>
    <s:submit label="login"></s:submit>
  </s:form>struts.xml文件中action配置:
<action name="login2" ="com.bulktree.struts2.LoginAction2">
      <result name="success">/welcome.jsp</result>
      <result name="input">/login2.jsp</result>
    </action>
LoginAction2.java:
package com.bulktree.struts2;
import com.opensymphony.xwork2.ActionSupport;
public LoginAction2 extends ActionSupport {
  private User user;
  private String message;
  public void User(User user) {
    .out.prln("********User***********");
    this.user = user;
  }
  public User getUser {
    .out.prln("*********getUser*************");
     user;
  }
  public String getMessage {
    .out.prln("************getMessage********");
     message;
  }
  @Override
  public String execute throws Exception {
    .out.prln("*****execute******");
    ("bulktree".equals(user.getUsername) && "oakertree".equals(user.getPassword)) {
      message = "Welcome, " + user.getUsername;
    } {
      message = "Error!";
    }
     ActionSupport.SUCCESS;
  }
  @Override
  public void validate {
    .out.prln("******validate******");
    (null user.getUsername || user.getUsername.length < 5) {
      this.addFieldError("username","USERNAME ERROR");
    }
    (null user.getPassword || user.getPassword.length < 5) {
      this.addFieldError("password","PASSWORD ERROR");
    }
  }
}


  welcome.jsp:

YOUR USERNAME:<FONT size="5" color="red"><s:property value="user.username"/></FONT><br>
  YOUR PASSWORD:<FONT size="5" color="red"><s:property value="user.password"/></FONT><br>控制台输出及分析:
*********getUser************* //得到User类例子
********User*********** //执行User准备赋值操作
******Password********* //赋值操作此时是真正赋值
*********getUser************* //得到User类例子
*******Username******** //赋值操作此时是真正赋值
以上有struts2框架自动执行
******validate****** //表单验证
******getUsername****** //表单验证时get思路方法(判断username)
******getUsername****** //表单验证时第 2次get思路方法(判断username)
******getPassword******* //表单验证时get思路方法(判断password)
******getPassword******* //表单验证时第 2次get思路方法(判断password)
*****execute****** //业务逻辑
******getUsername****** //get思路方法
******getPassword******* //get思路方法
下由Struts2框架自动执行
*********getUser************* //得到User类例子
******getUsername****** //自动执行get思路方法
********getUser************* //得到User类例子
******getPassword******* //自动执行get思路方法




  我们可以把类属性分离出来实现系统架构清晰、明了



Tags:  struts2标签 struts2 struts2表单验证 struts2表单

延伸阅读

最新评论

发表评论