zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    ESP8266简单几步建立服务器
    SVM推导
    标准的最大margin问题
    switch用法
    vecor预分配内存溢出2
    vector预分配空间溢出
    [面试编程题]算法基础-字符移位
    [面试编程题1]构造回文
    一天学完UFLDL
    神经网络中的XOR问题
  • 原文地址:https://www.cnblogs.com/57rongjielong/p/7846137.html
Copyright © 2011-2022 走看看