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

  • 相关阅读:
    (原创,呕心历血之作,强烈推荐)新旧库数据字典比较脚本
    MS SQL Server2k字符串分拆与合并处理代码
    20061021个人日志(关于在VS2005环境下无法从源视图切换到设计视图的解决方案)
    我设计的花销流水帐的数据库结构 荣
    Oracle中创建表,创建序列,创建自增字段,添加注释, 添加记录,添加触发器,提交 荣
    用例与用例描述 荣
    计算经纬度距离 荣
    我的第一个C++程序 荣
    以较少代码实现DataGrid的排序,翻页,删除等功能(续) 荣
    我的BREW代码 荣
  • 原文地址:https://www.cnblogs.com/zhousiwei/p/10625744.html
Copyright © 2020-2023  润新知