struts2在学习(十)--表单验证的两种方式

1. Struts2中的输入校验

2. 编码方式校验
  1) Action一定要继承自ActionSupport
  2) 针对某个要进行校验的请求处理方法编写一个 public void validateXxx()方法,在方法内部进行表单数据校验.
  3) 也可针对所有的请求处理方法编写public void validate()方法。
  4) 在校验方法中,可以通过addFieldError()方法来添加字段校验错误消息。
  5) 当校验失败时,Struts框架会自动跳转到name为input的Result页面。在校验失败页面中,可以使用来显示错误消息
  6) 简单,灵活。但重用性不高。
 
3. XML配置方式校验。在编码方式之前被执行。
  1) 针对要校验的Action类,在同包下编写一个名为:Action类名-validation.xml校验规则文件。
  2) 在校验规则文件中添加校验规则:具体的校验器名,参数可参看Struts2的reference或Struts2的API。
     a) Field校验:针对Action类中每个非自定义类型的Field进行校验的规则。
   
    
        
            校验失败时的提示消息
 

 
 

 
     b) 非Field校验:针对Action类的某些Field使用OGNL表达进行组合校验。
   
  pwd
     pwd2
    
     确认密码和密码输入不一致
 

 
     c) visitor校验:主要是用来校验Action类中的自定义类型Field。(针对使用模型驱动方式时)
       i) 在Action类的的校验规则文件中针对自定义类型Field使用visitor校验规则。
   
 
 
            用户的信息必填
 

 
   userContext
            true
            用户的
 

 

    ii) 针对visitor的Field编写一个校验规则文件.文件名为: visitor字段类型名[-visitor校验的上下文名]-validation.xml. 例如: 本例中的文件名为User-userContext-validation.xml
                  注意: 此文件要存放到visitor字段类型所在的包下.
    iii) 在visitor的Field校验规则文件中针对要校验的Field添加校验规则.
   3) 在校验失败页面(名为input的result页面)中,可以使用来显示错误消息。
   4) 默认情况下,XML的校验规则对Action中所有的请求处理方法生效.此时应该只针对每个要校验的请求处理方法指定校验。有两种方式:
      i) 只为Action中的指定方法指定校验规则文件,配置文件命名为:Action类型名-别名-validation.xml,
                      别名是要校验的方法对应的Action标签的name属性值。
                      如:UserAction在struts2.xml的配置为:
   
 
   /info.jsp
   /user_{1}.jsp
 

   
             
                ● UserAction中有registe方法和login方法,要对registe方法进行校验,则它的校验规则文件名为:UserAction-user_registe-validation.xml。
                 ● 如果使用visitor校验器,必需指定visitor校验的上下文名。
      ii) 在校验拦截器中指定要验证的方法。不太实用。
  
    /info.jsp
    /user_{1}.jsp
    
       
        *
       
        regist
     

  

   5) 同时使用客户端校验和服务器端校验
      i) 设置标签的validate属性:
         false:默认值。校验框架只执行服务器端校验。
         true:先执行客户端校验,然后再执行服务器端校验。
         form标签会根据你在服务器端配置的验证规则生成对应的JavaScript验证代码。
                      目前支持的内置校验器:required、requiredstring、stringlength、regex validator、email、url、int、double
      ii) 不太好用,不建议使用。建议使用jQuery进行页面表单校验。
   6) 自定义校验器:
      i) 继承自FieldValidatorSupport抽象类。重写validate(Object obj)方法
      ii) 注册校验器类. 在应用程序的classpath下新建一校验器注册文件。名为validators.xml,内容如下:

        "-//OpenSymphony Group//XWork Validator Config 1.0//EN"
        "http://www.opensymphony.com/xwork/xwork-validator-config-1.0.dtd">

 


4. Annotation方式校验: Struts2提供了注解的方式校验
  1) @Validation 指明这个类或者接口将使用基于注解的校验。Struts2.1中已被标识为过时。
  2) @Validations() 在同一个方法上要使用多个注解校验时。
  3) @SkipValidation 指定某个方法不需要校验。否则所有方法都会使用校验。也可以在检验拦截器中使用validateAnnotatedMethodOnly
  4) 13个内置校验器的注解版本:(注:这些注解都只能用在方法级别上) 具体参数参见Struts2的API或Reference。
@RequiredFieldValidator
@RequiredStringValidator
@StringLengthFieldValidator
@IntRangeFieldValidator
@DoubleRangeFieldValidator
@DateRangeFieldValidator
@ExpressionValidator
@FieldExpressionValidator
@RegexFieldValidator
@EmailValidator
@UrlValidator
@VisitorFieldValidator
@ConversionErrorFieldValidator


 

 

第一个示例:XML配置式校验器---注册页面


第一个示例:XML配置式校验器---注册页面
acc_registe.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
    <%@ taglib uri="/struts-tags" prefix="s" %>  
     
     
       
        Struts2中基于XML配置式的校验器使用示例  
       
       
   

XML配置式校验器---注册页面


 
      
   
 
   
 
         
             
                 
                 
             
             
                 
                 
             
             
                 
                 
             
             
                 
                 
             
             
                 
                 
             
             
                 
                 
             
             
                 
                 
             
             
                 
             
       
ID
登录名
密码
重复密码
时间
email
考试成绩
 
   
 
       
   

 src/struts.xml
 
            "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"  
        "http://struts.apache.org/dtds/struts-2.1.7.dtd">  
      
     
         
         
         
         
         
         
         
         
         
         
         
         
          
         
         
         
          
         
             
                /info.jsp  
                /acc_{1}.jsp  
           
 
              
       
 
          
   
 

AccountAction.java
package com.javacrazyer.web.action;  
      
    import java.util.Date;  
      
    import com.opensymphony.xwork2.ActionSupport;  
      
      
    public class AccountAction extends ActionSupport {  
        private static final long serialVersionUID = -1418893621512812472L;  
        private Integer id;  
        private String name;  
        private String pwd;  
        private String pwd2;  
        private Double score;  
        private Date registed_date;  
        private String email;  
          
        public String registe() throws Exception{  
            System.out.println("registe-------------------");  
            return SUCCESS;  
        }  
          
        public String login()throws Exception{  
            return SUCCESS;  
        }  
          
        public Integer getId() {  
            return id;  
        }  
        public void setId(Integer id) {  
            this.id = id;  
        }  
        public String getName() {  
            return name;  
        }  
        public void setName(String name) {  
            this.name = name;  
        }  
        public Double getScore() {  
            return score;  
        }  
        public void setScore(Double score) {  
            this.score = score;  
        }  
        public Date getRegisted_date() {  
            return registed_date;  
        }  
        public void setRegisted_date(Date registedDate) {  
            registed_date = registedDate;  
        }  
        public String getEmail() {  
            return email;  
        }  
        public void setEmail(String email) {  
            this.email = email;  
        }  
      
        public String getPwd() {  
            return pwd;  
        }  
      
        public void setPwd(String pwd) {  
            this.pwd = pwd;  
        }  
      
        public String getPwd2() {  
            return pwd2;  
        }  
      
        public void setPwd2(String pwd2) {  
            this.pwd2 = pwd2;  
        }  
    }

 AccountAction-validation.xml [与AccountAction同目录]
 
            "-//OpenSymphony Group//XWork Validator 1.0.2//EN"   
        "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">  
     
         
         
             
                ID必填的  
           
 
             
                20  
                50  
                ID必须在 ${min} 到 ${max} 之间  
           
 
       
 
         
             
                姓名是必填的  
           
 
             
                 
                姓名不合法  
           
 
       
 
         
             
                密码是必填的  
           
 
       
 
          
         
         
            pwd  
            pwd2  
             
            确认密码和密码输入不一致  
       
 
          
         
             
                 0.0  
                   100.0  
                   成绩必须在${minInclusive}和${maxInclusive}之间  
           
 
       
 
         
             
                  
                 邮箱不合法  
           
 
       
 
          
         
             
                 1970-01-01  
                 2019-01-01  
                 注册日期不合法  
           
 
       
 
   

你可能感兴趣的:(Struts2)