首页 > 学院 > 开发设计 > 正文

SSH学习之Struts2中的校验

2019-11-06 07:07:12
字体:
来源:转载
供稿:网友

回忆

在上一篇SSH学习之Struts2获取表单数据中具体介绍了Struts2框架中自带的两种获取表单数据的方式:属性封装和模型驱动。在这一篇中就介绍与其相关的功能:数据的校验。数据的校验基本上有前台数据校验和后台数据校验,在这里只介绍Struts2提供的两种校验数据的方式:编码实现和配置文件校验。两者都是针对后台数据的校验,前台数据校验不介绍。

编码实现

Action中一般都会继承ActionSupport类,只有继承了这个类的Action才具有校验的功能。校验的功能就放在validate()方法中。但是这是针对Action中所有请求都会进行校验的,也就是说这个Action中的所有业务方法执行之前都会调用validate()方法,这就显得多余。所以Struts2又有了针对性的校验方法validateXxx(),Xxx是针对的方法名,首字母大写。(ActionSupport实现了校验器的接口)校验数据的结果信息如何在前台页面显示?addActionError(错误信息)、addFieldError(键,错误信息),然后通过Struts标签显示。<s:fielderror><s:param>username</s:param></s:fielderror>、<s:actionerror />。一定在Struts配置文件中添加逻辑结果为input的标签和页面
public class TestModelAction extends ActionSupport implements ModelDriven<User> {	PRivate User user = new User();	@Override	public User getModel() {		// TODO Auto-generated method stub		return user;	}		public String execute() throws Exception {		System.out.println(user.getUsername() + "," + user.getPassWord());		return "success";	}			public void validate() {		System.out.println("validate.......");	}		public void validateExecute() {		System.out.println("validateExecute");	}}执行的顺序:getModel——validateExecute——validate——execute。

配置文件校验

为了减轻Action的负担,Struts2框架提供了一种更方便更有效更常用的方式:xml检验。一定在Struts配置文件中添加逻辑结果为input的标签和页面。

*命名有要求:Action类名-validation.xml是校验所有方法,Action类名-请求路径-validation.xml是校验某一个方法的。

*存放位置有要求:必须存放在Action同一个包下。

举个例子:UserAction-user_register.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">			<param name="trim">true</param>			<message>用户名不能为空!</message>		</field-validator>		<field-validator type="stringlength">			<param name="minLength">6</param>			<param name="maxLength">12</param>			<message>用户长度必须介于${minLength}-${maxLength}之间</message>		</field-validator>	</field>		<!-- 校验密码 -->	<field name="password">		<field-validator type="requiredstring">			<param name="trim">true</param>			<message>密码不能为空!</message>		</field-validator>		<field-validator type="regex">			<param name="expression"><![CDATA[^[A-Za-z0-9]+$]]></param>			<message>密码格式不正确,必须是字母和数字的组合</message>		</field-validator>	</field>	<!-- 校验姓名 -->	<field name="name">		<field-validator type="requiredstring">			<param name="trim">true</param>			<message>姓名不能为空!</message>		</field-validator>	</field>		<!-- 校验地址 -->	<field name="addr">		<field-validator type="requiredstring">			<param name="trim">true</param>			<message>地址不能为空!</message>		</field-validator>	</field>			<!-- 校验电话 -->	<field name="addr">		<field-validator type="requiredstring">			<param name="trim">true</param>			<message>手机号不能为空</message>		</field-validator>		<field-validator type="regex">			<!-- 或者:<![CDATA[^1[358]/d{9}$]]> -->			<param name="regex">^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))//d{8}$</param>			<message>手机号码格式错误</message>		</field-validator>	</field>			<!-- 校验邮箱 -->	<field name="email">		<field-validator type="email">			<message>邮箱格式不正确!</message>		</field-validator>	</field>	</validators>这些校验器应该是最常用的了。

最后

校验方法最常用的还是xml校验,如果可以的话这些校验的方式最好收集起来,因为基本上是记不住的。这是我的一些理解,请多多见谅奋斗


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表