struts注册信息验证的实现描述附带代码
今天学习了struts2的输入校验,对于输入校验struts2提供了两种实现方法:
1. 采用手工编写代码实现。
2. 基于XML配置方式实现
因为已经学过搭建struts2的环境,所以我就不搭建了。
下面写一个注册信息的输入校验
首先先建一个reg.jsp代码如下:
<%@page language="java" import="java.util.*"pageEncoding="utf-8"%>
<%
Stringpath = request.getContextPath();
StringbasePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPEHTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<basehref="<%=basePath%>">
<title>My JSP 'reg.jsp' startingpage</title>
<meta http-equiv="pragma"content="no-cache">
<meta http-equiv="cache-control"content="no-cache">
<meta http-equiv="expires"content="0">
<meta http-equiv="keywords"content="keyword1,keyword2,keyword3">
<meta http-equiv="description"content="This is my page">
<!--
<link rel="stylesheet"type="text/css" href="styles.css">
-->
</head>
<body>
<formaction="${pageContext.request.contextPath}/csdn/regist.action" method="post">
用户名:<inputtype="text" name="name" ><br/>
密码:<inputtype="password" name="pass" ><br/>
年龄:<inputtype="text" name="age" ><br/>
生日:<inputtype="text" name="birth" ><br/>
<inputtype="submit" value="注册" >
</form>
</body>
</html>
然后再建一个一个RegistAction.action:
packagecn.csdn.hr.action;
importjava.util.Calendar;
importjava.util.Date;
importjava.util.regex.Pattern;
importcom.opensymphony.xwork2.ActionSupport;
publicclass RegistAction extends ActionSupport{
/**
*
*/
private static final long serialVersionUID =1L;
private String name;
private String pass;
private Integer age;
private Date birth;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
public void validate(){
System.out.println("进入validate方法进行校验");
if(name!=null &&!Pattern.matches("\\w{4,25}", name.trim())){
addFieldError("user", "您输入的用户名必须是字母和数字,且长度必须是4到25之间!");
}
if(pass!=null &&!Pattern.matches("\\w{4,25}", pass.trim())){
addFieldError("pass", "您输入的密码必须是字母和数字,且长度必须是4到25之间!");
}
if(age>150|| age<0){
addFieldError("age", "您输入的年龄必须是一个有效的年龄!");
}
Calendar end=Calendar.getInstance();
end.set(2050,2,21);
Calendar start=Calendar.getInstance();
start.set(1900, 1, 1);
if(birth!=null&&(birth.after(end.getTime())||birth.before(start.getTime()))){
addFieldError("birth", "您输入的生日必须在有效的时间段内!");
}
}
public void validateRegist(){
System.out.println("进入validateRegist方法进行校验");
if(name!=null &&!Pattern.matches("\\w{4,25}", name.trim())){
addFieldError("user", "您输入的用户名必须是字母和数字,且长度必须是4到25之间!");
}
if(pass!=null &&!Pattern.matches("\\w{4,25}", pass.trim())){
addFieldError("pass", "您输入的密码必须是字母和数字,且长度必须是4到25之间!");
}
if(age>150|| age<=0 &&age!=null){
addFieldError("age", "您输入的年龄必须是一个有效的年龄!");
}
Calendar end=Calendar.getInstance();
end.set(2050,2,21);
Calendar start=Calendar.getInstance();
start.set(1900, 1, 1);
if(birth!=null&&(birth.after(end.getTime())||birth.before(start.getTime()))){
addFieldError("birth", "您输入的生日必须在有效的时间段内!");
}
}
public String regist(){
return SUCCESS;
}
}
RegistAction-validation.xml:
<!DOCTYPEvalidators PUBLIC
"-//ApacheStruts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<field name="name">
<field-validatortype="requiredstring">
<paramname="trim">true</param>
<message>必须输入名字</message>
</field-validator>
<field-validatortype="regex">
<paramname="expression"><![CDATA[(\w{4,25})]]></param>
<message>您输入的用户名必须是字母和数字,且长度必须是4到25之间!</message>
</field-validator>
</field>
<fieldname="pass">
<field-validatortype="requiredstring">
<paramname="trim">true</param>
<message>必须输入密码</message>
</field-validator>
<field-validatortype="regex">
<paramname="expression"><![CDATA[(\w{4,25})]]></param>
<message>您输入的密码必须是字母和数字,且长度必须是4到25之间!</message>
</field-validator>
</field>
<fieldname="age">
<field-validator type="integer">
<paramname="min">1</param>
<paramname="max">150</param>
<message>年纪必须在1到150之间</message>
</field-validator>
</field>
<field name="birth">
<field-validator type="date">
<paramname="min">1900-01-01</param>
<param name="max">2050-02-21</param>
<message>年纪必须在${min}到${max}之间</message>
</field-validator>
</field>
</validators>
配置文件Struts.xml:
<?xmlversion="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTDStruts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constantname="struts.custom.i18n.resources"value="csdn"></constant>
<!-- <includefile="struts-validate.xml"></include>*/-->
<package name="ss"extends="struts-default" namespace="/csdn">
<actionname="regist" class="cn.csdn.hr.action.RegistAction"
method="regist">
<result>../reg.jsp</result>
<resultname="input">/WEB-INF/error.jsp</result>
</action>
</package>
</struts>