`

struts2 intercepter

阅读更多

1.要求拦截器是无状态的原因是Struts 2不能保证为每一个请求或者action创建一个实例,所以如果拦截器带有状态,会引发并发问题。

所有的Struts 2的拦截器都直接或间接实现接口com.opensymphony.xwork2.interceptor.Interceptor。除此之外,大家可能更喜欢继承类com.opensymphony.xwork2.interceptor.AbstractInterceptor。

2.

配置和使用拦截器

在struts-default.xml中已经配置了以上的拦截器。如果您想要使用上述拦截器,只需要在应用程序struts.xml文件中通过“<include file="struts-default.xml" />”将struts-default.xml文件包含进来,并继承其中的struts-default包(package),最后在定义Action时,使用“<interceptor-ref name="xx" />”引用拦截器或拦截器栈(interceptor stack)。一旦您继承了struts-default包(package),所有Action都会调用拦截器栈 ——defaultStack。当然,在Action配置中加入“<interceptor-ref name="xx" />”可以覆盖defaultStack。

 

3.自定义拦截器的配置:

           <package name="intercepter" extends="struts-default">
      <interceptors>
       <interceptor name="myInterceptor" class="struts.interceptor.TimerInterceptor"></interceptor>
      </interceptors>
         <action name="test" class="struts.action.TestAction">
          <interceptor-ref name="myInterceptor"></interceptor-ref>
          <result>index.jsp</result>

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

 

          import com.opensymphony.xwork2.interceptor.Interceptor;

                 public String intercept(ActionInvocation ai) throws Exception {
                String userName=(String)ai.getInvocationContext().getSession().get("user");
                  if(userName!=null){
                    Thread.sleep(5000);
                 System.out.println("timer interceptor..........................");
                return ai.invoke();           //成功则执行action方法
                  }
                    else{
                 return Action.INPUT;        //不成功则跳转到 name="input" 的result
                   }
                     }

                    }

 

(1)<interceptor-ref name="timer"/>

          INFO [com.opensymphony.xwork2.interceptor.TimerInterceptor] - Executed action [//Login!execute] took 110 ms.   执行action所用的时间

 

------------------------

createSession和freemarker有关 :这是特别有用当使用“ @ s.token ”标记freemarker模板

 

 

 

分享到:
评论
2 楼 zw7534313 2010-06-14  
小刘而已 写道
方法级的intercepter怎么配置呢?


法过滤拦截器,顾名思义,过滤的是方法。其实在struts2中可以在一个action类中写很多个与aciton的execute方法类似的方法。
只要在struts。Xml中的action添加一个属性就可以了这个属性是method比如:

<action name="register"class="com.test.action.RegisterAction" method="test">当然在action类中也有个test()方法

这个拦截器可以细化到拦截到具体的哪一个方法。如果不是方法过滤拦截器 哪么它可能将与execute()方法类似的方法都执行。
比如说上面的test()方法。如此这样照成很多的不必要。于是这种拦截器就显的格外的重要。
在这个类继承后实现的不是inteceptor()方法而是doIntercept(),可是做好这个类后如何配置继承MethodFilterInterceptor这个类呢?
如下(为了实现过滤方法加入了几个参数,其他的都相同):

<interceptor-ref name="myinterceptor2">
               <param name="includeMethods">execute,test</param>
</interceptor-ref>

includeMethods   包含execute,test这两个方法,结果执行了这个拦截器,如果改成excludeMethods ,就不会执行了,也可以再加下面的一个参数
<param name="excludeMethods">execute,test</param>
不排除execute,test这两个方法 可是又加入又排除到底执行吗?答案是执行的,必定结果是最能说明问题的!呵呵!
1 楼 小刘而已 2010-05-18  
方法级的intercepter怎么配置呢?

相关推荐

    Struts2Day2

    `Struts2Day2_intercepter`指的是Struts2的核心特性之一——拦截器。拦截器是Struts2处理请求的一种机制,它们按照预定义的顺序执行,可以用于实现如日志记录、权限验证、事务管理等功能。通过自定义拦截器,开发者...

    struts2拦截器

    最全的InterCepter的基础,面向对象AOP的透彻分析

    Struts2的工作原理和流程

    2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 3 接着FilterDispatcher被调用,...

    达内培训机密资料_struts2_day02(2)

    它构建于Intercepter Model之上,并继承了Struts 1.x的一些特性。Struts2通过MVC(Model-View-Controller)模式简化了Web应用程序的开发过程。 ### OGNL(Object-Graph Navigation Language) - **OGNL** 是一种...

    Struts2的配置 struts.xml Action详解

    Struts2 的配置 struts.xml Action 详解 Struts2 框架是一个基于 Java 语言的 Web 应用程序框架,它提供了一个灵活的架构,允许开发者快速构建基于 Web 的应用程序。在 Struts2 框架中,struts.xml 文件扮演着核心...

    Struts2.1.6+Spring2.0+Hibernate3.1

    Struts2是一个开源的Web框架,它是Struts1的下一代版本,基于Intercepter(拦截器)模式,提供了更为灵活的配置机制,并且与许多其他框架兼容。Struts2.1.6是该框架的一个成熟版本,支持多种插件和功能扩展。 #### ...

    struts2拦截器demo1

    (2)拦截器组件可以继承AbstractIntercepter类(实现了Intercepter接口)。 (3)拦截器组件可以继承MethodFilterIntercepter类(继承自AbstractIntercepter),增加了方法过滤功能(上面两种方式是拦截所有方法,这个...

    Java servlet、filter、listener、interceptor之间的区别和联系

    Interceptor(拦截器)是AOP(面向切面编程)的一种实现,常用于MVC框架如Spring MVC和Struts2中。Interceptor可以在请求到达Controller(控制器)之前或之后执行,可以理解为一种预处理和后处理机制。与Filter不同...

    java私塾全部笔记

    - **Intercepter框架** - Interceptor的工作原理及其在WebWork中的应用。 - **OGNL表达式语言** - OGNL(Object-Graph Navigation Language)的使用方法。 - **验证框架** - WebWork内置的验证框架及其配置方法。 -...

Global site tag (gtag.js) - Google Analytics