Struts2表单请求流程(二)

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

User.java

package com.bulktree.struts2;public class User {  private String username;  private String password;  public String getUsername() {    System.out.println("******getUsername()******");    return username;  }  public void setUsername(String username) {    System.out.println("*******setUsername()********");    this.username = username;  }  public String getPassword() {    System.out.println("******getPassword()*******");    return password;  }  public void setPassword(String password) {    System.out.println("******setPassword()*********");    this.password = password;  }}login2.jsp              struts.xml文件中action配置:      /welcome.jsp      /login2.jsp    LoginAction2.java:package com.bulktree.struts2;import com.opensymphony.xwork2.ActionSupport;public class LoginAction2 extends ActionSupport {  private User user;  private String message;  public void setUser(User user) {    System.out.println("********setUser()***********");    this.user = user;  }  public User getUser() {    System.out.println("*********getUser()*************");    return user;  }  public String getMessage() {    System.out.println("************getMessage()********");    return message;  }  @Override  public String execute() throws Exception {    System.out.println("*****execute()******");    if("bulktree".equals(user.getUsername()) && "oakertree".equals(user.getPassword())) {      message = "Welcome, " + user.getUsername();    } else {      message = "Error!";    }    return ActionSupport.SUCCESS;  }  @Override  public void validate() {    System.out.println("******validate()******");    if(null == user.getUsername() || user.getUsername().length() < 5) {      this.addFieldError("username","USERNAME ERROR");    }    if(null == user.getPassword() || user.getPassword().length() < 5) {      this.addFieldError("password","PASSWORD ERROR");    }  }}

welcome.jsp:

YOUR USERNAME:  YOUR PASSWORD:控制台输出及分析:*********getUser()************* //得到User类的实例********setUser()*********** //执行setUser(),准备赋值操作******setPassword()********* //set赋值操作,此时是真正的赋值*********getUser()************* //得到User类的实例*******setUsername()******** //set赋值操作,此时是真正的赋值以上有struts2框架自动执行******validate()****** //表单验证******getUsername()****** //表单验证时调用get方法(判断username)******getUsername()****** //表单验证时第二次调用get方法(判断username)******getPassword()******* //表单验证时调用get方法(判断password)******getPassword()******* //表单验证时第二次调用get方法(判断password)*****execute()****** //业务逻辑******getUsername()****** //调用get方法******getPassword()******* //调用get方法一下由Struts2框架自动执行*********getUser()************* //得到User类的实例******getUsername()****** //自动执行get方法********getUser()************* //得到User类的实例******getPassword()******* //自动执行get方法

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

与其临渊羡鱼,不如退而结网。

Struts2表单请求流程(二)

相关文章:

你感兴趣的文章:

标签云: