struts2-->validate 和 interceptor

来源:互联网 发布:plc编程软件下载 编辑:程序博客网 时间:2024/06/07 05:40

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.xml3.  完善校验文件,进行校验

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中拦截器的配置

这里写图片描述

原创粉丝点击