Struts2配置拦截器和拦截链

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>  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值