成都网站建设设计

将想法与焦点和您一起共享

struts2:字段校验和非字段校验代码示例-创新互联

一、为什么要使用struts2的validate验证框架

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

创新互联建站2013年至今,是专业互联网技术服务公司,拥有项目成都网站设计、网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元仁化做网站,已为上家服务,为仁化各地企业和个人服务,联系电话:028-86922220

二、使用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中的 执行方法名称(首字母大写)

附上一段代码:

Java代码  
  1. struts.xml:
  2.       //这里的method指定action对象调用哪一个方法执行
  3.             //..此处省略
  4. 对应的action类中的片段:
  5. public String test(){//action操作的方法
  6.         //..此处省略
  7.     return "";
  8.     }
  9. public void validateTest()
  10.             //这是我们自定义的validate方法 (validateTest) 这便是方法名
  11. {             //一定要记住大写test的首字母
  12.         //..此处省略
  13. }
  14. @override
  15. Public String execute()//这是重写ActionSupport的方法
  16.     {
  17.         //..此处省略
  18.         return "";
  19. }
  20. @override
  21. public void validate()//这是重写ActionSupport的方法  如果我们需要有
  22.        //execute方法并且还要对它接收的数据信息进行验证
  23. {
  24.         //那么我们可以将方法名改成 valiateExecute()便可以了
  25. //..此处省略
  26.       }

     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)

Java代码  
  1.                 //这一个主要针对整个action对象
  2.     
  3.         /show.jsp
  4.          /register.jsp
  5.     
  6.     //这个主要针对action的某一个方法 (采用了通配符 * 与 {1} 的值是相同的)
  7.         
  8.         /show.jsp
  9.          /register.jsp
  10.     

 //如果我们需要访问action类中的test方法 则表单上可以这样写

所以该validate框架的xml配置文件名就是:action对象名+(-register_test-validation.properties)

:3.使用struts2的validate框架有两种验证类型

a):在服务端进行验证。 b):在客户端进行验证。 : 1.如果需要使用validate框架在客户端进行验证的话,一定要使用 struts2 的s标签 并且 表单的theme不能为:simple   Java代码  
  1. 下面给出一个实例:
  2.     action对象:
  3.    package org.viancent.action;
  4.     import java.util.Date;
  5.     import com.opensymphony.xwork2.ActionSupport;
  6.     public class RegisterAction extends ActionSupport {
  7.         private String username;
  8.         private String password;
  9.         private String repassword;
  10.         private int age;
  11.         private Date birthday;
  12.         private String users;
  13.         public String getUsers() {
  14.             return users;
  15.         }
  16.         public void setUsers(String users) {
  17.             this.users = users;
  18.         }
  19.         public String getUsername() {
  20.             return username;
  21.         }
  22.         public void setUsername(String username) {
  23.             this.username = username;
  24.         }
  25.         public String getPassword() {
  26.             return password;
  27.         }
  28.         public void setPassword(String password) {
  29.             this.password = password;
  30.         }
  31.         public String getRepassword() {
  32.             return repassword;
  33.         }
  34.         public void setRepassword(String repassword) {
  35.             this.repassword = repassword;
  36.         }
  37.         public int getAge() {
  38.             return age;
  39.         }
  40.         public void setAge(int age) {
  41.             this.age = age;
  42.         }
  43.         public Date getBirthday() {
  44.             return birthday;
  45.         }
  46.         public void setBirthday(Date birthday) {
  47.             this.birthday = birthday;
  48.         }
  49.         @Override
  50.         public String execute() throws Exception {
  51.             // TODO Auto-generated method stub
  52.             return super.execute();
  53.         }
  54.         // 自定义的执行方法
  55.         public String test() throws Exception {
  56.             System.out.println("test method invoked!");
  57.             // TODO Auto-generated method stub
  58.             return super.execute();
  59.         }
  60.         // 自定义的校验方法
  61.         public void validateTest() {
  62.             System.out.println("validateTest method invoked!");
  63.         }
  64.          @Override
  65.         public void validate() {
  66.         System.out.println("validate method invoked!");
  67.          if (null == this.getPassword()
  68.         || "".equals(this.getPassword()) || null ==
  69.                 this.getRepassword()
  70.          || "".equals(this.getRepassword())) {
  71.          return;
  72.             }
  73.          if (!this.getPassword().equals(this.getRepassword())) {
  74.          this.addFieldError("repassword",
  75.          "repassword should be same password");
  76.          }
  77.          }
  78.     }
 struts.xml的信息: Java代码  
  1.     
  2.     /show.jsp
  3.      /register.jsp
  4.                         method="{1}">
  5.     /show.jsp
  6.      /register.jsp

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

Java代码  
  1.      //指明是对哪一个属性进行验证
  2.           //验证的类型
  3.          true
  4.          username should be notblank!
  5.               //如果错误显示给客户端的信息
  6.     
  7.     
  8.         6
  9.         10
  10.         username should be not between${minLength} and ${maxLength}
  11.     
  12.     
  13.     
  14.         
  15.         age should be not blank!
  16.         
  17.         
  18.         1
  19.         150
  20.         age should be between ${min} and ${max}
  21.         
  22.     
  23.     
  24.         
  25.         birthday should be not blank!
  26.         
  27.         
  28.         1990-10-10
  29.         2011-3-14
  30.         birthday should be between ${min} and ${max} 
  31.                 
  32.     

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

Java代码  
  1.         
  2.             
  3.             users should be not blank!
  4.             
  5.             
  6.             6
  7.             10
  8.             users should be between ${minLength} and ${maxLength}
  9.                
  10.         

 view 界面的jsp信息:

Java代码  
  1.     register.jsp:
  2.     
  3.         //服务端验证
  4.         
  5.         
  6.         
  7.         
  8.         
  9.         
  10.         
  11.         //客户端验证  validate="true"(关键点)
  12.         
  13.         
  14.         
  15.     

 show.jsp:

Java代码  
  1.     
  2.     
  3.     
  4.     
  5.     

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

 //自动校验器 //非自动校验器 验证规则: requiredstring  验证是属性是否为("")  不需要设置参数 required    验证是属性是否为(null) 不需要设置参数 int  验证属性是否为整数 可以这是在什么数之间 需要参数 (min,max) stringlength   验证字符串的长度  可以设置字符串需要的长度 需要参数(minLength,maxLength) date 验证对象是否在某时段  可以设置时间段 需要参数(min,max) regex 使用正则验证   其他具体可以参看xwork-core包中的com.opensymphony.xwork2.validator.validators 下面的类以及 xwork-default.xml 做做笔记,传播知识,我是个勤劳的搬运工 1224144402@qq.com
文章名称:struts2:字段校验和非字段校验代码示例-创新互联
本文地址:http://chengdu.cdxwcx.cn/article/cdcgch.html