一 视图

1 show.jsp

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>校验成功</title></head><body>
<h3>校验成功</h3>
用户名:<s:property value="user.name"/><br/>
密码:<s:property value="user.pass"/><br/>
年龄:<s:property value="user.age"/><br/>
生日:<s:property value="user.birth"/><br/></body></html>

2 registForm.jsp

<%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %>
<%@taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>请输入您的注册信息</title><s:head/></head><body>
<h3>请输入您的注册信息</h3>
<s:form action="regist"><s:textfield name="user.name" label="用户名"/><s:textfield name="user.pass" label="密码"/><s:textfield name="user.age" label="年龄"/><s:textfield name="user.birth" label="生日"/><s:submit value="注册"/>
</s:form></body></html>

二 配置文件

<?xml version="1.0" encoding="GBK"?>
<!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.i18n.encoding" value="GBK"/><package name="lee" extends="struts-default"><action name="regist" class="org.crazyit.app.action.RegistAction"><result name="input">/WEB-INF/content/registForm.jsp</result><result>/WEB-INF/content/show.jsp</result></action><action name="*"><result>/WEB-INF/content/{1}.jsp</result></action></package>
</struts>

三 领域模型

package org.crazyit.app.domain;import java.util.*;public class User
{private String name;private String pass;private int age;private Date birth;// name的setter和getter方法public void setName(String name){this.name = name;}public String getName(){return this.name;}// pass的setter和getter方法public void setPass(String pass){this.pass = pass;}public String getPass(){return this.pass;}// age的setter和getter方法public void setAge(int age){this.age = age;}public int getAge(){return this.age;}// birth的setter和getter方法public void setBirth(Date birth){this.birth = birth;}public Date getBirth(){return this.birth;}}

四 资源文件

xwork.default.invalid.fieldvalue={0}字段无效
name.requried=用户名必填!
name.regex=用户名必须是字母和数字,且长度必须在4~25之间!
pass.requried=用户名必填!
pass.regex=用户名必须是字母和数字,且长度必须在4~25之间!
age.range=年龄必须在${min}和${max}之间。
birth.range=生日必须在${min}和${max}之间。

五 校验文件

<?xml version="1.0" encoding="GBK"?>
<!-- 指定校验配置文件的DTD信息 -->
<!DOCTYPE validators PUBLIC"-//Apache Struts//XWork Validator 1.0.3//EN""http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<!-- 校验文件的根元素 -->
<validators><!-- 校验user的name属性 --><field name="name"><!-- 指定name属性必须满足必填规则 --><field-validator type="requiredstring"><param name="trim">true</param><!-- 如果校验失败,输出name.requried对应的国际化信息 --><message key="name.requried"/></field-validator><!-- 指定name属性必须匹配正则表达式 --><field-validator type="regex"><param name="regex"><![CDATA[(\w{4,25})]]></param><!-- 如果校验失败,输出name.regex对应的国际化信息 --><message key="name.regex"/></field-validator></field><!-- 校验user的pass属性 --><field name="pass"><!-- 指定pass属性必须满足必填规则 --><field-validator type="requiredstring"><param name="trim">true</param><!-- 如果校验失败,输出pass.requried对应的国际化信息 --><message key="pass.requried"/></field-validator><!-- 指定pass属性必须满足匹配指定的正则表达式 --><field-validator type="regex"><param name="regex"><![CDATA[(\w{4,25})]]></param><!-- 如果校验失败,输出pass.regex对应的国际化信息 --><message key="pass.regex"/></field-validator></field><!-- 指定user的age属性必须在指定范围内--><field name="age"><field-validator type="int"><param name="min">1</param><param name="max">150</param><!-- 如果校验失败,输出age.range对应的国际化信息 --><message key="age.range"/></field-validator></field><!-- 指定user的birth属性必须在指定范围内--><field name="birth"><field-validator type="date"><!-- 下面指定日期字符串时,必须使用本Locale的日期格式 --><param name="min">1900-01-01</param><param name="max">2050-02-21</param><!-- 如果校验失败,输出birth.range对应的国际化信息 --><message key="birth.range"/></field-validator></field>
</validators>

六 action

package org.crazyit.app.action;import com.opensymphony.xwork2.ActionSupport;import org.crazyit.app.domain.*;public class RegistAction extends ActionSupport
{// 定义User类型的成员变量用于封装请求参数private User user;// user的setter和getter方法public void setUser(User user){this.user = user;}public User getUser(){return (this.user);}
}

七 RegistAction-validation.xml

<?xml version="1.0" encoding="GBK"?>
<!-- 指定校验规则文件的DTD信息 -->
<!DOCTYPE validators PUBLIC"-//Apache Struts//XWork Validator 1.0.3//EN""http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<!-- 校验规则文件的根元素 -->
<validators><!-- 指定校验user字段 --><field name="user"><!-- 使用visitor校验器 --><field-validator type="visitor"><!-- 指定校验规则文件的context --><param name="context">userContext</param><!-- 指定校验失败后提示信息是否添加下面前缀 --><param name="appendPrefix">true</param><!-- 指定校验失败的提示信息前缀 --><message>用户的:</message></field-validator></field>
</validators>

八 测试

Struts的vistor校验器相关推荐

  1. 使用 Struts2 校验器校验用户注册信息的例子

    转自:https://blog.csdn.net/jin2005006/article/details/53999562 基于验证框架的输入校验 一.创建一个struts2项目testValidato ...

  2. struts2校验框架之Visitor校验器

    Visitor校验器主要用于检测Action里的复合属性,如一个Action里面包含了User类型的属性. 假设User类包含了username和password属性,为了验证Action里User类 ...

  3. IDEA 中用 Struts2 框架实现注册登录校验器

    新建 Struts2 项目 new project -> Java Enterprise -> Struts2 新建好的项目目录如下: 然而我在运行时 Tomcat 报错说"on ...

  4. zend framework php编码规范,Zend Framework常用校验器详解

    本文实例讲述了Zend Framework常用校验器.分享给大家供大家参考,具体如下: Date日期校验器 代码:<?php require_once 'Zend/Validate/Date.p ...

  5. @SkipValidation跳过Struts2validation校验器

    在方法前加:@SkipValidation注解,该方法可以跳过validation校验器校验器 转载于:https://www.cnblogs.com/ITYOB/p/7475368.html

  6. 用Command实现校验器

    最近工作中遇到许多校验的数据,一直用if-else去校验很不灵活,于是用Command方式去实现 <?xml version="1.0" encoding="UTF ...

  7. 自定义的注解校验器的实现

    首先先学习一下注解,注解为我们在代码中添加信息提供了一种形式化的方法,使得我们在稍后的某个时刻可以方便地使用这些数据. 在日常的编码中我们一直都在使用注解,只是没有特别关注过,Java中内置了三种注解 ...

  8. 数据校验器架构模式组

    刘 岳林 (yuelin_liu@msn.com), 软件工程师 2007 年 1 月 15 日 本文阐述软件架构与设计模式,它为架构师和开发人员提供了一组关于数据校验的架构模式(隔离校验器,可组装校 ...

  9. python参数检验框架_python-wtforms框架如何自定义校验器的原理和方法总结

    细节请看注释,核心就是__call__函数的用法(def __call__(self,form, field)参数由继承的Form自动提供) from wtforms import Form, Str ...

最新文章

  1. DB2 9 使用拓荒(733 检讨)认证指南,第 2 部分: DB2 数据操作(6)
  2. 深度学习 Deep Learning with MATLAB(懒人版)
  3. Open XML应用安全(2)OLE机制
  4. Vim中数字自增、自减
  5. go语言及etcd环境搭建
  6. php 中标麒麟龙芯5.0,中标麒麟桌面操作系统软件
  7. HBase:HBase的rowKey设计技巧
  8. 电脑文件的后缀名不见了,如何显示隐藏扩展名?
  9. 程序员薪酬待遇大调查:学哪种语言的最赚钱?
  10. 朝代官制,6部是什么
  11. 响应式美容美发形象设计艺术教育学校网站织梦模板源码
  12. 计算机课件白板培训,交互式电子白板的使用培训(1)(2)ppt课件
  13. 老厉害了!2600亿,紫光集团南京再投半导体生产线
  14. IOC和Autofac简单说明
  15. x~N(0,4),F(x)为其分布函数,则F(x)
  16. BG22蓝牙——第三弹 蓝牙的一些入门知识,整理了大佬们的文章和链接
  17. 台阶的意思_台阶词语解释
  18. liblinear相关学习
  19. “我”Java程序员今年30岁,还有五年“寿命”所谓的中年危机?
  20. 论文笔记:How Can We Know What Language Models Know?

热门文章

  1. 2019年清华计算机系本校保研推免机考题目
  2. Qt 模型视图编程之表头设置
  3. 期货交易品种基本面分析(期货品种技术面分析)
  4. ceph存储 Ceph管理平台Calamari的架构与功能分析
  5. 来鑫干货解读:迅雷链到底有什么了不起?
  6. openGL参数曲面----二次贝塞尔曲线
  7. 基于TSUNG对MQTT进行压力测试-测试结果
  8. 零基础学kubernetes(k8s)必看教程,带你10分钟快速实战入门k8s
  9. 【时间序列】ICDE 2021丨时间序列相关研究论文汇总
  10. [Pytorch系列-42]:工具集 - torchvision常见预训练模型的下载地址