传智Struts2笔记(11)自定义拦截器

自定义拦截器

要自定义拦截器需要实现com.opensymphony.xwork2.interceptor.Interceptor接口:

Java代码
  1. public class PermissionInterceptor implements Interceptor {   
  2.    private static final long serialVersionUID = -5178310397732210602L;   
  3.    public void destroy() {   
  4.    }   
  5.    public void init() {   
  6.    }   
  7.    public String intercept(ActionInvocation invocation) throws Exception {   
  8.     System.out.println("进入拦截器");       
  9.     if(session里存在用户){   
  10.         String result = invocation.invoke();   
  11.     }else{   
  12.         return “logon”;   
  13.     }   
  14.     //System.out.println("返回值:"+ result);   
  15.     //return result;   
  16.     }   
  17. }  
public class PermissionInterceptor implements Interceptor {
   private static final long serialVersionUID = -5178310397732210602L;
   public void destroy() {
   }
   public void init() {
   }
   public String intercept(ActionInvocation invocation) throws Exception {
 	System.out.println("进入拦截器");	
	if(session里存在用户){
		String result = invocation.invoke();
	}else{
		return “logon”;
	}
	//System.out.println("返回值:"+ result);
	//return result;
    }
}


Xml代码
  1. <package name="itcast" namespace="/test" extends="struts-default">  
  2.     <interceptors>  
  3.              <interceptor name=“permission" class="cn.itcast.aop.PermissionInterceptor" />  
  4.              <interceptor-stack name="permissionStack">  
  5.          <interceptor-ref name="defaultStack" />  
  6.         <interceptor-ref name=" permission " />  
  7.               </interceptor-stack>  
  8.     </interceptors>  
  9.     <action name="helloworld_*" class="cn.itcast.action.HelloWorldAction" method="{1}">  
  10.         <result name="success">/WEB-INF/page/hello.jsp</result>  
  11.         <interceptor-ref name="permissionStack"/>  
  12.     </action>  
  13. </package>  


因为struts2中如文件上传,数据验证,封装请求参数到action等功能都是由系统默认的defaultStack中的拦截器实现的,所以我们定义的拦截器需要引用系统默认的defaultStack,这样应用才可以使用struts2框架提供的众多功能。
如果希望包下的所有action都使用自定义的拦截器,可以通过<default-interceptor-ref name=“permissionStack”/>把拦截器定义为默认拦截器。注意:每个包只能指定一个默认拦截器。另外,一旦我们为该包中的某个action显式指定了某个拦截器,则默认拦截器不会起作用。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值