码迷,mamicode.com
首页 > 编程语言 > 详细

spring方法拦截实例

时间:2017-07-01 19:25:49      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:exec   通配符   runtime   自定义   interface   poi   exe   ping   throw   

 使用到spring方法拦截器 MethodInterceptor实现权限控制,MethodInterceptor可以使用通配符,并且是基于注解的。

简单例子代码如下:

1、定义需要拦截的类

 

 

Java代码  技术分享
  1. public class LoginAction{  
  2.      
  3.     //没有权限限制  
  4.     @RequestMapping(value = "/login")  
  5.     public void login(HttpServletRequest req, HttpServletResponse res) {  
  6.            //登录功能.  
  7.    }  
  8.   
  9.    //需要登录完成后才可访问  
  10.    @LoginMethod  
  11.    @RequestMapping(value = "/userList")  
  12.     public void userList(HttpServletRequest req, HttpServletResponse res) {  
  13.            //获取用户列表  
  14.    }  
  15.   
  16. }  

 注意上面的@LoginMethod是我自定义的注解

 

 

2、定义LoginMethod注解

Java代码  技术分享
  1. @Target(ElementType.METHOD)   //方法
  2. @Retention(RetentionPolicy.RUNTIME)    // 注解会在class字节码文件中存在,在运行时可以通过反射获取到
  3. public @interface LoginMethod {  
  4.      
  5. }  

3、定义MethodInterceptor拦截器

Java代码  技术分享
  1. public class SystemMethodInterceptor implements MethodInterceptor {  
  2.     @Override  
  3.     public Object invoke(MethodInvocation methodInvocation) throws Throwable {         
  4.         Method method = methodInvocation.getMethod();     
  5.         if(method.isAnnotationPresent(LoginMethod.class)){//加了@LoginMethod注解,被拦截  
  6.              User user = sessionUtil.getCurrUser();  
  7.              if(user == null){//未登录  
  8.                  //proceed方法不调用,方法被拦截  
  9.                  return null;  
  10.              }else{  
  11.                  return methodInvocation.proceed();//该方法不调用,则被拦截的方法不会被执行  
  12.              }  
  13.         }else{  
  14.             return methodInvocation.proceed();  
  15.         }  
  16.     }  
  17. }  

 

4、配置文

Xml代码  技术分享
  1. <bean id="systemMethodInterceptor" class="com.tzz.interceptor.SystemMethodInterceptor" >  
  2. </bean>  
  3. <aop:config>   
  4. <!--切入点-->   
  5.  <aop:pointcut id="methodPoint" expression="execution(* com.tzz.controllor.web.*.*(..)) "/><!--在该切入点使用自定义拦截器-->   
  6. <aop:advisor pointcut-ref="methodPoint" advice-ref="systemMethodInterceptor"/>  
  7. </aop:config>   

spring方法拦截实例

标签:exec   通配符   runtime   自定义   interface   poi   exe   ping   throw   

原文地址:http://www.cnblogs.com/canghaihongxin/p/7102986.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!