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;
import com.opensymphony.xwork2.ActionSupport;
publicclass Login extends ActionSupport {
private String name;
private String password;
private String message;
public Login() {} //这个空的构造方法一定要有
public String getName() {
return name;
}
publicvoid setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
publicvoid setPassword(String password) {
this.password = password;
}
public String getMessage() {
return message;
}
@Override
public String execute() {
if("max".equals(name) &&"Secret".equals(password)) {
message ="Welcome, "+ name;
}else{
message ="Invalid user or password";
}
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号