您当前的位置: 首页 > 

liaowenxiong

暂无认证

  • 1浏览

    0关注

    1171博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Struts2的校验器详解/验证框架详解/校验框架详解

liaowenxiong 发布时间:2022-06-01 09:12:15 ,浏览量:1

文章目录
  • 简介
  • 使用校验器步骤
  • 演示案例
  • 常用校验器
    • required
    • requiredstring
    • stringlength
    • regex
    • int
    • double
    • fieldexpression
    • email
    • url
    • date
    • conversion
    • visitor
    • expression
  • 参考

简介

Struts2 的校验器是在后端对前端提交的数据进行校验,在调用 Action 的指定方法前会先调用校验器的有关方法,校验通过才会调用 Action 指定的方法,校验不通过则会调用 Action 的方法 input(),该方法返回字符串“input”。

校验不通过会将有关的提示信息存储到 Action 对象中的成员变量 validationAware 中(这个成员变量继承自 ActionSupport),然后再调用 Action 的方法 input()(这个方法继承自 ActionSupport),该方法返回字符串“input”。

控制器再将请求转发给名为“input”的 JSP 页面。

使用校验器步骤

1.先写前端页面 JSP

写页面时要确定哪些字段的数据需要校验,在需要校验的字段旁边添加标签 ,如下所示:

 
	td>邮箱:
	
	
	

2.写 Action

Action 的属性名称要和前端页面的字段名称保持一致。自定义的 Action 必须继承自 ActionSupport。

3.struts.xml 对 Action 配置

 
	success.jsp
	
	register.jsp

4.创建校验器配置文件

首先确定调用哪个 Action 需要校验请求参数的数据。

例如,调用名称为 register 的 Action 需要校验页面表单项的数据,那么就需要在 Action 所在的包目录下创建一个校验器配置文件,并且该配置文件的取名规则为:Action 类的名称-Action 的名称-validation.xml

Action 的名称:struts.xml 文件中标签 的属性 name 的值

例如,下面的 action:


	success.jsp
    
	register.jsp

访问 register,需要校验表单数据,那么就可以创建名为 RegisterAction-register-validation.xml 的配置文件。并将该配置文件存放在 RegisterAction 所在的包目录下。Maven 项目在开发时,只能将配置文件存放在目录 resources 下,因此需要将该配置文件存放在目录 resources 中相对应的包目录下,所以你要先在目录 resources 目录下创建和 RegisterAction 的包目录结构相同的目录,再将配置文件存放在对应的包目录下,如下图所示: 在这里插入图片描述

如果配置文件命名为 RegisterAction-validation.xml,则只要访问类 RegisterAction 就会去调用校验器。

校验器调用顺序: 按下面的顺序加载解析校验器配置文件,调用相应的校验器。 先加载 action类名-validation.xml,然后加载 action类名-name属性值-validation.xml 文件。

5.校验器配置

先指定被校验的字段,再指定校验器。谁被校验,由谁来校验!这是【字段 → 校验器】配置风格

例如:

  
    
        
        
            
            邮箱不能为空
        
        
        
            邮箱格式不正确
        
    

先指定校验器,再指定被校验的字段。由谁来校验,来校验谁!这是【校验器 → 字段】配置风格。

例如:


    需要被校验的字段
    参数值
    
    提示信息

演示案例

项目结构图如下: 在这里插入图片描述

register.jsp的代码如下:




DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


    
    
    注册



    
        
            邮箱:
            
            
            
        
        
            密码:
            
            
        
        
            重复密码:
            
                
            
        
        
            电话:
            
            
        
        
            
            
            
        
    



success.jsp的代码如下:


DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


    
    注册成功


欢迎你 ${email}


RegisterAction 的代码如下:

package priv.lwx.struts2.validator.web;

import com.opensymphony.xwork2.ActionSupport;

/**
 * description
 *
 * @author liaowenxiong
 * @date 2022/5/31 18:43
 */

public class RegisterAction extends ActionSupport {
  // 页面中需要校验的字段必须和Action的属性一一对应
  private String email;
  private String password;
  private String repassword;
  private String phone;

  public String execute() throws Exception {
    return SUCCESS;
  }

  public String getEmail() {
    return email;
  }

  public void setEmail(String email) {
    this.email = email;
  }

  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 String getPhone() {
    return phone;
  }

  public void setPhone(String phone) {
    this.phone = phone;
  }
}

struts.xml 的配置如下:


DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">


    
    
        
        
            success.jsp
            
            register.jsp
        
    

RegisterAction-validation.xml 的代码如下:


DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator 1.0.2//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">


    
    
        
        
            
            邮箱不能为空
        
        
        
            邮箱格式不正确
        
    

    
        
            密码不能为空
        
        
        
            
            6
            密码长度不能少于6位
        
    

    
    
        
            
            
            两次密码不一至
        
    

    
    
        
            
            
            电话号码格式不正确
        
    

常用校验器

Struts2 提供了大量的内置校验器,你可以在 xwork-core-2.1.6.jar 的 com.opensymphony.xwork2.validator.validators 下的 default.xml 中查看所有的内置校验器。

required

必填校验器,要求field的值不能为null。

requiredstring

必填字符串校验器,要求field的值不能为null,并且长度大于0

参数说明trim指定在校验字符串长度之前是否去除字符串前后的空格。 stringlength

字符串长度校验器,要求field的值的长度必须在指定的范围内,否则校验不通过。

参数说明minLength指定最小长度。maxLength指定量大长度。trim指定在校验字符串长度之前是否去除字符串前后的空格。 regex

正则表达式校验器,校验field的值是否与指定的正则表达式相匹配。

参数说明expression指定正则表达式(2.3.15版用regexExpression)。caseSensitive指定进行正则表达式匹配时是否区分大小写。 int

整数校验器,要求field的值必须是整型数值,且数值必须在指定的范围内。

参数说明min指定最小值。max指定最大值。 double

双精度浮点数校验器,要求field的值必须是double数值,并且数值必须在指定范围内。

参数说明min指定最小值。max指定最大值。 fieldexpression

OGNL 表达式校验器。要求 field 的值满足一个 ognl 表达式。

参数说明expression指定ognl表达式(表达式要写在 内)。 email

邮件地址校验器。如果field的值非空,则必须符合邮箱地址格式的要求(即必须是合法的邮箱地址)

url

网址校验器。如果field的值非空,则必须符合url格式的要求(即必须是合法的URL地址)

date

日期校验器,要求field的值必须是日期类型的,且日期值必须在指定范围内

参数说明min指定最小值。max指定最大值。 conversion

转换校验器,指定在类型转换失败时,提示错误信息。

visitor

用于校验action中的复合属性。它指定一个校验文件用于校验复合属性中的属性。

expression

OGNL表达式校验器。要求 field 满足一个ognl表达式。该校验器不可用在【字段 → 校验器】风格的配置中!

参数说明expression指定ognl表达式(表达式要写在 内)。 参考

1.https://www.cnblogs.com/likailan/p/3302284.html

关注
打赏
1661566967
查看更多评论
立即登录/注册

微信扫码登录

0.0473s