首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Struts2-Validate证验框架

2012-09-07 
Struts2-Validate验证框架?Struts2 -validate验证框架(客户端验证 及服务端验证)一、为什么要使用struts2的

Struts2-Validate验证框架

?

Struts2 -validate验证框架(客户端验证 及服务端验证)
一、为什么要使用struts2的validate验证框架

:使用struts2的验证框架,能够提高客户端提交的数据的安全性。通过验证,确保保存进数据库的信息是正确的

二、使用struts2的validate框架?

: 1.我们需要配置struts2项目的最基本的jar包。(validate验证框架是有"xwork-core"包提供的)

: 2.使用struts2自带的validate验证有两种方法

?

a):使用代码实现 验证功能 (也就是重写ActionSupport中的validate()方法)在validate方法中进行编写我们需

要的验证功能这里需要提几点的就是:

1.当我们需要对action中的某一个指定的方法使用validate()方法验证时我们需要自定义一个validate

2.当我们使用自定义的validate方法时,最好将重写的ActionSupport的validate方法去掉(这是为了避免

引起冲突,因为如果action类中存在重写的validate()方法 程序会自动调用我们自定义的validate方法 之

后再调用它这样就验证了多次,非常不利于程序的效率。而且容易出现冲突)

3.在创建自定义的validate方法时需要注意该方法的 方法名! 该方法名由 validate+对应的表单提交的

action中的执行方法名称(首字母大写)

附上一段代码:

struts.xml:<action name="*/*" method="test">       //这里的method指定action对象调用哪一个方法执行//..此处省略</action> 对应的action类中的片段:public String test(){//action操作的方法//..此处省略return "";}  public void validateTest()             //这是我们自定义的validate方法 (validateTest) 这便是方法名{  //一定要记住大写test的首字母//..此处省略}@overridePublic String execute()//这是重写ActionSupport的方法{//..此处省略return "";}@overridepublic void validate()//这是重写ActionSupport的方法  如果我们需要有        //execute方法并且还要对它接收的数据信息进行验证{         //那么我们可以将方法名改成 valiateExecute()便可以了//..此处省略       }

?? ? ? ?b):使用xml文件进行配置验证功能(建议使用xml配置文件进行validate的验证)

?

??: 1.需要使用到xwork-core包下的 ?xwork-validate.dtd(版本根据项目进行选择,不过大体相同)

: 2.关于使用Xml进行验证 的两种情况: 全局验证 和局部验证

a):关于全局验证

全局就是针对整个action对象进行xml验证

当我们使用全局验证时候需要在 ?action对象的同目录下创建一个xml配置文件

文件名是由 : action对象的名称+(-validation.xml)

b):关于局部验证

局部验证是针对action对象中的某一个方法进行xml验证

使用局部验证的时候同样要在 action对象的同目录下创建一个xml配置文件

不过使用局部验证需要在struts.xml 中进行配置

代码如下:(struts.xml)

<constant name="struts.enable.DynamicMethodInvocation" value="false" /><package name="struts2" extends="struts-default">//这一个<action>主要针对整个action对象<action name="register"name="code">下面给出一个实例:action对象:        package org.svse.action;import java.util.Date;import com.opensymphony.xwork2.ActionSupport;public class RegisterAction extends ActionSupport {private String username;private String password;private String repassword;private int age;private Date birthday;private String users;public String getUsers() {return users;}public void setUsers(String users) {this.users = users;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getRepassword() {return repassword;}public void setRepassword(String repassword) {this.repassword = repassword;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public Date getBirthday() {return birthday;}public void setBirthday(Date birthday) {this.birthday = birthday;}@Overridepublic String execute() throws Exception {// TODO Auto-generated method stubreturn super.execute();}// 自定义的执行方法public String test() throws Exception {System.out.println("test method invoked!");// TODO Auto-generated method stubreturn super.execute();}// 自定义的校验方法public void validateTest() {System.out.println("validateTest method invoked!");} @Overridepublic void validate() {System.out.println("validate method invoked!"); if (null == this.getPassword()|| "".equals(this.getPassword()) || null ==                 this.getRepassword() || "".equals(this.getRepassword())) { return;        } if (!this.getPassword().equals(this.getRepassword())) { this.addFieldError("repassword", "repassword should be same password"); } }}
?struts.xml的信息:
<struts><constant name="struts.enable.DynamicMethodInvocation" value="false" /><package name="struts2" extends="struts-default"><action name="register" name="code"><validators><field name="username"> //指明是对哪一个属性进行验证     <field-validator type="requiredstring"> //验证的类型     <param name="trim">true</param>     <message>username should be notblank!</message>              //如果错误显示给客户端的信息</field-validator><field-validator type="stringlength"><param name="minLength">6</param><param name="maxLength">10</param><message>username should be not between${minLength} and ${maxLength}</message></field-validator></field><field name="age"><field-validator type="required"><message>age should be not blank!</message></field-validator><field-validator type="int"><param name="min">1</param><param name="max">150</param><message>age should be between ${min} and ${max}</message></field-validator></field><field name="birthday"><field-validator type="required"><message>birthday should be not blank!</message></field-validator><field-validator type="date"><param name="min">1990-10-10</param><param name="max">2011-3-14</param><message>birthday should be between ${min} and ${max} </message></field-validator></field></validators>

?全局validate框架的xml配置信息(RegisterAction-validation.xml)

<validators><field name="users"><field-validator type="requiredstring"><message>users should be not blank!</message></field-validator><field-validator type="stringlength"><param name="minLength">6</param><param name="maxLength">10</param><message>users should be between ${minLength} and ${maxLength}</message>       </field-validator></field></validators>

?view 界面的jsp信息:?

register.jsp:<body style="text-align: center"><s:form action="register_test">//服务端验证<s:textfield name="username" id="username" label="username"></s:textfield><s:password name="password" id="password" label="password"></s:password><s:password name="repassword" id="repassword" label="repassword"></s:password><s:textfield name="age" id="age" label="age"></s:textfield><s:textfield name="birthday" id="birthday" label="birthday"></s:textfield><s:submit></s:submit><s:reset></s:reset></s:form><s:form action="register" validate="true">//客户端验证  validate="true"(关键点)<s:textfield name="users" label="users" id="users"></s:textfield><s:submit></s:submit></s:form></body>

?show.jsp:

<body><s:property value="username"/><s:property value="password"/><s:property value="age"/><s:property value="birthday"/><s:property value="users"/></body>

?这里说明一下 validate xml验证的规则

<field name=""></field> ?//自动校验器<validator type=""></validator>//非自动校验器验证规则:requiredstring ?验证是属性是否为("") ? 不需要设置参数required ? 验证是属性是否为(null) 不需要设置参数int ?验证属性是否为整数 可以这是在什么数之间 需要参数 (min,max)stringlength ? ? 验证字符串的长度 ? 可以设置字符串需要的长度 需要参数(minLength,maxLength)date验证对象是否在某时段 ?可以设置时间段 需要参数(min,max)regex使用正则验证其他具体可以参看xwork-core包中的com.opensymphony.xwork2.validator.validators 下面的类以及xwork-default.xml

热点排行