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方法。

  • 相关阅读:
    策略模式 Web.Net版 [原理+代码] 鸭子呱呱叫
    关于onMouseOut违背逻辑关系的解决办法!
    js漂浮组件发布 ppFloat.js.1.0
    (转)跟我一起制作数据采集获取淘宝网店宝贝数据信息(二)
    (转)WCF学习笔记(一)——WCF基础
    (转)IIS负载均衡Application Request Route详解第一篇: ARR介绍
    (转)【原创】说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
    (转)HTTP与Tcp协议下双工通信的差异
    (转)一个仿新浪微博的网站 mvc ado
    (转)微软开源的项目和架构学习
  • 原文地址:https://www.cnblogs.com/heibaimao123/p/13801286.html
Copyright © 2011-2022 走看看