Struts2的验证器案例

来源:互联网 发布:人工智能相关论文 编辑:程序博客网 时间:2024/06/07 10:57

1.首先需要注意如下的关键文件的查找方法

1)找到在struts-2.3.15.3-all\struts-2.3.15.3\apps\struts2-blank\WEB-INF\lib下的xwork-core-2.3.13.3.jar解压,打开xwork-validator-1.0.3.dtd,复制其中的验证器约束。

  <!DOCTYPE validators PUBLIC  "-//Apache Struts//XWork Validator 1.0.3//EN"  "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">

2)在xwork-core-2.3.15.3.jar\com\opensymphony\xwork2\validator\validators下的default.xml可以看到struts2内置的验证器。

2.首先给出struts.xml的配置

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><constant name="struts.devMode" value="true"/><package name="p1" extends="struts-default"><!-- 声明式验证器案例的动作类配置 --><action name="addStudent" class="com.itheima.web.action.StudentAction" method="addStudent" ><result name="input">/student.jsp</result></action></package></struts>

3.StudentAction.java

public class StudentAction extends ActionSupport implements ModelDriven<Student> {private Student student = new Student();public Student getModel() {return student;}public String addStudent(){return SUCCESS;}public Student getStudent() {return student;}public void setStudent(Student student) {this.student = student;}}


4.student.jsp如下,从中可以看出,student包含的成员变量有username,age,email,password,score,url,gender。这时候需要对输入的信息是否正确进行验证,这时候还需要配置相应的验证器

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%--导入struts2的标签库 --%><%@ taglib uri="/struts-tags" prefix="s" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>用户注册,使用的是struts2的标签</title>    <s:head></s:head>  </head>  <body>  <s:actionerror/> <%--动作错误 --%>  <%--<s:fielderror /> 字段错误 --%>  <%--struts2的form标签,它提供了和原始html表单标签几乎一致的属性  action:请求的地址。直接写动作名称。不用写contextPaht  method:请求的方式。在这里不用写。struts2的form表单默认就是post  enctype:表单编码的MIME类型  --%>  <s:form action="addStudent.action">  <s:textfield name="username" label="用户名" />  <s:textfield name="age" label="年龄"/>  <s:textfield name="email" label="邮箱"/>  <s:textfield name="password" label="密码" />  <s:textfield name="repassword" label="确认密码"/>  <s:textfield name="score" label="成绩"/>  <s:textfield name="url" label="个人主页"/>  <%--list中的取值是生成一个list集合,并往集合中放入元素 --%>  <s:radio name="gender" list="{'男','女'}"  label="性别"/>  <s:submit value="注册"/>  </s:form>  </body></html>

5.验证器的命名为StudentAction-addStudent-validation.xml(命名由三部分组成    动作类的类名-struts.xml中定义的动作类的类名-固定validation),其放置位置与StudentAction.java在同一个包下。

<?xml version="1.0" encoding="UTF-8"?><!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><field name="age"><field-validator type="int"><!-- 使用注入的方式,设置最大和最小值 --><param name="min">18</param><param name="max">100</param><message>请输入18-100之间的整数</message></field-validator></field><field name="email"><field-validator type="email"><message>请输入正确的邮箱格式</message></field-validator></field><field name="password"><field-validator type="requiredstring"><!-- 注入取消使用trim --><param name="trim">false</param><message>请输入密码</message></field-validator><field-validator type="stringlength"><param name="minLength">3</param><param name="maxLength">8</param><message>密码长度是3~8位的</message></field-validator></field><!-- 确认密码和密码必须保持一致,是2个字段的事,所以要使用基于验证器的声明方式,其中[CDATA[]]是为了去掉特殊字符 --><validator type="expression"><param name="expression"><![CDATA[password == repassword]]></param><message>两次密码必须一致</message></validator><field name="score"><field-validator type="regex"><param name="regex">\d+</param><message>请输出正确的成绩</message></field-validator></field><field name="url"><field-validator type="url"><message>请输入正确的url地址</message></field-validator></field><field name="gender"><!-- required是一个只验证是否null的内置验证器,不会去除空格 --><field-validator type="required"><message>请选择性别</message></field-validator></field></validators>
其中涉及到的注入方式,对应的参数命名方式需要在xwork-core-2.3.15.3.jar\com\opensymphony\xwork2\validator\validators下的default.xml可以看到struts2内置的验证器,并通过其实现类进行查找。在java api中查找Pattern /d+ 多位数字【0-9】
原创粉丝点击