一.简单的注册系统
1.编写欢迎页面 index.jsp -(View)
加入
<meata http-equive="REFRESH" content="1;URL=/RegistrationPage.action" />
意为等待1秒后自从刷新,重定向到URL所指向的地址
2.编写注册页面Registration.jsp -(View)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<! 使用struts2标记库 >
<%@ taglib prefix="s" URI="struts-tags" %>
...
<body>
<! 提交后交给Register动作类处理 >
<s:form action="Register">
<s:textfield name="username" label="Username" />
<s:password name="password" label="Password" />
<s:submit />
</s:form>
</body>
...
3编写User类 -(Model)
public class User {
private username = "";
private password = "";
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
4.编写注册动作类Register.java -(Model)
import com.opensymphony.xwork2.ActionSupport;
//ActionSupport类提供excute()和validate方法,excute()该方法用于完成注册用户的业务逻辑,validate()方法用于完成注册用户信息的验证逻辑
public class Register extends ActionSupport {
public String excute() {
getUserTable().addUser(user);
return SUCCESS;
}
private User user;
public UserTable getUserTable() {
return new UserTable();
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
//addFieldError()方法用于存储错误信息.该方法由interface ValidationAware提供,此接口已由ActionSupport实现
//getText()方法用于获取属性文件中的关键字对应信息.该方法由interface TextProvider提供,此接口已由ActionSupport实现
public void validate() {
if (getUser().getPassword().length() == 0) {
addFieldError("password", getText("password.required"));
}
if (getUser().getUsername().length() == 0)) {
addFieldError("username", getText("username.required"));
}
}
}
5.编写Register动作相关联的属性文件 Register.properties
username.required = Username is required.
password.required = Password is required.
6.部署sturts.xml
<!-- struts.devMode可以使struts2工作在开发模式下.
这样可以在不重新装载应用的前提下实现
1.在请求之间自动重新载入struts.xml文件的信息。
2.在请求之间自动重新载入资源文件。
3.在请求之间自动重新载入校验文件。
工作在开发模式下,Struts2可以输出更多的运行时的调试信息,这样有
助于跟踪调试程序。 -->
<constant name="struts.devMode" value="true" />
<!-- namespace是包的逻辑地址.在此包下所有配置的action前均会加上这个逻辑地址.extends表示扩展了struts-default包,这样就可以使用struts2中的特性了(截拦器等等) -->
<package name="default" namespace="/" extends="struts-default">
<action name="RegistrationPage">
<result>/Registration.jsp</result>
</action>
<!-- name="inpput"属性用来对应addFiledError()方法加入的错误信息.当截拦器在执行验证逻辑时找到错误信息时.就会返回input关键字.触发动作在执行excute()之前重定向到Registration.sjp -->
<action name="Register" class="com.vea.Register">
<result>/RegistrationSuccess.jsp</result>
<result name="input">/Registration.jsp</result>
</action>
</package>