zoukankan      html  css  js  c++  java
  • Spring MVC框架:第十章:拦截器

    拦截器

    拦截器最典型的用法是检查用户是否登录,登录后可以执行目标handler方法,未登录则跳转到登录页面。这样的操作要是在每个拦截器内部来写就太麻烦了,统一提取到拦截器中是明智之举。
    1.HandlerInterceptor接口
    ①preHandle()方法

    签名:boolean preHandle(HttpServletRequest, HttpServletResponse, Object) 在执行目标handler方法之前执行,如果返回true,则继续执行后续拦截器和目标handler方法;如果返回false则不执行。注意:返回false时最好借助转发或重定向等方式为客户端提供一个响应页面。
    ②postHandle()方法

    签名:void postHandle(HttpServletRequest, HttpServletResponse, Object, ModelAndView) 在执行目标handler方法之后、渲染视图之前执行。
    ③afterCompletion()方法

    在渲染视图之后、返回响应之前执行。
    2.HandlerInterceptorAdapter类

    实现HandlerInterceptor接口需要把所有抽象方法都实现,而继承HandlerInterceptorAdapter类则可以有选择的重写需要的方法,更加便捷,推荐使用。

    在这里插入图片描述

    3.配置方式
    ①拦截所有请求

    <mvc:interceptors>
        <bean class="com.interceptor.FirstInterceptor"/>
        <bean class="com.interceptor.SecondInterceptor"/>
    </mvc:interceptors>
    

    ②精确指定拦截的请求

    <mvc:interceptors>
        <bean class="com.interceptor.FirstInterceptor"/>
        <bean class="com.interceptor.SecondInterceptor"/>
        <mvc:interceptor>
            <mvc:mapping path="/*"/>
            <mvc:exclude-mapping path="/specailPath"/>
            <bean class="com.interceptor.SpecialInterceptor"/>
        </mvc:interceptor>
    </mvc:interceptors>
    

    4.多个拦截器的执行顺序

    ①按正序依次调用preHandle()方法 ②执行目标handler方法 ③按反序调用postHandle()方法 ④按反序调用afterCompletion()方法

  • 相关阅读:
    第五章:javascript:队列
    第四章:javascript: 栈
    第三章:javascript: 列表
    第二章:javascript: 数组
    第一章:javascript: 数据结构与算法
    第十三章 动画引擎
    第十二章:异步处理
    第十一章:事件系统
    第十章:属性模块
    第九章:样式模块
  • 原文地址:https://www.cnblogs.com/javawxid/p/12812066.html
Copyright © 2011-2022 走看看