struts2-->validate 和 interceptor

本文介绍Struts2框架中的校验机制及拦截器应用,包括如何通过XML配置文件定义校验规则,以及如何利用拦截器进行功能处理。深入探讨了校验规则的编写方法与拦截器的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Validate
1.1重写validate方法

例如:在前台上做登录页面
这里写图片描述

action:
这里写图片描述

1.2 校验框架

1.  编写校验规则文件
是一个典型的XML文件,其格式为ActionName-validation.xml
该校验文件需要添加一个dtd约束说明
该dtd说明在xwork-core里面
<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator 1.0.3//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
2.  校验器的配置
a)  常用的内置校验器
b)  struts-2.3.20.1\src\xwork-core\src\main\resources\com\opensymphony\xwork2\validator\validators\default.xml
3.  完善校验文件,进行校验

xml配置样板

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC
        "-//Apache Struts//XWork Validator 1.0.3//EN"
        "http://struts.apache.org/dtds/xwork-validator-1.0.3.dtd">
<validators>
    <field name="user.username">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>用户名不能为空!</message>
        </field-validator>
        <field-validator type="stringlength">
            <param name="minLength">8</param>
            <param name="maxLength">20</param>
            <message>用户名长度必须在${minLength}-${maxLength}之间</message>
        </field-validator>
    </field>
    <field name="user.password">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>密码不能为空!</message>
        </field-validator>
        <field-validator type="stringlength">
            <param name="minLength">6</param>
            <message>密码长度必须大于${minLength}</message>
        </field-validator>
    </field>
    <field name="repassword">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>确认密码不能为空!</message>
        </field-validator>
        <field-validator type="fieldexpression">
            <param name="expression">user.password==repassword</param>
            <message>两次密码不一致</message>
        </field-validator>
    </field>
    <field name="user.phone">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>电话号码不能为空!</message>
        </field-validator>
        <field-validator type="regex">
            <param name="regex">1[3578][0-9]{9}</param>
            <message>电话号码格式不正确!</message>
        </field-validator>
    </field>
    <field name="user.email">
        <field-validator type="requiredstring">
            <param name="trim">true</param>
            <message>邮箱不能为空!</message>
        </field-validator>
        <field-validator type="email">
            <message>邮箱格式不正确</message>
        </field-validator>
    </field>
</validators>

2.拦截器 interceptor

1.什么是拦截器,拦截器栈

拦截器是一种可以在让用户在Action执行之前和Result执行之后进行一些功能处理的机制
每个拦截器只有一个实例,采用单例模式,所以如果拦截器中使用的是类变量,要注意同步问题。
拦截器是AOP的一种实现,Struts2的拦截器实现原理相对简单,当请求Struts2的action时,
struts2会查找配置文件,并根据其配置实例化对应的拦截器对象,如果有多个拦截器,
则连接成一条链,形成拦截器栈,然后一个一个去调用拦截器栈中的拦截器

拦截器在action执行之前和result执行之后的顺序是相反的,可以看下图:

这里写图片描述

也就是说执行的顺序是:Interceptor1—Interceptor2—Interceptor3—Action—Result–Interceptor3—-Interceptor2—-Interceptor1

2.2拦截器的优点

拦截器与过滤器
1.过滤器属于WEB容器,可以过滤一切的请求(action,servlet,jsp,html);
2.拦截器属于struts2框架,只能拦截action(jsp无法拦截)
3.过滤器内部采用回调函数来实现,拦截器采用动态代理来实现

默认的18个拦截器

这里写图片描述

拦截器的应用,记录Action执行时间

这里写图片描述

struts.xml中拦截器的配置

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值