Struts2-拦截器

Posted Hacker丶Cat

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Struts2-拦截器相关的知识,希望对你有一定的参考价值。

拦截器其实是数据验证的一种封装衍生,首先我们先讲一下为什么要进行数据验证?

·对数据的合法性进行检查,只允许合法的数据进入应用程序

在哪里实现数据验证

·客户端验证

    数据提交前在客户端验证

    可使用javascript或JQuery实现

    特点:1.减少客户的等待时间;2.减小服务器压力

·服务器端验证

    在数据提交后服务器端验证

    特点:1.防止“绕过”客户端验证提交非法数据;2.可以在服务器端处理数据前确保数据的合法性

那么对于struts2来说,它有两种方式实验服务器端验证:

·使用ActionSupport编码实现验证

·使用验证框架实现验证

ActionSupport编码实现验证

使用ActionSupport实现验证

    在Action类的业务方法中直接验证——方法

    重写validate()方法——action

    使用validateXxx()方法——方法(常用)

添加错误信息

    addFieldError(String fieldName,String errorMessage)

    addActionError(String anErrorMessage)

在页面输出验证结果

    <s:fielderror/>输出一个或所有字段

    <s:actionerror/>输出所有Action的错误信息

<action>的配置

    <result name=”input”>x.jsp</result>

在validate()方法中实现验证

    重写ActionSupport类的vaildate()方法

    在vaildate()方法中实现验证

    将数据验证和业务处理分离

    添加与显示错误信息的方式不变

小经验

    接收参数时,数据转换失败也会调用validate()方法

    vaildate()方法验证不通过,不会执行业务方法

验证框架

验证实现的部分方便复用、扩展

    验证的实现与业务处理分离

使用验证框架的过程

    编写jsp数据输入页面

    编写action类极其配置文件

    在action类同目录下创建验证文件ActionName-validation。xml

    编写验证规则

ActionName-validation.xml对action类中所有业务方法生效

    如果想对某一业务方法配置验证规则怎么做?

解决方法

    对action类中的某一业务方法单独编写<action>配置并使用method属性指定该业务方法

    提供actionName-alias-validation.xml文件进行验证

    验证规则的编写不变

验证框架

    ActionName-validation.xml可对Action类中所有业务方法起作用

    ActionName-alias-validation.xml可对Action类中某一业务方法起作用

验证顺序

    Action父类-validation.xml

    Action父类-alias-validation.xml

    Action类-validation.xml

    Action类-alias-validation.xml

拦截器

拦截器也是一个类

    拦截器可以在Action被调用之前和之后执行代码

    框架的很多核心功能是拦截器实现的

拦截器特点

    拦截器自由组合,增强了灵活性、扩展性、有利于系统解耦

    拦截器可以拦截Action请求

    在访问的Action执行之前和执行之后执行代码实现某项功能

Struts2:

    大部分功能是在拦截器中实现的

    如:接收输入的参数、数据验证、文件上传、国际化等

应用程序:

    需要在Action执行的前后执行特定功能时

    Action执行时间统计,action访问权限管理

    Action添加功能

    action的代码不懂,使用拦截器实现功能

拦截器工作方式

拦截器的执行过程是一个递归的过程

    做一些Action执行前的预处理

    将控制交给后续拦截器或返回结果字符串

    做一些Action执行后的处理

有兴趣的朋友还可以了解下“ 自带拦截器与默认拦截器



以上是关于Struts2-拦截器的主要内容,如果未能解决你的问题,请参考以下文章

Struts2拦截器

Struts2拦截器

Struts2拦截器

在struts2拦截器中取得cookie

Struts2

Struts2学习笔记四:Struts2拦截器学习拦截器实现案例Struts2标签学习