zoukankan      html  css  js  c++  java
  • <SpringMvc>入门七 拦截器

    什么是拦截器

    1.SpringMVC框架中的拦截器用于 对处理器 进行预处理和后处理的技术。

    2.可以定义拦截器链,按照顺序执行。

    3.拦截器和过滤器功能类似,区别在

    拦截器 过滤器
    过滤器是Servlet规范的一部分,任何框架都可以使用过滤技术。 而拦截器是SpringMVC框架独有的
    过滤器配置了/*,可以拦截任何资源 拦截器只对controller中的方法进行拦截

    4.拦截器也是AOP思想的一种实现方式

    5.想要定义拦截器,需要实现HandlerInterceptor接口

    怎么使用拦截器

    1.编写拦截类 实现HandlerInterceptor

    2.配置拦截器

    package org.maple.interceptor;
    
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * @author mapleins
     * @Date 2018-12-18 16:47
     * @Desc 自定义拦截器
     **/
    public class MyInterceptor implements HandlerInterceptor {
    
        /**
         * 预处理,controller方法执行前
         * @return true表示放行,执行下一个拦截器,如果没有,就执行controller方法
         *          false表示不放行,通过servletAPI跳转到其他页面中
         */
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
            System.out.println("拦截器执行了...前");
            return true;
        }
    
        /**
         * controller执行之后,jsp执行之前
         * 如果在这里面配置了页面跳转,就不会跳转到之前controller配置的视图页面里了
         *         request.getRequestDispatcher().forward();
         */
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
            System.out.println("拦截器执行了...后");
        }
    
        /**
         * 在页面执行后再执行
         */
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
            System.out.println("拦截器执行了...在页面执行后执行");
        }
    }
        <!--配置拦截器-->
        <mvc:interceptors>
            <mvc:interceptor>
                <!--要拦截的具体方法-->
                <mvc:mapping path="/interceptor/*"/>
                <!--不要拦截的方法-->
                <!--<mvc:exclude-mapping path=""/>-->
                <!--配置拦截器对象-->
                <bean class="org.maple.interceptor.MyInterceptor"/>
            </mvc:interceptor>
        </mvc:interceptors>
  • 相关阅读:
    mysql关联更新表
    List Slider
    mysql同步复制报Slave can not handle replication events with the checksum that master 错误
    ie11 .pac代理脚本无法使用的问题2
    centos6.5安装配置nginx+php+mysql+httpsqs+ttserver+redis
    Linux 磁盘坏道检测和修复
    ie11 .pac代理脚本无法使用的问题
    javascript取前n天的日期两种方法
    javascript位操作符右移>>>的妙用
    Angular表单验证
  • 原文地址:https://www.cnblogs.com/mapleins/p/10138756.html
Copyright © 2011-2022 走看看