您的位置:首页 > 编程语言 > Java开发

Struts2中请求参数校验

2015-05-31 16:37 537 查看
在Struts2中,请求参数的校验要放在服务端进行。其实我们在做.NET的项目时,使用过EasyUI,EasyUI有各种校验机制,那会是在客服端就直接对输入参数进行了校验。但是我们的Struts框架也是蛮强大的,它本身就给我们提供了非常详细的校验机制。



1.手动校验

使用手动校验,需要一下这么几个条件:

①你的Action要继承ActionSupport接口;

②重写validate接口,如果属性有问题,通过addFieldError(String,String)方法存储错误信息.

③如果向fieldError中存储了错误信息,workflow拦截器就会跳转到input视图.

④在input视图上通过<s:fielderror>来显示错误信息.可以通过 <s;fielderror fieldName="">

代码展示:

package cn.tgb.action;

import cn.tgb.model.People;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;

public class PeopleAction01 extends ActionSupport implements ModelDriven<People>{
	private People people = new People();
	@Override
	public People getModel() {
		return people;
	}	
	
	public String register(){
		System.out.println(people.getUsername()+"注册成功了~");
		return null;
	}
	
	public String longin(){
		System.out.println(people.getUsername()+"登陆成功了~");
		return null;
	}
	
	//重写ActionSupport中的validate方法
	@Override
	public void validate() {
		System.out.println("参数校验");
	}
	
	public void validateRegedit(){
		System.out.println("注册方法参数校验");
	}
	
	public void validateLogin(){
		System.out.println("注册方法参数校验");
	}	
}


2.配置校验

使用配置校验,需要满足下面的条件:

①你的Action要继承ActionSupport接口;

②创建一个xml文件来校验,这个xml文件要和Action在同一个包下,命名ActionClassName_validation.xml;如果一个Action中有多个方法,如果我们要针对该方法进行校验的话,将xml文件命名为ActionClassName-actionName-validation.xml即可。

③在xml文件中配置校验。

代码展示:

加入我们对PropelAction中的register()方法进行校验,xml文件的命名为:PeopleAction-register-validation.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>用户名不能为空!</message>
		</field-validator>
		<!-- 校验用户名长度必须在6-10位之间 -->
		<field-validator type="stringlength">
			<param name="maxLength">10</param>
			<param name="minLength">6</param>
			<message>用户名必须在${minLength}-${maxLength}位之间</message>
		</field-validator>
	</field>

	<!-- 校验age属性必须在10-80之间 -->
	<field name="age">
		<field-validator type="int">
			<param name="min">10</param>
			<param name="max">80</param>
			<message>年龄必须在${min}-${max}之间</message>
		</field-validator>
	</field>

	<!-- 校验生日范围 -->
	<field name="birthday">
		<field-validator type="date">
			<param name="max">2004-12-31</param>
			<param name="min">1934-01-01</param>
			<message>生日必须在 1934年01月01日到2004年12月31日之间</message>
		</field-validator>
	</field>

	<!-- 校验邮箱 -->
	<field name="email">
		<field-validator type="email">
			<message>邮箱格式化不正确</message>
		</field-validator>
	</field>

	<!-- 主页校验 -->
	<field name="myurl">
		<field-validator type="url">
			<message>格式不正确</message>
		</field-validator>
	</field>

	<!-- 对telphone信息使用正则校验 -->
	<field name="telphone">
		<field-validator type="regex">
			<param name="regexExpression"><![CDATA[^139\d{8}$]]></param>
			<message>格式不正确,必须是139开始</message>
		</field-validator>
	</field>

	<field name="repassword">
		<field-validator type="fieldexpression">
			<param name="expression"><![CDATA[(password==repassword)]]></param>
			<message>两次密码输入不一致</message>
		</field-validator>
	</field>
</validators>


总结:在struts学习的这块,一定要和前面学习的ASP.NET MVC结合起来,这样对理论的理解和比较快;在一个就是要多多动手实践,很多时候看视频中的代码逻辑很简单,但是让自己敲却不一定敲的出来。而且敲代码的也可以加深自己的知识点的理解,实现代码也会提高自己的兴趣和自信心,何乐而不为呢?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: