• SpringMvc的拦截器


    1:写个自定义的拦截器。继承HandlerInterceptor

     1 package com.ssm.interceptor;
     2 
     3 import org.springframework.web.servlet.HandlerInterceptor;
     4 import org.springframework.web.servlet.ModelAndView;
     5 
     6 import javax.servlet.http.HttpServletRequest;
     7 import javax.servlet.http.HttpServletResponse;
     8 
     9 public class MyInterceptor implements HandlerInterceptor {
    10 
    11     /*
    12     执行时机:会先到拦截器的preHandle方法。
    13               这个方法是在目标方法前被执行。
    14     return true 正常执行。
    15     return false 如果是返回false的话,后续就不会执行了。
    16     作用:会在这个方法中来做权限。日志,事务等的操作。
    17      */
    18     public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
    19     System.out.println("拦截器的preHandle方法");
    20     return true;
    21 }
    22     /*
    23     执行时机:目标方法执行完,渲染视图前执行的这个方法。
    24     作用:用来请求域中的属性或视图做出修改。
    25      */
    26 public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
    27     System.out.println("拦截器的postHandle方法");
    28 }
    29     /*
    30     执行时机:渲染视图之后。
    31     作用:释放资源。
    32      */
    33 
    34 public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
    35     System.out.println("拦截器的afterCompletion方法");
    36 }
    37 }

    然后在spring-mvc的xml文件中配置上。也就是放到spring的IOC中。

    1 <mvc:interceptors>
    2         <mvc:interceptor>
    3             <!--在哪个路径下加上哪个拦截器-->
    4             <mvc:mapping path="/emps"/>
    5             <bean class="com.ssm.interceptor.SecondInterceptor"/>
    6         </mvc:interceptor>
    7     </mvc:interceptors>

    常用场景

    1、日志记录:记录请求信息的日志,以便进行信息监控、信息统计、计算PV(Page View)等。

    2、权限检查:如登录检测,进入处理器检测检测是否登录,如果没有直接返回到登录页面;

    3、性能监控:有时候系统在某段时间莫名其妙的慢,可以通过拦截器在进入处理器之前记录开始时间,在处理完后记录结束时间,从而得到该请求的处理时间(如果有反向代理,如apache可以自动记录);

    4、通用行为:读取cookie得到用户信息并将用户对象放入请求,从而方便后续流程使用,还有如提取Locale、Theme信息等,只要是多个处理器都需要的即可使用拦截器实现。

    多个拦截器的执行顺序:

    第一个拦截器return false:

      后面的都不会执行。

    第二个拦截器return false:

      

  • 相关阅读:
    vmware 网络连接
    【剑指offer】设置在最小数目的阵列
    动画语音输入和文字输入开关
    Qt 如何处理拖放应用程序参数时,中国
    C#
    dojo的TabContainer添加ContentPane假设closable,怎么不闭幕后予以销毁ContentPane
    剑指XX(游戏10)
    PHP的MySQL扩张:MySQL数据库概述
    所谓策略,我站在旁边看今天 神刻的样子O2O
    两个新事物
  • 原文地址:https://www.cnblogs.com/bulrush/p/8677624.html
Copyright © 2020-2023  润新知