zoukankan      html  css  js  c++  java
  • SpringMVC拦截器

    编写拦截器

    package com.platform.interceptor;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    /**
     * 测试SpringMVC拦截器
     * 
     * @author Joey
     * @project:copyright_platform
     * @date:2017年4月27日
     * 
     */
    public class TestInterceptor implements HandlerInterceptor {
    
        private Logger logger = LoggerFactory.getLogger(getClass());
    
        /**
         * 在业务处理器处理请求之前被调用 如果返回false 从当前的拦截器往回执行所有拦截器的afterCompletion(),再退出拦截器链
         * 
         * 如果返回true 执行下一个拦截器,直到所有的拦截器都执行完毕 再执行被拦截的Controller 然后进入拦截器链,
         * 从最后一个拦截器往回执行所有的postHandle() 接着再从最后一个拦截器往回执行所有的afterCompletion()
         */
        @Override
        public boolean preHandle(HttpServletRequest request,
                HttpServletResponse response, Object handler) throws Exception {
            logger.info("==============执行顺序: 1、preHandle================");
            String url = request.getRequestURL().toString();
            if (url.matches("admim/login")) {
                request.getRequestDispatcher("/admin/login.html").forward(request,
                        response);
                return false;
            }
            return true;
        }
    
        /**
         * 在业务处理器处理请求执行完成后,生成视图之前执行的动作
         */
        @Override
        public void postHandle(HttpServletRequest request,
                HttpServletResponse response, Object handler,
                ModelAndView modelAndView) throws Exception {
            logger.info("==============执行顺序: 2、postHandle================");
        }
    
        /**
         * 在DispatcherServlet完全处理完请求后被调用
         * 
         * 当有拦截器抛出异常时,会从当前拦截器往回执行所有的拦截器的afterCompletion()
         */
        @Override
        public void afterCompletion(HttpServletRequest request,
                HttpServletResponse response, Object handler, Exception ex)
                throws Exception {
            logger.info("==============执行顺序: 3、afterCompletion================");
        }
    
    }
    

    简单的就是进行日志的一个打印功能!

    可以自己实现想要的功能

    SpringMVC的配置文件:

    <!-- 在实际开发中通常都需配置 mvc:annotation-driven标签,这个标签是开启注解 -->  
    <mvc:annotation-driven></mvc:annotation-driven>  
    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/admin/**" />
            <mvc:exclude-mapping path="admin/sys/login" />
            <bean class="com.platform.interceptor.TestInterceptor" />
        </mvc:interceptor>
    </mvc:interceptors>
    

    mvc:mapping是你要映射的拦截路径 可以有多个
    mvc:exclude-mapping 是你排除映射的拦截路径,也可以有多个
    下面那个bean 就是你自定义的拦截器了

  • 相关阅读:
    记录。短信网关.
    TP 笔记~
    FUCK IE FLASH(inline hook)
    API HOOK(MessageBoxA)
    inline hook MessageBox(2)
    c#线程中使用 dataset
    匈牙利算法解决二分图最大匹配
    C#:Array类的排序
    C#:属性
    C#:结构
  • 原文地址:https://www.cnblogs.com/zhousiwei/p/10625744.html
Copyright © 2011-2022 走看看