struts2学习笔记(3)
这两天终于进入到struts2的核心部分了,就是Action控制。
| Struts 1.x | Stuts 2.0 | |
| 接口 | 必须继承org.apache.struts.action.Action或者其子类 | 无须继承任何类型或实现任何接口 | 
| 表单数据 | 表单数据封装在FormBean中 | 表单数据包含在Action中,通过Getter和Setter获取 | 
虽然,理论上Struts 2.0的Action无须实现任何接口或继承任何类型,但是,我们为了方便实现Action,大多数情况下都会继承com.opensymphony.xwork2.ActionSupport类,并重载(Override)此类里的String execute()方法。
简单的例子我就不写了,主要是想总结一下表单输入。
使用Struts 2.0,表单数据的输入将变得非常方便,和普通的POJO一样在Action编写Getter和Setter,然后在JSP的UI标志的name与其对应,在提交表单到Action时,我们就可以取得其值。
Action获取页面的提示信息有两种方法:
(1)将页面的提示信息直接封闭在Action的控制器中。举个例子
新建Login Action,它通过Login.jsp的表单获得用户名和密码,验查用户名是否为“max”,密码是否则为“secret”。如果,两者都符合,就在HelloWorld中显示“Welcome, max”,否则显示“Invalid user or Password”。
 package  tutorial;
package  tutorial;
 import  com.opensymphony.xwork2.ActionSupport;
import  com.opensymphony.xwork2.ActionSupport;
 publicclass Login  extends  ActionSupport {
publicclass Login  extends  ActionSupport { private String  name;
    private String  name; private String  password;
    private String  password; private String  message;
    private String  message; public Login() {
      public Login() {} //这个空的构造方法一定要有
 public String  getName() {
    public String  getName() { return name;
        return name; }
    } 
      publicvoid setName(String  name) {
    publicvoid setName(String  name) { this.name  =  name;
        this.name  =  name; }
     } 
     public String  getPassword() {
    public String  getPassword() { return  password;
        return  password; }
     } 
     publicvoid  setPassword(String password) {
    publicvoid  setPassword(String password) { this.password  =  password;
        this.password  =  password; }
     } 
     public String  getMessage() {
    public String  getMessage() { return  message;
        return  message; }
     }
 @Override
    @Override public String  execute() {
    public String  execute() { if("max".equals(name)  &&"Secret".equals(password))  {
        if("max".equals(name)  &&"Secret".equals(password))  { message ="Welcome,  "+ name;
            message ="Welcome,  "+ name; }else{
        }else{ message ="Invalid user or  password";
            message ="Invalid user or  password"; }
        } return  SUCCESS;
        return  SUCCESS; }
     } }
}<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>Login</title>
</head>
<body>
<s:form action="Login" method="POST">
<s:textfield name="name" label="User name"/> //此处的name的值对应 的是Login里的name
<s:password name="password" label="Password"/> //此处的password也是对应的Login里的password
<s:submit value="Submit"/>
</s:form>
</body>
</html>
<result>/HelloWorld.jsp</result>
</action>
在浏览器里输入http://localhost:8080/Struts2_Action/Login.jsp可以看到结果,在此就不写了。
(2)使用标准的POJO类,进行页面数据的封装(在封装POJO数据时,必须编写无参的构造方法)
写一个pojo类User.java,用于封装数据。
package com.pojo;
import java.io.Serializable;
public class User implements Serializable{
      private String name;
      private String password;
      
      public User() {
            
      }
 
                    
                     
                    
                 
                    
                 


 
     
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号