`

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 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    struts2学习笔记.doc

    - **框架原理**:Struts2提供了强大的输入校验功能,可以自动检查用户提交的数据是否符合预期。 - **配置方式**: - 使用注解方式(适用于Struts2较新版本)。 - 在`struts.xml`或Action类中通过配置文件的方式...

    struts-2.3.25-all.zip part1

    标题中的"struts-2.3.25-all.zip part1"表明这是一个包含Struts 2框架版本2.3.25所有组件的压缩文件的第一部分。这个版本可能是为了帮助开发者避免已知的Struts 2漏洞,确保应用程序的安全性。 Struts 2的核心组件...

    Struts_2.0从入门到精通

    六、Struts2.0中的数据校验机制 数据校验是Web应用中保障数据质量的关键环节。Struts2.0提供了一套强大的校验框架,支持多种校验规则的定义和执行。开发者可以通过在配置文件或注解中指定校验规则,实现对表单数据...

    struts学习笔记

    Struts2 学习笔记-part2: 实现用户登录功能 在上一部分中,我们了解了构建一个基于Struts2的Java Web项目所需的基本...在实际开发中,还可以利用Struts2的拦截器、国际化、数据校验等特性来增强应用的功能和用户体验。

    struts2上传文件,个人资料勿下

    Struts2是一个非常流行的Java Web框架,用于构建和维护可扩展且易于管理的企业级应用程序。在Struts2中,文件上传功能是常见的需求,比如用户可能需要上传个人资料中的图片或文档。本篇文章将深入探讨Struts2如何...

    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容器...

    Struts+swfupload实现文件上传功能

    2. **创建Struts Action**:在Struts框架中,我们需要创建一个Action类来处理文件上传请求。这个Action需要实现文件接收和保存的功能。在Struts配置文件(struts.xml)中,为该Action定义一个对应的URL映射。 3. **...

    轻量级J2EE企业应用实战(part 3)共分5个part

    #### 知识点三:数据校验方法 - **ActionForm校验**:Struts中使用ActionForm来封装表单数据,并可以在其中定义验证规则。然而,随着框架的发展,ActionErrors和ActionError类已被标记为过时,因此建议采用其他方式...

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

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

    java文件上传、下载

    Struts提供了处理用户请求、数据校验、业务逻辑与视图分离等功能,简化了Web应用的开发。 2. **Ajax(异步JavaScript和XML)**:Ajax不是一种单一的技术,而是一种使用一系列技术组合来创建更快速、响应更快的Web...

    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的工作原理、核心文件、核心接口及相关插件的使用方法。...

    SpringMVC4教程-超权威--超详细

    - **数据校验**:SpringMVC提供了强大的数据验证机制,可以通过@Validated注解结合JSR303/JSR349标准来实现自动数据校验。 #### 十、处理JSON:使用HttpMessageConverter - **JSON处理**:使用...

    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...

Global site tag (gtag.js) - Google Analytics