`
jiangshulin013
  • 浏览: 11331 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论
阅读更多

拦截器可以实现横切(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

调用 action prepare () 方法,该拦截器要求 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

exception servletConfig prepare checkbox params conversionError

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

validationWorkflowStack

basicStack validation workflow

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

fileUploadStack

fileUpload basicStack

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

modelDrivenStack

modelDriven basicStack

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

chainStack

chain basicStack

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

i18nStack

i18n basicStack

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

(续)

已配置栈名

包含的拦截器

   

paramPrepareParamsStack

exception alias params servletConfig prepare i18n chain modelDriven file- Upload checkbox staticParams params conversionError vali- dation workflow

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

defaultStack

exception alias servlet- Config prepare i18n chain debugging profiling scoped- ModelDriven modelDriven fileUpload checkbox static- Params params conversion- Error validation workflow

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

executeAndWaitStack

execAndWait defaultStack execAndWait

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

分享到:
评论

相关推荐

    struts2 拦截器

    2. **拦截器链**:在Struts2中,多个拦截器可以形成一个拦截器链,每个拦截器按照定义的顺序依次执行。如果所有拦截器都允许Action执行,那么Action的结果将被传递到下一个拦截器,直到整个链执行完毕。 ### 二、...

    Struts2拦截器及其用法详细说明

    在Struts2中,拦截器(Interceptors)扮演着核心角色,增强了框架的功能和灵活性。这篇文章将深入探讨Struts2拦截器的概念、工作原理以及如何在实际应用中使用它们。 **一、什么是Struts2拦截器** 拦截器是基于AOP...

    struts2拦截器

    标题“struts2拦截器”指的是Struts2框架中的拦截器机制,这是一个关键的组件,可以让我们在不修改实际业务代码的情况下,实现对请求处理流程的扩展和定制。 描述中提到的“基于struts2的拦截器测试,实现了页面的...

    Struts2拦截器(Interceptor)

    Struts2拦截器(Interceptor) Struts2拦截器(Interceptor)

    Struts2 拦截器

    拦截器是Struts2框架的核心特性之一,它们扮演着处理请求、增强功能和实现业务逻辑的角色。在Struts2中,拦截器就像过滤器一样工作,通过链式调用在动作执行前后进行预处理和后处理。 首先,我们来理解一下拦截器的...

    详解Struts2拦截器

    ### Struts2拦截器详解 #### 一、Struts2拦截器概述 Struts2框架作为Java Web开发中的一种流行框架,其核心组件之一便是**拦截器**。拦截器不仅在Struts2中扮演着重要角色,更是整个框架灵活性与扩展性的基石。...

    struts2 拦截器实例

    在Struts2中,拦截器(Interceptor)扮演着核心角色,它们允许开发者在Action执行前后插入自定义的逻辑,如日志、权限检查、事务管理等。现在我们将深入探讨Struts2的拦截器机制及其实例应用。 ### 一、Struts2拦截...

    Struts2拦截器实现权限控制demo

    在这个“Struts2拦截器实现权限控制demo”中,我们将深入探讨如何利用拦截器来实现细粒度的用户权限管理。 首先,我们需要了解Struts2中的拦截器工作原理。拦截器是基于Java的动态代理模式实现的,它们按照配置的...

    struts2拦截器的使用方法

    ### Struts2拦截器的使用方法 #### 一、Struts2拦截器概述 Struts2框架中的拦截器(Interceptor)是一种重要的机制,用于在Action执行前后进行一系列处理,比如参数验证、数据预处理等。它能够帮助开发者更加灵活...

    struts2拦截器应用小例子

    当请求到达控制器时,Struts2会依次调用这个栈中的拦截器,每个拦截器都有机会处理请求,然后决定是否将请求传递给下一个拦截器或直接返回响应。 创建一个简单的Struts2拦截器,你需要遵循以下步骤: 1. 创建拦截...

    Struts2拦截器.ppt

    Struts2拦截器.ppt Struts2拦截器.ppt Struts2拦截器.ppt

    Struts2拦截器原理分析

    拦截器是Struts2框架的核心组成部分,它们在请求处理流程中起到了关键的作用。在本文中,我们将深入探讨Struts2拦截器的工作原理。 ### 一、拦截器概念 拦截器是基于Java的动态代理机制实现的,它允许我们在Action...

    struts2拦截器实现拦截不文明字迹

    拦截器是Struts2框架的一个重要组成部分,能够帮助开发者实现一些在请求处理前后执行的通用逻辑,如日志记录、权限验证、数据校验等。在本场景中,我们将探讨如何使用Struts2拦截器来实现对不文明字迹或者敏感词汇的...

    Struts2 拦截器注解(二十七)

    拦截器是Struts2框架的核心组件之一,它允许开发者在动作执行前后插入自定义逻辑,实现如权限验证、日志记录、性能优化等多种功能。在"Struts2 拦截器注解"这个主题中,我们将深入探讨如何利用注解来简化拦截器的...

    Struts2 拦截器的执行顺序(二十九)

    这篇博客“Struts2 拦截器的执行顺序(二十九)”可能探讨了Struts2拦截器链的工作原理和它们的执行顺序,这对于理解Struts2的内部机制至关重要。 首先,让我们深入理解Struts2的拦截器。拦截器是在Action调用前后...

    struts2 拦截器实现登录控制

    这篇博客“struts2 拦截器实现登录控制”显然会探讨如何利用拦截器来实现用户登录验证,从而保护应用程序的受保护资源。 首先,我们了解下Struts2拦截器的工作原理。拦截器是基于AOP(面向切面编程)的概念,它位于...

    struts2拦截器和验证框架(适合初学者-经藏版)

    ### Struts2 拦截器与验证框架详解 #### 一、Struts2概述 Struts2是一个基于Java的企业级Web应用开发框架,它继承了Struts1的优点,并在此基础上进行了很多改进,使得开发更加灵活高效。Struts2的核心是拦截器...

    Struts2拦截器源程序

    在Struts2中,拦截器扮演着至关重要的角色,它们是实现MVC(Model-View-Controller)架构的关键组件之一。拦截器允许开发者在动作执行前后插入自定义逻辑,比如日志记录、权限检查、数据验证等,而无需修改核心业务...

Global site tag (gtag.js) - Google Analytics