spring拦截器

Posted 57容杰龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring拦截器相关的知识,希望对你有一定的参考价值。

1.spring拦截器,类似servlet的过滤器,用于处理相同或相似逻辑。

2.使用场景:权限控制、日志记录、性能监控

3.用法:(注意:转发不会拦截 )

A.添加依赖spring-context、spring-mvc

B.配置web.xml使用spring-mvc的restful风格

C.配置spring xml文件

  注意:使用restful风格导致静态资源访问受限

  <mvc:resources location="/javascript/" mapping="/js/**"></mvc:resources>

    <!-- 拦截器处理功能  可以多个拦截器配置 按顺序-->
    <mvc:interceptors>
        <mvc:interceptor>
                <!-- 设置哪些请求要拦截    /**拦截所有请求-->
            <mvc:mapping path="/**"/>
        <!-- 设置不拦截的请求 -->
            <mvc:exclude-mapping path="/user/toLogin"/>
            <mvc:exclude-mapping path="/user/login"/>    
            <!-- 使用哪个拦截器做拦截逻辑 -->
            <bean class="com.rong.intercepter.LoginIntercepter"></bean>
        </mvc:interceptor>
    
    </mvc:interceptors>

 

D.编写Controller

E.实现拦截器

 

 1 /**
 2  * spring拦截器实现:
 3  * 1.实现拦截器接口HandlerInterceptor或拦截器抽象类
 4  * 2.在拦截器的preHandle方法上实现拦截逻辑
 5  * @author Administrator
 6  *
 7  */
 8 public class LoginIntercepter implements HandlerInterceptor{
 9 
10     /**
11      * 请求到达Controller处理器之前执行,如果该方法返回true,则可以继续调用后续拦截器或者执行Controller的方法
12      * 如果方法返回false则不会执行后续处理
13      */
14     @Override
15     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
16             throws Exception {
17         // TODO Auto-generated method stub
18         User user = (User) request.getSession().getAttribute("user");
19         if(user!=null){
20             return true;//放行
21         }
22         //如果没有登录,则跳转回登录页
23         response.sendRedirect("/user/toLogin");
24         return false;
25     }
26 
27     /**
28      * 请求到Controller,执行完Controller的方法后,渲染视图之前调用
29      */
30     @Override
31     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
32             ModelAndView modelAndView) throws Exception {
33         
34     }
35 
36     /**
37      * 视图渲染完成后调用
38      */
39     @Override
40     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
41             throws Exception {
42         
43     }
44 
45 }

 

以上是关于spring拦截器的主要内容,如果未能解决你的问题,请参考以下文章

spring---transaction---源代码分析(事务的拦截器TransactionInterceptor)

Spring aop 拦截不到Dao

spring方法拦截实例

spring-bootspring-boot项目中,通过thymleaf实现登录功能,这里是一个登录拦截器的参考代码

spring-boot 拦截器不拦截

spring事物源码分析篇三:业务代码的执行--事物增强器