struts2 验证方式

struts2支持三种验证方式:

     1.使用Annotations验证

    2.基于XML配置的验证

    3.手动验证

 一个简单的例子

SimpleAnnotationAction.Java

package com.struts2.validation;
import org.apache.struts2.interceptor.validation.SkipValidation;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.validator.annotations.RequiredFieldValidator;
import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;
import com.opensymphony.xwork2.validator.annotations.Validations;
import com.opensymphony.xwork2.validator.annotations.ValidatorType;

@Validations(requiredStrings={
        @RequiredStringValidator(fieldName="userName",message="用户名不能为空!"),
        @RequiredStringValidator(fieldName="userName",message="密码不能为空!")
    }
)

publicclass SimpleAnnotationAction extends ActionSupport {
    private String userName;
    private String password;

    @Override
    @Validations(requiredFields={
            @RequiredFieldValidator(type=ValidatorType.SIMPLE,fieldName="userName",message="用户名不能为null!!")
        }
    )
    public String execute() throws Exception {
        returnsuper.execute();
    }

    /*运行:http://localhost:8080/struts2/validation/simpleAnnotationLogin.action
       结果:   用户名不能为空!
               密码不能为空!
               用户名不能为null!!
               密码不能为null!!
    */
    @Validations(requiredFields={
            @RequiredFieldValidator(type=ValidatorType.SIMPLE,fieldName="password",message="密码不能为null!!")
        }
    )
    public String login(){
        return"success";
    }

/*运行:http://localhost:8080/struts2/validation/simpleAnnotationLogin2.action
       结果:   用户名不能为空!
               密码不能为空!
               用户名不能为null!!
               密码不能为null!!
    */public String login2(){
        return"success";
    }

    /*运行:http://localhost:8080/struts2/validation/simpleAnnotationLogin2.action
      结果:页面发生跳转
    */
    @SkipValidation
    public String login3(){
        return"success";
    }

    /*运行:http://localhost:8080/struts2/validation/simpleAnnotationLogin2.action
      结果:页面发生跳转
    */public String login5(){
        return"success";
    }
    public String getUserName() {return userName;}
    publicvoid setUserName(String userName) {this.userName = userName;}
    public String getPassword() {return password;}
    publicvoid setPassword(String password) {this.password = password;}
}

struts.xml
 <package name="validation" namespace="/validation" extends="struts-default">
        <action name="simpleAnnotationLogin" class="com.struts2.validation.SimpleAnnotationAction" method="login">
            <result name="input">/SimpleAnnotation.jsp</result>
            <result name="success" type="redirect">/LoginSuccess.jsp</result>
        </action>
        <action name="simpleAnnotationLogin2" class="com.struts2.validation.SimpleAnnotationAction" method="login2">
            <result name="input">/SimpleAnnotation.jsp</result>
            <result name="success" type="redirect">/LoginSuccess.jsp</result>
        </action>

        <action name="simpleAnnotationLogin3" class="com.struts2.validation.SimpleAnnotationAction" method="login3">
            <result name="input">/SimpleAnnotation.jsp</result>
            <result name="success" type="redirect">/LoginSuccess.jsp</result>
        </action>

        <action name="simpleAnnotationLogin5" class="com.struts2.validation.SimpleAnnotationAction" method="login5">
            <interceptor-ref name="validation">
                <param name="validateAnnotatedMethodOnly">true</param>
            </interceptor-ref>
            <result name="input">/SimpleAnnotation.jsp</result>
            <result name="success" type="redirect">/LoginSuccess.jsp</result>
        </action>
    </package>
SimpleAnnotation.jsp

LoginSuccess.jsp

结论

  1.Action类中使用Validations Annotation定义验证。

  2.Action中,可以在方法上、类上定义验证Annotations,所有的验证器都将同时作用在映射为Action的方法上。

  3.Action中有多个方法被映射为Action时,类上和方法上所有定义的验证Annotations都将作用在每个映射为Action的方法上。

  4.Action中校验失败时,返回input逻辑视图

  5.可以使用@SkipValidation跳过所有的验证检查,包括自身方法定义的校验器。

  6.可以在Action映射中使用如下代码跳过校验检查

   <interceptor-ref name="validation">

    <param name="validateAnnotatedMethodOnly">true</param>

  </interceptor-ref>

  二  校验器使用说明

1.Validations Annotation的使用

Validations中定义了一些验证器的数组,用于存放验证规则,定义如下

public @interface Validations {

//自定义校验器数组

public CustomValidator[] customValidators() default {};

//字段转换错误校验器数组

public ConversionErrorFieldValidator[] conversionErrorFields() default {};

//日期范围校验器

public DateRangeFieldValidator[] dateRangeFields() default {};

//Email校验器

public EmailValidator[] emails() default {};

//字段表达式校验器

public FieldExpressionValidator[] fieldExpressions() default {};

//整数范围校验器

public IntRangeFieldValidator[] intRangeFields() default {};

//必填字段校验器

public RequiredFieldValidator[] requiredFields() default {};

//必填字符串校验器

public RequiredStringValidator[] requiredStrings() default {};

//字符串长度校验器

public StringLengthFieldValidator[] stringLengthFields() default {};

//URL校验器

public UrlValidator[] urls() default {};

//带条件的Vistor校验器

public ConditionalVisitorFieldValidator[] conditionalVisitorFields() default {};

//Vistor校验器

public VisitorFieldValidator[] visitorFields() default {};

//正则表达式校验器

public RegexFieldValidator[] regexFields() default {};

//表达式校验器

public ExpressionValidator[] expressions() default {};

}

[email protected] —— 必填字符串校验器

校验要求:指定字段不能为null且字符串长度大于0

参数: fieldName:校验字段名

trim:校验时取出字符串两边的空格,默认为true

message:校验失败时的消息

key:校验失败时返回i18n中指定名称的消息

3.RequiredFieldValidator —— 必填校验器

校验要求:指定字段不能为null

参数: fieldName:校验字段名

message:校验失败时的消息

key:校验失败时返回i18n中指定名称的消息

4.IntRangeFieldValidator —— 整数范围校验器

校验要求:int、long、short字段的整数值在指定的范围内

参数:min:指定最小值,可选,没有则不检查最小值

max:指定最大值,可选,没有则不检查最大值

fieldName:校验字段名

message:校验失败时的消息

key:校验失败时返回i18n中指定名称的消息

5.DateRangeFieldValidator —— 日期范围校验器

校验要求:日期在指定的范围内

参数:min:指定最小值,可选,没有则不检查最小值

max:指定最大值,可选,没有则不检查最大值

fieldName:校验字段名

message:校验失败时的消息

key:校验失败时返回i18n中指定名称的消息

6.EmailValidator —— Email地址校验器

校验要求:指定的字段为Email地址

参数: fieldName:校验字段名

message:校验失败时的消息

key:校验失败时返回i18n中指定名称的消息

7.ExpressionValidator —— 表达式校验器

校验要求:指定的ONGL表达式返回true。

参数: expression:ONGL表达式

message:校验失败时的消息

key:校验失败时返回i18n中指定名称的消息

8.UrlValidator —— URL校验器

校验要求:校验指定的字段值是否为合法的URL

参数: fieldName:校验字段名

message:校验失败时的消息

key:校验失败时返回i18n中指定名称的消息

9.StringLengthFieldValidator —— 字符串长度校验器

校验要求:字符串长度在指定的范围内

参数:minLength:指定最小长度,可选,没有则不检查最小长度

maxLength:指定最大长度,可选,没有则不检查最大长度

trim:校验时取出字符串两边的空格,默认为true

fieldName:校验字段名

message:校验失败时的消息

key:校验失败时返回i18n中指定名称的消息

10.ConversionErrorFieldValidator —— 转换错误校验器

校验要求:校验指定字段是否发生类型转换错误

参数: fieldName:校验字段名

message:校验失败时的消息

key:校验失败时返回i18n中指定名称的消息

11.VisitorFieldValidator —— Vistor校验器

说明:普通校验器只能校验基本数据类型和字符串类型,该校验器可以校验对象里面的属性。

参数:context:用于校验的context

appendPrefix: 校验发生错误时是否在错误信息中添加前最消息

fieldName:校验字段名

message:校验失败时的消息

key:校验失败时返回i18n中指定名称的消息

12. RegexFieldValidator —— 正则表达式校验器

校验要求:指定字段匹配指定的正则表达式

参数:expression:正则表达式

fieldName:校验字段名

message:校验失败时的消息

key:校验失败时返回i18n中指定名称的消息

13.ConditionalVisitorFieldValidator —— 带条件的Vistor校验器

验证要求:在条件不满足时,和Vistor校验器功能一样,条件满足则不执行Vistor校验

参数: fieldName:校验字段名

message:校验失败时的消息

key:校验失败时返回i18n中指定名称的消息

14.CustomValidator —— 自定义校验器 

校验器:自定义校验器

				
时间: 2024-10-06 02:00:28

struts2 验证方式的相关文章

《Java从入门到放弃》入门篇:Struts2的常用验证方式

感觉过了一个周末,人都懒得不要不要的,今天就来点简单的内容吧 - -,各位看官如果欲求不满的话,可以自行解决或再去宠幸其他"勃主"··· struts2的验证方式主要有四种方式: 一.直接在功能方法中写验证代码(不要扔鸡蛋,这种办法确实算一种) 二.重写validate方法(注意这个方法会验证该类中所有的方法) 三.使用ValidateXxx方法(Xxx对应要验证的方法的方法名) 四.用struts2的验证框架(也就是使用配置文件的方式来实现,这种方法个人觉得应该属于放弃篇的内容,为什

《Java从入门到放弃》入门篇:Struts2的常用验证方式(二)

前一回,我们讲完了"直接在功能方法中写验证代码"这种验证方式,接下来,我们继续搞定后续的三种方式. 二.重写validate方法(注意这个方法会验证该类中所有的方法) 使用重写验证方法的好处就是,又可以少写一句代码了!!!! 2.1)修改Action类,在其中添加valiate方法,把之前写在add方法中的验证代码剪切过来     //修改后的add方法     public String add() {         System.out.println("调用了添加的方

Struts2系列:(14)Struts2验证

1.原理 当浏览器向服务器提交表单数据时,在服务器端需要对表单数据的有效性进行校验. "校验方法"会在"业务方法"之前调用. 2.实现验证的两种方式 struts2校验的两种实现方法: 1. 手工编写代码实现(基本验证) 2. 基于XML配置方式实现(框架验证) 2.1.基本验证(对action的方法进行校验) 这种验证方式,它本质上就是在原来的Action类中覆写validate()或添加validateXxx()方法,就可以了. 以validateXxx()方法

Struts2验证

1.原理 当浏览器向服务器提交表单数据时,在服务器端需要对表单数据的有效性进行校验. “校验方法”会在“业务方法”之前调用. 2.实现验证的两种方式 struts2校验的两种实现方法: 1. 手工编写代码实现(基本验证) 2. 基于XML配置方式实现(框架验证) 2.1.基本验证(对action的方法进行校验) 这种验证方式,它本质上就是在原来的Action类中覆写validate()或添加validateXxx()方法,就可以了. 以validateXxx()方法为例 (1)在Action类中

11.怎样自学Struts2之Struts2验证[视频]

11.怎样自学Struts2之Struts2验证[视频] 之前写了一篇"打算做一个视频教程探讨怎样自学计算机相关的技术",优酷上传不了.仅仅好传到百度云上: http://pan.baidu.com/s/1kTDsa95 这节课讲的过程中碰到了些问题,同一时候处理问题费了些时间.有问题能够直接回复这篇文章. 错误1:http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd - Class: sun.net.www.proto

11.如何自学Struts2之Struts2验证[视频]

11.如何自学Struts2之Struts2验证[视频] 之前写了一篇"打算做一个视频教程探讨如何自学计算机相关的技术",优酷上传不了,只好传到百度云上: http://pan.baidu.com/s/1kTDsa95 这节课讲的过程中碰到了些问题,同时处理问题费了些时间,有问题可以直接回复这篇文章. 错误1:http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd - Class: sun.net.www.protocol

Struts2 验证框架 validation.xml 常用的验证规则

Struts2 验证框架 validation.xml 常用的验证规则 validation.xml 的命名规则和放置路径:文件名:<ActionClassName>-validation.xml<ActionClassName>就是要验证的Action类的名字. 要将此文件放于Class文件相同的目录.如果在Action类在struts配置中有多个action实例(action name),那么对应某个action的验证文件名规则如下:文件名:<ActionClassNam

关于 SQLNET.AUTHENTICATION_SERVICES 验证方式的说明

今天去客户那里巡检,客户提出为了提高数据库安全性考虑,需要修改sys/system密码,并通过数据库验证方式来取代默认的操作系统方式,现在我来把这两种验证方式总结一下. 操作系统验证,即通过操作系统账户的权限访问数据库,举个例子,如果已经拥有了windows下的系统管理员administrator的权限,那么当采用该方式验证的话,无需输入用户/密码就可以访问,比如:sqlplus / as sysdba;哪怕是任意输入的用户名和密码,也无所谓,比如:sqlplus abc/efg as sysd

ASP.net的身份验证方式有哪些?

[转] ASP.net的身份验证方式有哪些?分别是什么原理? Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活. Forms 验证方式对基于用户的验证授权提供了很好的支持,可以通过一个登录页面验证用户的身份,将此用户的身份发回到客户端的Cookie,之后此用户再访问这个 web应用就会连同这个身份Cookie一起发送到服务端.服务端上的授权设置就可以根据不同目录对不同用户的访问授权进行控制了. 问