Struts2的拦截器

4 篇文章 0 订阅
3 篇文章 0 订阅

拦截器可以实现横切(crosscutting)功能并使这些实现相对action甚至Struts 2框架保持独立。这样可以使核心框架代码比以前更加简洁,且使开发人员更快捷地使用新框架的特性。实际上,松耦合机制意味着用户再也不用等着框架来实现他们所需的新特性;相反,它们可以实现和使用自己所需的特性且不用修改框架的底层源代码。

使用拦截器可以达到如下所描述的目的。

在调用action之前,提供预处理(preprocessing)逻辑。

与action进行交互,提供执行信息,比如受Spring管理的对象、设置action里的请求参数等。

在调用action之后,提供后处理(postprocessing)逻辑。

修改返回的结果,进而修改呈现给用户的内容。

捕获异常从而替换可执行的处理过程或返回一个不同结果。

很多Struts 2特性都是通过拦截器提供的。

 

表3-1  Struts 2框架提供的拦截器

 

拦 截 器

配 置 名

   

别名拦截器( Alias Interceptor

alias

允许参数在跨越多个请求时使用不同别名,这个拦截器可将多个 action 使用不同名字链接起来,然后用于处理同一信息

链拦截器( Chaining Interceptor

chaining

允许当前 action 能够使用上一个被执行 action 的属性,这个拦截器通常要和“ chain ”结果类型一起使用

多选框拦截器( Checkbox Interceptor

checkbox

为没有被选定的多选框增加一个值为 false 的参数,协助管理多选框(在 HTTP 请求里,那些没有被选定的多选框通常是没有任何信息的)

转换错误拦截器( Conversion   Error Interceptor

conversionError

将转换错误的信息(包括转换的字符串和参数类型等)存放到 action 的字段错误集里去

会话创建拦截器( Create Session Interceptor

createSession

自动创建一个 HTTP 会话(如果不存在会话)

调试拦截器( Debugging Interceptor

debugging

为开发者提供几种不同调试界面

执行和等待拦截器( Execute and Wait Interceptor

execAndWait

action 在后台执行时,给用户显示一个过渡性的等待页面

异常拦截器( Exception Interceptor

exception

action 抛出的异常映射到结果,这样就通过重定向来自动处理异常

文件上传拦截器( File Upload Interceptor

fileUpload

便于文件上传

国际化拦截器( Internatio- nalization Interceptor

i18n

在用户会话中跟踪选定的区域( locale )信息

日志拦截器( Logging Interceptor

logger

通过输出被执行 action 的名字,提供简单的日志功能

消息存储拦截器( Message Store Interceptor

store

在会话中为 action 存储和检索消息、字段错误以及 action 错误,该拦截器要求 action 实现 ValidationAware 接口

模型驱动拦截器( Model Driven Interceptor

modelDriven

action 的模型对象存放在栈里,该拦截器要求 action 实现 ModelDriven 接口

作用域模型驱动拦截器( Scoped Model Driven Interceptor

scopedModelDriven

aciton 的配置作用域里存储和检索模型对象,该拦截器要求 action 实现 ScopedModelDriven 接口

参数拦截器( Parameters Interceptor

params

action 里设置请求参数

参数过滤拦截器( Parameter Filter Interceptor

n/a

控制 action 对参数的访问(非默认配置)

(续)

拦 截 器

配 置 名

   

预备拦截器( Prepare Interceptor

prepare

调用 actionprepare () 方法,该拦截器要求 action 实现 Preparable 接口

概要拦截器( Profiling Interceptor

profile

允许 action 记录简单的概要信息日志

作用域拦截器( Scope Interceptor

scope

在会话和应用作用域中存储和检索 action 的状态

Servlet 配置拦截器( Servlet Configuration Interceptor

servletConfig

使 action 能访问 servlet 里的各种信息

静态参数拦截器( Static Parameters Interceptor

staticParams

设置 action 里的静态定义值(通过 action 配置里的 param 标签来实现)

角色拦截器( Roles Interceptor

roles

只有在用户是配置的角色之一时才允许执行 action

计时拦截器( Timer Interceptor

timer

以执行 action 所花时间的形式,简单记录 action 概要信息

令牌拦截器( Token Interceptor

token

检查 action 的合法令牌,以防止重复提交表单

令牌会话拦截器( Token Session Interceptor

tokenSession

功能与令牌拦截器相同,但是对于非法令牌,提交的数据将保存在会话中

验证拦截器( Validation Interceptor

validation

action 提供验证支持

工作流拦截器( Workflow Interceptor

workflow

当验证失败时,不执行 action 然后重定向到 INPUT 视图

每个拦截器为action提供的特性都不一样。你可能已经猜到了,为action提供一个完备的执行环境需使用多个拦截器。为了便于使用,Struts 2允许创建拦截器栈(interceptor stack),由action来引用,而不是为每个action逐个配置所有拦截器。表3-2列出了所有Struts 2框架预配置好的栈,每个栈中包含多个拦截器。有一个很重要的问题必须注意,那就是拦截器是按照配置好的顺序来调用的。

 

表3-2  Struts 2框架提供的拦截器栈

 

已配置栈名

包含的拦截器

   

basicStack

exceptionservletConfigpreparecheckboxparamsconversionError

如使用栈,最起码要使用这几个拦截器

validationWorkflowStack

basicStackvalidationworkflow

在基本栈的基础上增加验证和工作流特性

fileUploadStack

fileUploadbasicStack

在基本栈的基础上增加文件上传特性

modelDrivenStack

modelDrivenbasicStack

在基本栈的基础上增加模型功能特性

chainStack

chainbasicStack

在基本栈的基础上增加链接特性

i18nStack

i18nbasicStack

在基本栈的基础上增加区域持久化特性

(续)

已配置栈名

包含的拦截器

   

paramPrepareParamsStack

exceptionaliasparamsservletConfigpreparei18nchainmodelDrivenfile- Upload 、 checkbox 、 staticParams 、 paramsconversionErrorvali- dationworkflow

提供包括前 actionpre-action )方法调用的完整栈。 params 栈使用两次:第一次是在调用 prepare() 方法之前提供参数,第二次是在预备阶段为可能被检索的对象重新使用参数

defaultStack

exceptionaliasservlet- Configpreparei18nchaindebuggingprofilingscoped- ModelDrivenmodelDrivenfileUploadcheckboxstatic- Paramsparamsconversion- Errorvalidationworkflow

提供一个完整栈,包括调试和概要

executeAndWaitStack

execAndWaitdefaultStackexecAndWait

提供执行与等待栈,比如在上传文件时需要向用户显示一个等待页面时,就可以使用这个栈

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值