zoukankan      html  css  js  c++  java
  • Spring MVC(四)

    拦截器的定义

    (1)实现HandlerInterceptor接口或者继承HandlerInterceptor接口的实现类来定义
    (2)通过实现WebRequestInterceptor接口或者继承HandlerInterceptor接口的实现类来定义
    以实现HandlerInterceptor接口实现:

    public class TestInterceptor implements HandlerInterceptor {
        @Override
        public void afterCompletion(HttpServletRequest request,
                HttpServletResponse response, Object handler, Exception ex)
                throws Exception {
            System.out.println("该方法在控制器的处理请求方法执行完成后执行,即视图渲染结束后执行,可以通过此方法实现一些资源清理、记录日志信息等工作");
        }
        @Override
        public void postHandle(HttpServletRequest request,
                HttpServletResponse response, Object handler,
                ModelAndView modelAndView) throws Exception {
            System.out.println("该方法在控制器的处理请求方法调用之后、解析视图之前执行,可以通过此方法对请求域中的模型和视图做进一步的修改。");
        }
        @Override
        public boolean preHandle(HttpServletRequest request,
                HttpServletResponse response, Object handler) throws Exception {
            System.out.println("该方法在控制器的处理请求方法前执行,其返回值表示是否中断后续操作,返回 true 表示继续向下执行,返回 false 表示中断后续操作");
            return false;
        }
    }
    

    拦截器的配置

    <!-- 配置拦截器 -->
    <mvc:interceptors>
        <!-- 配置一个全局拦截器,拦截所有请求 -->
        <bean class="interceptor.TestInterceptor" /> 
        <mvc:interceptor>
            <!-- 配置拦截器作用的路径 -->
            <mvc:mapping path="/**" />
            <!-- 配置不需要拦截作用的路径 -->
            <mvc:exclude-mapping path="" />
            <!-- 定义<mvc:interceptor>元素中,表示匹配指定路径的请求才进行拦截 -->
            <bean class="interceptor.Interceptor1" />
        </mvc:interceptor>
        <mvc:interceptor>
            <!-- 配置拦截器作用的路径 -->
            <mvc:mapping path="/gotoTest" />
            <!-- 定义在<mvc: interceptor>元素中,表示匹配指定路径的请求才进行拦截 -->
            <bean class="interceptor.Interceptor2" />
        </mvc:interceptor>
    </mvc:interceptors>
    

    (1)/**表示拦截所有路径
    (2)mvc:exclude-mapping子元素进行配置不需要拦截的内容
    (3)必须按照<mvc:mapping.../>、<mvc:exclude-mapping.../>、<bean.../> 的顺序配置。

    多个拦截器

    如果是xml配置,则按配置顺序,先执行第一个的preHandle方法,再执行第二个的preHandle方法,往下是postHandle和afterCompletion方法。

  • 相关阅读:
    XCTF EasyHook
    [GXYCTF2019]simple CPP
    [BJDCTF2020]ZJCTF,不过如此
    Open_basedir绕过
    P2240 【深基12.例1】部分背包问题
    PHP深浅拷贝
    关于_tostring[php]的另类利用
    通用Mapper常用方法
    @GetMapping、@PostMapping和@RequestMapping的区别
    IDEA 下载依赖包的问题
  • 原文地址:https://www.cnblogs.com/heibaimao123/p/13801286.html
Copyright © 2011-2022 走看看