struts2自带拦截器

拦截器

名字

说明

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调用ActionsetModel方法将其放入Action内部。

Parameters Interceptor

params

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

Prepare Interceptor

prepare

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

Scope Interceptor

scope

Action状态存入sessionapplication的简单方法。

Servlet Config Interceptor

servletConfig

提供访问HttpServletRequestHttpServletResponse的方法,以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

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

Parameter Filter Interceptor

N/A

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

Profiling Interceptor

profiling

通过参数激活profile

<interceptors>

            <interceptor name="alias"class="com.opensymphony.xwork2.interceptor.AliasInterceptor"/>

            <interceptor name="autowiring"class="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor"/>

            <interceptor name="chain"class="com.opensymphony.xwork2.interceptor.ChainingInterceptor"/>

            <interceptor name="conversionError"class="org.apache.struts2.interceptor.StrutsConversionErrorInterceptor"/>

            <interceptor name="cookie"class="org.apache.struts2.interceptor.CookieInterceptor"/>

            <interceptor name="clearSession"class="org.apache.struts2.interceptor.ClearSessionInterceptor"/>

            <interceptor name="createSession"class="org.apache.struts2.interceptor.CreateSessionInterceptor"/>

            <interceptor name="debugging"class="org.apache.struts2.interceptor.debugging.DebuggingInterceptor"/>

           <interceptor name="execAndWait" class="org.apache.struts2.interceptor.ExecuteAndWaitInterceptor"/>

            <interceptor name="exception"class="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor"/>

            <interceptor name="fileUpload"class="org.apache.struts2.interceptor.FileUploadInterceptor"/>

            <interceptor name="i18n" class="com.opensymphony.xwork2.interceptor.I18nInterceptor"/>

            <interceptor name="logger"class="com.opensymphony.xwork2.interceptor.LoggingInterceptor"/>

            <interceptor name="modelDriven"class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/>

            <interceptor name="scopedModelDriven"class="com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor"/>

            <interceptor name="params"class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>

            <interceptor name="actionMappingParams"class="org.apache.struts2.interceptor.ActionMappingParametersInteceptor"/>

            <interceptor name="prepare"class="com.opensymphony.xwork2.interceptor.PrepareInterceptor"/>

            <interceptor name="staticParams"class="com.opensymphony.xwork2.interceptor.StaticParametersInterceptor"/>

            <interceptor name="scope"class="org.apache.struts2.interceptor.ScopeInterceptor"/>

            <interceptor name="servletConfig"class="org.apache.struts2.interceptor.ServletConfigInterceptor"/>

            <interceptor name="timer"class="com.opensymphony.xwork2.interceptor.TimerInterceptor"/>

            <interceptor name="token"class="org.apache.struts2.interceptor.TokenInterceptor"/>

            <interceptor name="tokenSession"class="org.apache.struts2.interceptor.TokenSessionStoreInterceptor"/>

            <interceptor name="validation"class="org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor"/>

            <interceptor name="workflow"class="com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor"/>

            <interceptor name="store"class="org.apache.struts2.interceptor.MessageStoreInterceptor"/>

            <interceptor name="checkbox"class="org.apache.struts2.interceptor.CheckboxInterceptor"/>

            <interceptor name="profiling"class="org.apache.struts2.interceptor.ProfilingActivationInterceptor"/>

            <interceptor name="roles"class="org.apache.struts2.interceptor.RolesInterceptor"/>

            <interceptor name="annotationWorkflow"class="com.opensymphony.xwork2.interceptor.annotations.AnnotationWorkflowInterceptor"/>

            <interceptor name="multiselect" class="org.apache.struts2.interceptor.MultiselectInterceptor"/>

</interceptors>

配置.

拦截器的声明和配置

我们从struts-dfault.xml文件中已经看过了如何声明一个拦截器。首先拦截其的声明适应<interceptor>元素,name属性用于指定拦截器的名字,class属性用于指定拦截器的实现类。同时<interceptor>元素必须放在<interceptors>元素里。

在<interceptors>元素里可以使用<interceptor-stack>元素和<interceptor-ref>元素来定义拦截器栈和引用拦截器(或拦截器栈),还可以在使用<param>元素来向拦截器传递参数:

<interceptor-stack name="executeAndWaitStack">

      <interceptor-ref name="execAndWait">

            <param name="excludeMethods">input,back,cancel</param>

       </interceptor-ref>

       <interceptor-ref name="defaultStack"/>

       <interceptor-ref name="execAndWait">

            <param name="excludeMethods">input,back,cancel</param>

       </interceptor-ref>

 </interceptor-stack>

为action配置拦截器。这个我们在前面的学习中已经学习过了,我们可以在<package>元素中配置默认的拦截器栈,也可以在<action>元素中使用<interceptor-ref>元素来为Action配置拦截器或拦截器栈。

<package name="default" namespace="/" extends="struts-default">

       

       <interceptors>

           <interceptor-stackname="luo">

              <interceptor-refname="exception"/>

                <interceptor-refname="alias"/>

                <interceptor-refname="servletConfig"/>

                <interceptor-refname="i18n"/>

                <interceptor-ref name="prepare"/>

                <interceptor-refname="chain"/>

                <interceptor-refname="scopedModelDriven"/>

                <interceptor-refname="modelDriven"/>

                <interceptor-refname="fileUpload"/>

                <interceptor-refname="checkbox"/>

                <interceptor-refname="multiselect"/>

                <interceptor-refname="staticParams"/>

                <interceptor-refname="actionMappingParams"/>

                <interceptor-refname="params">

                  <param name="excludeParams">dojo\..*,^struts\..*</param>

                </interceptor-ref>

                <interceptor-refname="conversionError"/>

              

                <interceptor-refname="workflow">

                    <param name="excludeMethods">input,back,cancel,browse</param>

                </interceptor-ref>

                <interceptor-refname="debugging"/>

            

           </interceptor-stack>

       </interceptors>  

       <default-interceptor-ref name="luo"></default-action-ref>

       <action name="hello" class="action.HelloWorld">

           <result name="success">/success.jsp</result>

           <result name="input">/input.jsp</result>

       </action>

 

    </package>


1.  <action name="helloworldAction" class="cn.javass.action.action.HelloWorldAction">  

2.              <param name="account">test</param>  

3.           <result>/s2impl/welcome.jsp</result>  

4.           <interceptor-ref name="staticParams"/>  

5.           <interceptor-ref name="basicStack"/>  

6.  </action> 

注:如果要声明新的拦截器,那么必须声明在<package>元素下的<intercptors>元素下。<action>元素中只能引用拦截器,不能声明拦截器。



Alias Interceptor(别名拦截器):

该拦截器主要作用是将一个参数别名成为另一个参数,在不同的action之间相似的参数(但是不同名)扮演着胶水的角色。——action之间的参数传递拦截器。

Chaining Interceptor:

其主要功能是复制值栈(ValueStack)中的所有对象的所有属性到当前正在执行的Action中,如果说ValueStack中没有任何对象的话,该拦截器不会干任何事情,看到这个拦截器的名称,大家应该会想到有一种chain类型的Result,该拦截器主要就是针对chain类型Result起作用的,因为我们有可能在chain链后面的Action用到前面Action的属性,所以struts2提供了该拦截器来实现这个功能。当然我们也可以让chain链中的某个Action属性不复制到正在执行的Action中,只要chain链中的Action实现com.opensymphony.xwork2.Unchainable接口,这个Action中的属性就不会复制到当前正在执行的Action中了。

Checkbox Interceptor:

当提交的表单里有checkbox时,默认情况下,如果没选中,提交的值是null;如果选中,提交的值是"true"。

CheckboxInterceptor的作用是当没选中checkbox时,提交一个指定的值,而不是null。

Cookies Interceptor:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值