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-拦截器的主要内容,如果未能解决你的问题,请参考以下文章