Struts2(XWork)拦截器的功能介绍:

拦截器名字说明Alias Interceptoralias在不同请求之间将请求参数在不同名字件转换,请求内容不变Chaining Interceptorchain让前一个Action的属性可以被后一个Action访问,现在和chain类型的result
摘要由CSDN通过智能技术生成

 

拦截器

名字

说明

Alias Interceptor

alias

在不同请求之间将请求参数在不同名字件转换,请求内容不变

Chaining Interceptor


chain

让前一个Action的属性可以被后一个Action访问,现在和chain类型的result(<result type=”chain”>)结合使用。

Checkbox Interceptor

checkbox

添加了checkbox自动处理代码,将没有选中的checkbox的内容设定为false,而html默认情况下不提交没有选中的checkbox。

Cookies Interceptor

cookies

使用配置的name,value来是指cookies


Conversion Error Interceptor


conversionError

将错误从ActionContext中添加到Action的属性字段中。

Create Session Interceptor

createSession

自动的创建HttpSession,用来为需要使用到HttpSession的拦截器服务。

Debugging Interceptor

debugging

提供不同的调试用的页面来展现内部的数据状况。

Execute and Wait Interceptor

execAndWait

在后台执行Action,同时将用户带到一个中间的等待页面。

Exception Interceptor

exception

将异常定位到一个画面

File Upload Interceptor

fileUpload

提供文件上传功能

I18n Interceptor

i18n

记录用户选择的locale

Logger Interceptor

logger

输出Action的名字

Message Store Interceptor

store

存储或者访问实现ValidationAware接口的Action类出现的消息,错误,字段错误等。

Model Driven Interceptor

model-driven

如果一个类实现了ModelDriven,将getModel得到的结果放在Value Stack中。

Scoped Model Driven

scoped-model-driven

如果一个Action实现了ScopedModelDriven,则这个拦截器会从相应的Scope中取出model调用Action的setModel方法将其放入Action内部。

Parameters Interceptor

params

将请求中的参数设置到Action中去。

Prepare Interceptor

prepare

如果Acton实现了Preparable,则该拦截器调用Action类的prepare方法。


Scope Interceptor


scope

将Action状态存入session和application的简单方法。

Servlet Config Interceptor

servletConfig

提供访问HttpServletRequest和HttpServletResponse的方法,以Map的方式访问。

Static Parameters Interceptor

staticParams

从struts.xml文件中将<action>中的<param>中的内容设置到对应的Action中。

Roles Interceptor

roles

确定用户是否具有JAAS指定的Role,否则不予执行。

Timer Interceptor

timer

输出Action执行的时间

Token Interceptor

token

通过Token来避免双击

Token Session Interceptor

tokenSession

和Token Interceptor一样,不过双击的时候把请求的数据存储在Session中

Validation Interceptor

validation

使用action-validation.xml文件中定义的内容校验提交的数据。

Workflow Interceptor

workflow

调用Action的validate方法,一旦有错误返回,重新定位到INPUT画面

Parameter Filter Interceptor

N/A

从参数列表中删除不必要的参数

Profiling Interceptor

profiling

通过参数激活profile

默认的拦截器栈设计用来服务于大多数应用程序.很多应用程序不需要添加拦截器或改变拦截器栈.
很多Action共享关联.一些Action需要输入验证.另一个Action可能需要一个预处理的文件上传.另一个Action可能需要保护来自一个double的提交.一些Action需要从列表中去除和页面驻留在页面显示前.
Struts Action框架使得很容易解分开决这些问使用“Interceptor”策略.当你请求一个资源,它映射到一个”action”,框架调用Action对象.但是在Action执行前,调用可以被拦截通过另一个对象.在Action执行后,调用可以再次的被拦截.我们称这些对象为”Interceptors”(拦截器)
Understanding Interceptors(理解拦截器)
拦截器可以执行代码在Action执行前后.很多框架核心功能是实现拦截.此特征有点像重复提交的保护,类型转换,对象驻留,验证,文件上传,页在预处理,和更多.所有的准备都是在拦截器的帮助下完成.每个拦截器就像是一个插件,所以你可以决定精确的特性,那个Action需要被支持.
拦截器可以被配置基于独立的Action.你可以自定义拦截器混合和匹配拦截器同框架绑定.拦截器”set the stage(设置阶段)”为Action类.做很多重量级事情在Action执行前.
Action的生命周期
在一些情况下,一个拦截器将保持Action被激活,因为一个重复提交或验证失败.拦截器也可以改变Action执行前的状态.
拦截器定义在一个栈中指定执行的顺序.在一些情况下,拦截器在栈中的顺序是非常重要的.
Configuring Interceptors(配置拦截器)
Struts.xml
<package name="default" extends="struts-default">
      <interceptors>
          <interceptor name="timer" class=".."/>
          <interceptor name="logger" class=".."/>
      </interceptors>
      <action name="login"
         class="tutorial.Login">
           <interceptor-ref name="timer"/>
           <interceptor-ref name="logger"/>
            <result name="input">login.jsp</result>
            <result name="success"
               type="redirect-action">/secure/home</result>
      </action>
</package>
查看struts-default.xml,我们可以看它是如何做的.
The Default Configuration(默认的配置)
struts-default.xml (struts2-core-2.X.X.jar根目录)
因为struts-default.xml包含了应用程序的默认配置,所有的预先定义拦截器和栈可用”out of the box”.
Framework Interceptors(框架的拦截器)
     拦截器类也是使用键值对定义在指定的Struts配置文件中.名字指定在struts-default.xml文件中.如果你继承了struts-defaut包,这样你可以使用名字了.否则,他们必需定义在你的包中使用name-class对指定在<interceptors>标签.

一个抽像的拦截器被应用,选择相应included/exclude方法列表.
指下如下参数:
     .execludeMethods-方法名被排除
     .includeMethods-方法名被包含
注意:如果方法名可用在IncludeMethods和excludeMethods,它将被考虑为一个included方法.总之,includeMethods优于excludeMethods.
扩展拦截器的这个能力将是:
       *     TokenInterceptor
       * TokenSessionStoreInterceptor
       * DefaultWorkflowInterceptor
       * ValidationInterceptor
Interceptor Parameter Overriding(拦截器参数覆盖)
拦截器的参数可以被覆盖通过下面的方式:
方法1: 
<action name="myAction" class="myActionClass">
     <interceptor-ref name="exception"/>
       <interceptor-ref name="alias"/>
       <interceptor-ref name="params"/>
       <interceptor-ref name="servlet-config"/>
       <interceptor-ref name="prepare"/>
       <interceptor-ref name="i18n"/>
       <interceptor-ref name="chain"/>
       <interceptor-ref name="model-driven"/>
       <interceptor-ref name="fileUpload"/>
       <interceptor-ref name="static-params"/>
       <interceptor-ref name="params"/>
       <interceptor-ref name="conversionError"/>
       <interceptor-ref name="validation">
         <param name="excludeMethods">myValidationExcudeMethod</param>
       </interceptor-ref>
       <interceptor-ref name="workflow">
         &l

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值