Struts2配置拦截器和拦截链

转载 2016年06月01日 10:56:26

1.拦截器的配置

此处以“检测用户是否登录”为例,

MyInterceptor.Java

[java] view plain copy
  1. public class MyInterceptor extends AbstractInterceptor {  
  2.   
  3.     @Override  
  4.     public String intercept(ActionInvocation invocation) throws Exception {  
  5.         System.out.println("---------intercept()---------");  
  6.         Map<String, Object> session = invocation.getInvocationContext().getSession();  
  7.         if (session.get("username") != null) {  
  8.             return invocation.invoke();  
  9.         } else {  
  10.             return "checkError";  
  11.         }  
  12.     }  
  13. }  


struts.xml文件中配置:

[html] view plain copy
  1. <package name="testLogin" namespace="/" extends="struts-default">  
  2.     <interceptors>  
  3.         <interceptor name="myInterceptor" class="MyInterceptor" />  
  4.         <!-- class="MyInterceptor"已在spring配置文件中配置bean -->  
  5.     </interceptors>  
  6.       
  7.     <action name="user" class="UserManagerAction">  
  8.         <result name="success">/user.jsp</result>  
  9.         <result name="error" type="redirect">/error.jsp</result>  
  10.         <result name="checkError">/checkSession.jsp</result>  
  11.         <interceptor-ref name="myInterceptor" />  
  12.         <interceptor-ref name="defaultStack" />  
  13.     </action>  
  14. </package>  

 

注意:action中,设置好自己的interceptor后,别忘了配置defaultStack拦截器。

defaultStack是Struts2默认的拦截器,帮助我们完成许多struts2提供的服务。

2.拦截链的配置

当一个action需要多个拦截器时,我们可以配置拦截链

[html] view plain copy
  1. <package name="testLogin" namespace="/" extends="struts-default">  
  2.     <interceptors>  
  3.         <interceptor name="myInterceptor" class="MyInterceptor" />  
  4.         <interceptor name="otherMyInterceptor" class="OtherMyInterceptor" />  
  5.         <!-- 已在spring的applicationContext-bean.xml中配置相关bean -->  
  6.           
  7.         <interceptor-stack name="defaultInterceptor">  
  8.             <interceptor-ref name="myInterceptor" />  
  9.             <interceptor-ref name="defaultStack" />  
  10.         </interceptor-stack>  
  11.           
  12.         <interceptor-stack name="otherDefaultInterceptor">  
  13.             <interceptor-ref name="otherMyInterceptor" />  
  14.             <interceptor-ref name="defaultStack" />  
  15.         </interceptor-stack>  
  16.     </interceptors>  
  17.       
  18.     <action name="user" class="UserManagerAction">  
  19.         <result name="success">/user.jsp</result>  
  20.         <result name="error" type="redirect">/error.jsp</result>  
  21.         <result name="checkError">/checkSession.jsp</result>  
  22.         <interceptor-ref name="otherDefaultInterceptor" />  
  23.     </action>  
  24. </package>  

3.设置默认拦截器/拦截链(普遍配置)

当多个action都需要配置相同的拦截器/拦截链时,考虑设置默认的拦截器/拦截链,则不用在每个action中依次配置了。

[html] view plain copy
  1. <package name="testLogin" namespace="/" extends="struts-default">  
  2.     <interceptors>  
  3.         <interceptor name="myInterceptor" class="MyInterceptor" />  
  4.         <interceptor name="otherMyInterceptor" class="OtherMyInterceptor" />  
  5.         <!-- 已在spring的applicationContext-bean.xml中配置相关bean -->  
  6.           
  7.         <interceptor-stack name="defaultInterceptor">  
  8.             <interceptor-ref name="myInterceptor" />  
  9.             <interceptor-ref name="defaultStack" />  
  10.         </interceptor-stack>  
  11.           
  12.         <interceptor-stack name="otherDefaultInterceptor">  
  13.             <interceptor-ref name="otherMyInterceptor" />  
  14.             <interceptor-ref name="defaultStack" />  
  15.         </interceptor-stack>  
  16.     </interceptors>  
  17.       
  18.     <default-interceptor-ref name="defaultInterceptor" />  
  19.       
  20.     <action name="user" class="UserManagerAction">  
  21.         <result name="success">/user.jsp</result>  
  22.         <result name="error" type="redirect">/error.jsp</result>  
  23.         <result name="checkError">/checkSession.jsp</result>  
  24.     </action>  
  25. </package>  

4.屏蔽默认拦截器/拦截链(特殊配置)

当所在package中设置了默认拦截器/拦截链,某些个别action需要特殊拦截器/拦截链时,单独在action中配置所需拦截器/拦截器,即可屏蔽默认拦截器/拦截链,执行单独设置的拦截器/拦截链。

[html] view plain copy
  1. <package name="testLogin" namespace="/" extends="struts-default">  
  2.     <interceptors>  
  3.         <interceptor name="myInterceptor" class="MyInterceptor" />  
  4.         <interceptor name="otherMyInterceptor" class="OtherMyInterceptor" />  
  5.         <!-- 已在spring的applicationContext-bean.xml中配置相关bean -->  
  6.           
  7.         <interceptor-stack name="defaultInterceptor">  
  8.             <interceptor-ref name="myInterceptor" />  
  9.             <interceptor-ref name="defaultStack" />  
  10.         </interceptor-stack>  
  11.           
  12.         <interceptor-stack name="otherDefaultInterceptor">  
  13.             <interceptor-ref name="otherMyInterceptor" />  
  14.             <interceptor-ref name="defaultStack" />  
  15.         </interceptor-stack>  
  16.     </interceptors>  
  17.       
  18.     <default-interceptor-ref name="defaultInterceptor" />  
  19.       
  20.     <action name="user" class="UserManagerAction">  
  21.         <result name="success">/user.jsp</result>  
  22.         <result name="error" type="redirect">/error.jsp</result>  
  23.         <result name="checkError">/checkSession.jsp</result>  
  24.         <interceptor-ref name="otherDefaultInterceptor" />  
  25.     </action>  
  26. </package>  

Struts2配置拦截器和拦截链

hibernate
  • linjingj
  • linjingj
  • 2013年07月29日 22:02
  • 1569

Spring整合Struts2中拦截链与注解的使用

在Spring,Hibernate,Struts2三大框架中,居于核心地位的是Spring框架,相对于其他两个框架来讲,Spring扮演一个管理者的角色,它通过注入的方式将struts2以及hiber...
  • a1314517love
  • a1314517love
  • 2013年11月20日 11:25
  • 3676

struts2自定义拦截器并配置拦截器使其生效

struts2自定义拦截器并配置拦截器使其生效
  • starjuly
  • starjuly
  • 2016年08月17日 23:29
  • 2790

struts2自定义拦截器配置心得

  • 2013年09月02日 17:38
  • 17KB
  • 下载

Struts2拦截器的使用(详解) ----全局配置

如何使用struts2拦截器,或者自定义拦截器。特别注意,在使用拦截器的时候,在Action里面必须最后一定要引用struts2自带的拦截器缺省堆栈defaultStack,如下(这里我是引用了str...
  • xiantingxinbuone
  • xiantingxinbuone
  • 2013年08月18日 19:13
  • 2204

struts2拦截器interceptor的三种配置方法

1、struts2拦截器interceptor的三种配置方法 方法1. 普通配置法 package name="struts2" extends="struts-def...
  • xyw591238
  • xyw591238
  • 2016年07月19日 10:45
  • 5423

配置struts2全局拦截器、全局变量

  • majian_1987
  • majian_1987
  • 2013年03月12日 14:13
  • 4186

Struts2拦截器Interceptor的原理与配置实例详解(十一)

(一)struts2拦截器 1.原理 Struts2拦截器的实现原理相对简单,当请求struts2的action时,Struts 2会查找配置文件,并根据其配置实例化相对的 拦截器对象,然后...
  • weixin_36279318
  • weixin_36279318
  • 2017年12月26日 20:42
  • 66

Struts2拦截器配置

1. 理解拦截器 1.1. 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是...
  • axin66ok
  • axin66ok
  • 2012年03月05日 16:24
  • 29697

struts2注解下的拦截器配置

貌似这个这问题已经纠结了半年了,网上找资料也不是很多。上周六调试通了。借CSDN mark一下吧。 一  、实现 1、 首先上拦截器部分的代码 public clas...
  • z69183787
  • z69183787
  • 2014年08月08日 15:50
  • 2784
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Struts2配置拦截器和拦截链
举报原因:
原因补充:

(最多只允许输入30个字)