Struts2中请求参数校验

    在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结合起来,这样对理论的理解和比较快;在一个就是要多多动手实践,很多时候看视频中的代码逻辑很简单,但是让自己敲却不一定敲的出来。而且敲代码的也可以加深自己的知识点的理解,实现代码也会提高自己的兴趣和自信心,何乐而不为呢?


    

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值