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 就是你自定义的拦截器了

  • 相关阅读:
    数据库的接口
    BionicThe README from the bionic/libc
    发现问题——创新的原动力
    使用ADO或ADO控件访问数据库
    游标、事务并发和锁三者之间的那点事
    处女座——菜鸟程序员的工程总结
    数据库的基础知识以及创建数据库
    《Team Geek》前言(中文,自己翻译的)
    万里长征,始于足下——菜鸟程序员的学习总结(一)
    与RMAN相关的动态性能视图
  • 原文地址:https://www.cnblogs.com/zhousiwei/p/10625744.html
Copyright © 2011-2022 走看看