• 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 }
  • 相关阅读:
    Git更新或提交出错的解决办法
    webpack简单学习的入门教程
    CentOS源码安装QT
    后台程序在向tty/串口写数据的时候stop了
    Linux signal 处理
    Linux C 获取 文件的大小
    Microsoft Excel 标题栏或首行锁定
    Socket连接何时需要断开
    Windows MFC 打开文本
    动态库的生产和调用
  • 原文地址:https://www.cnblogs.com/57rongjielong/p/7846137.html
Copyright © 2020-2023  润新知