输入校验:要求用户名必须是字母和数字的组合且长度在(4-15)范围内。密码必须是字母和数字的组合且长度在(6-15)范围内,两次输入密码要相同。年龄必须为整数且在(1-99)范围内。PS:输入校验也可以使用JavaScript,或者jQuery来做,貌似更简单一点。。。
开发环境:
IntelliJ IDEA 14.1.3
java version “1.7.0_65”
Apache Tomcat 7.0
Struts 2.3
Win7 64位
输入校验效果图如下:
表单未输入任何内容,点击提交:
第二次输入密码与上一次不同,点击提交:
输入正确:
代码组织结构:
源码如下:index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<title></title>
</head>
<body>
<s:form action="validate1">
<s:textfield name="username" label="用户名" required = "true"/>
<s:textfield name="pass1" label="输入密码" required = "true"/>
<s:textfield name="pass2" label="重复密码" required = "true"/>
<s:textfield name="age" label="年龄" required = "true"/>
<s:submit value="提交"/>
</s:form>
</body>
</html>
welcome.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title></title>
</head>
<body>
欢迎!!!
</body>
</html>
Regist.java
package com.jl.action;
import com.opensymphony.xwork2.ActionSupport;
/**
* Created by root on 2016/9/9.
*/
public class Regist extends ActionSupport{
private String username;//创建用户名属性
private String pass1;//创建密码属性
private String pass2;//创建确认密码属性
private int age;//创建年龄属性
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPass1() {
return pass1;
}
public void setPass1(String pass1) {
this.pass1 = pass1;
}
public String getPass2() {
return pass2;
}
public void setPass2(String pass2) {
this.pass2 = pass2;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
校验规则文件Regist-validation.xml
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE validators PUBLIC
"-//Apache Struts//XWork Validator 1.0.3//EN"
"http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
<!-- 用户名校验区域 -->
<field name="username">
<!-- 校验用户名不能为空 -->
<field-validator type="requiredstring">
<message>必须输入用户名</message>
</field-validator>
<!-- 校验用户名格式 -->
<field-validator type="regex">
<param name="regex">
<![CDATA[(\w{4,15})]]>
</param>
<message>用户名必须是字母和数字的组合且长度在(4-15)范围内</message>
</field-validator>
</field>
<!-- 密码校验区域 -->
<field name="pass1">
<!-- 校验密码不能为空 -->
<field-validator type="requiredstring">
<message>必须输入密码</message>
</field-validator>
<!-- 校验密码格式 -->
<field-validator type="regex">
<param name="regex">
<![CDATA[(\w{6,15})]]>
</param>
<message>密码必须是字母和数字的组合且长度在(6-15)范围内</message>
</field-validator>
</field>
<!-- 重复输入密码校验区域 -->
<field name="pass2">
<!-- 重复输入密码不能为空 -->
<field-validator type="requiredstring">
<message>必须重复输入密码</message>
</field-validator>
<!-- 校验重复输入密码格式 -->
<field-validator type="regex">
<param name="regex">
<![CDATA[(\w{6,15})]]>
</param>
<message>密码必须是字母和数字的组合且长度在(6-15)范围内</message>
</field-validator>
<!-- 校验两次输入密码的一致性 -->
<field-validator type="fieldexpression">
<param name="expression">
<![CDATA[(pass2.equals(pass1))]]>
</param>
<message>两次输入密码不符</message>
</field-validator>
</field>
<!-- 年龄校验区域 -->
<field name="age">
<!-- 校验年龄不能为空 -->
<field-validator type="required">
<message>必须输入年龄</message>
</field-validator>
<!-- 校验年龄范围 -->
<field-validator type="int">
<param name="min">1</param>
<param name="max">99</param>
<message>年龄必须为整数且在(1-99)范围内</message>
</field-validator>
</field>
</validators>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>