`

Struts2 part6:数据校验

 
阅读更多

 

1、代码校验

jsp

<%@ taglib uri="/struts-tags"  prefix="s" %>
<s:fielderror></s:fielderror>
<form action="${pageContext.request.contextPath }/demo06/validata1">
	用户名<input type="text" name="username"/><br/>
	密码<input type="password"  name="password"/><br/>
	<input type="submit" name="提交"/>
</form>

Action,多有提交到ValidateAction1的数据都需要validate()函数校验,要想单独对某个方法校验使用validateXxx()对其特定请求校验,请求先经过validateXxx()在经过validate(),通过addFieldError设置校验的回显信息

public class ValidateAction1 extends ActionSupport {
	private String username;
	private String password;
	
	@Override
	public void validate() {
		System.out.println("validate()");
		if(username==null || "".equals(username)){
			this.addFieldError("username", "用户名不能为空");
		}
		if(password==null || "".equals(password)){
			this.addFieldError("password", "密码不能为空");
		}
	}
	public void validateAdd(){
		System.out.println("validateAdd");
		if(username!=null || (username.length()>0 && username.length()<5)){
			this.addFieldError("username", "长度在0~5之间");
		}
	}
	public String add() throws Exception {
		System.out.println(username+"--"+password);
		return NONE;
	}
	
	@Override
	public String execute() throws Exception {
		System.out.println(username+"--"+password);
		return NONE;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public void setPassword(String password) {
		this.password = password;
	}

}

 strtus配置

<package name="demo06" namespace="/demo06" extends="struts-default">
		<action name="validata1" class="demo06.ValidateAction1">
			<result name="input">/demo06/validate1.jsp</result>
		</action>
	</package>

 

 2、XML配置校验

 jsp

<%@ taglib uri="/struts-tags"  prefix="s" %>
<s:fielderror></s:fielderror>
<form action="${pageContext.request.contextPath }/demo06/validata2.action">
	用户名<input type="text" name="username"/><br/>
	密码<input type="password"  name="password"/><br/>
	<input type="submit" name="提交"/>
</form>

 action,要使用xml校验,必须为属性提供setter()

public class ValidateAction2 extends ActionSupport {
	private String username;
	private String password;

	@Override
	public String execute() throws Exception {
		System.out.println(username + "--" + password);
		return NONE;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getUsername() {
		return this.username;
	}

	public String getPassword() {
		return this.password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

}

 编写validate配置文件ValidateAction2-validation.xml,Action类名--validation.xml,dtd在xwork-core-2.3.4.jar//xwork-validator-1.0.3.dtd中,可配置的内置校验器在com.opensymphony.xwork2.validator.validators//com/opensymphony/xwork2/validator/validators/default.xml中

 

<?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><![CDATA[用户名不能为空]]></message>
		</field-validator>
	</field>
	<field name="password">
		<field-validator type="stringlength">
			<param name="maxLength">7</param>
			<param name="minLength">3</param>
			<message><![CDATA[密码长度3~7位]]></message>
		</field-validator>
	</field>
</validators>

 

struts配置

 

	<action name="validata2" class="demo06.ValidateAction2">
			<result name="input">/demo06/validate2.jsp</result>
		</action>

 可配置的校验器

required (必填校验器,要求被校验的属性值不能为null)

requiredstring (必填字符串校验器,要求被校验的属性值不能为null,并且长度大于0,默认情况下会对字符串去前后空格)

stringlength(字符串长度校验器,要求被校验的属性值必须在指定的范围内,否则校验失败,minLength参数指定最小长度,maxLength参数指定最大长度,trim参数指定校验field之前是否去除字符串前后的空格)

regex(正则表达式校验器,检查被校验的属性值是否匹配一个正则表达式,expression参数指定正则表达式,caseSensitive参数指定进行正则表达式匹配时,是否区分大小写,默认值为true)

int(整数校验器,要求field的整数值必须在指定范围内,min指定最小值,max指定最大值)

double(双精度浮点数校验器,要求field的双精度浮点数必须在指定范围内,min指定最小值,max指定最大值)

fieldexpression(字段OGNL表达式校验器,要求field满足一个ognl表达式,expression参数指定ognl表达式,该逻辑表达式基于ValueStack进行求值,返回true时校验通过,否则不通过)

email(邮件地址校验器,要求如果被校验的属性值非空,则必须是合法的邮件地址)

url(网址校验器,要求如果被校验的属性值非空,则必须是合法的url地址)

date(日期校验器,要求field的日期值必须在指定范围内,min指定最小值,max指定最大值)

conversion(转换校验器,指定在类型转换失败时,提示的错误信息)

visitor(用于校验action中复合类型的属性,它指定一个校验文件用于校验复合类型属性中的属性)

 expression(OGNL表达式校验器,它是一个非字段校验器, expression参数指定ognl表达式,该逻辑表达式基于ValueStack进行求值,返回true时校验通过,否则不通过,该校验器不可用在字段校验器风格的配置中)

 

<?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="name">
		<field-validator type="requiredstring">
			<message>客户姓名不能为空!</message>
		</field-validator>
	</field>
	<field name="password">
		<field-validator type="requiredstring">
			<message>密码不能为空!</message>
		</field-validator>
		<field-validator type="stringlength">
			<param name="minLength">6</param>
			<message>密码长度不能小于6位</message>
		</field-validator>
	</field>
	<field name="repassword">
		<field-validator type="fieldexpression">
			<param name="expression">
				<![CDATA[(password==repassword)]]>
			</param>
			<message>两次密码输入不一致</message>
		</field-validator>
	</field>
	<field name="age">
		<field-validator type="int">
			<param name="min">18</param>
			<param name="max">70</param>
			<message>客户年龄必须在18到70之间</message>
		</field-validator>
	</field>
	<field name="birthday">
		<field-validator type="date">
			<param name="min">1980-10-10</param>
			<param name="max">2050-10-10</param>
			<message>生日必须在指定范围!</message>
		</field-validator>
	</field>
	<field name="phone">
		<field-validator type="regex">
			<param name="expression">
				<![CDATA[^18\d{9}$]]>
			</param>
			<message>手机号必须18开头!</message>
		</field-validator>
	</field>
	<field name="email">
		<field-validator type="email">
			<message>邮箱格式非法!</message>
		</field-validator>
	</field>
</validators>  		

 

针对于特定方法的校验

Action类名-ActionName(<action>元素name属性)-validation.xml 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Java高手真经_应用框架卷_Java_Web核心框架.part1.rar

     表现层框架struts 2:讲解struts 2的入门配置、核心组件、标签库、国际化、数据校验、转换器、拦截器,并分别实现与hibernate、ibatis持久层框架的集成开发。  业务层框架spring:讲解spring的入门配置与ioc容器...

    Java高手真经_应用框架卷_Java_Web核心框架.part2.rar

     表现层框架struts 2:讲解struts 2的入门配置、核心组件、标签库、国际化、数据校验、转换器、拦截器,并分别实现与hibernate、ibatis持久层框架的集成开发。  业务层框架spring:讲解spring的入门配置与ioc容器...

    Java高手真经_应用框架卷_Java_Web核心框架.part3.rar

     表现层框架struts 2:讲解struts 2的入门配置、核心组件、标签库、国际化、数据校验、转换器、拦截器,并分别实现与hibernate、ibatis持久层框架的集成开发。  业务层框架spring:讲解spring的入门配置与ioc容器...

    Java Web 整合开发和项目实践(SSH) 高清.part1

    第2篇为表现层框架Struts技术,介绍了Struts2的工作原理、核心文件、数据校验与国际化、标签库、拦截器等。第3篇为持久层框架Hibernate技术,介绍了Hibernate的工作原理、核心文件、核心接口及相关插件的使用方法。...

    Java Web 整合开发和项目实践(SSH).part3

    第2篇为表现层框架Struts技术,介绍了Struts2的工作原理、核心文件、数据校验与国际化、标签库、拦截器等。第3篇为持久层框架Hibernate技术,介绍了Hibernate的工作原理、核心文件、核心接口及相关插件的使用方法。...

    Java Web 整合开发和项目实践(SSH).part4

    第2篇为表现层框架Struts技术,介绍了Struts2的工作原理、核心文件、数据校验与国际化、标签库、拦截器等。第3篇为持久层框架Hibernate技术,介绍了Hibernate的工作原理、核心文件、核心接口及相关插件的使用方法。...

    Spring攻略(第二版 中文高清版).part2

    第6章 将Spring与其他Web框架集成 209 6.1 在一般Web应用中访问Spring 209 6.1.1 问题 209 6.1.2 解决方案 210 6.1.3 工作原理 210 6.2 在你的Servlet和过滤器中使用Spring 214 6.2.1 问题 214 6.2.2...

    Spring攻略(第二版 中文高清版).part1

    第6章 将Spring与其他Web框架集成 209 6.1 在一般Web应用中访问Spring 209 6.1.1 问题 209 6.1.2 解决方案 210 6.1.3 工作原理 210 6.2 在你的Servlet和过滤器中使用Spring 214 6.2.1 问题 214 6.2.2...

    Spring-Reference_zh_CN(Spring中文参考手册)

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建的...

    Spring中文帮助文档

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    Spring API

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    千方百计笔试题大全

    6、short s1 = 1; s1 = s1 + 1;有什么错? 8 7、Java 有没有goto? 8 8、int 和Integer 有什么区别? 9 9、&和&&的区别? 9 10、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别? 9 11、heap 和stack 有什么区别? 9 12、...

    Spring 2.0 开发参考手册

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    spring chm文档

    5. 校验,数据绑定,BeanWrapper,与属性编辑器 5.1. 简介 5.2. 使用Spring的Validator接口进行校验 5.3. 从错误代码到错误信息 5.4. Bean处理和BeanWrapper 5.4.1. 设置和获取属性值以及嵌套属性 5.4.2. 内建...

    java面试宝典

    6、short s1 = 1; s1 = s1 + 1;有什么错? 8 7、Java 有没有goto? 8 8、int 和Integer 有什么区别? 9 9、&和&&的区别? 9 10、简述逻辑操作(&,|,^)与条件操作(&&,||)的区别? 9 11、heap 和stack 有什么区别? 9 12、...

Global site tag (gtag.js) - Google Analytics