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

  • 相关阅读:
    std thread
    windows更新包发布地址
    How to set up logging level for Spark application in IntelliJ IDEA?
    spark 错误 How to set heap size in spark within the Eclipse environment?
    hadoop 常用命令
    windows 安装hadoop 3.2.1
    windows JAVA_HOME 路径有空格,执行软连接
    day01MyBatisPlus条件构造器(04)
    day01MyBatisPlus的CRUD 接口(03)
    day01MyBatisPlus入门(02)
  • 原文地址:https://www.cnblogs.com/zhousiwei/p/10625839.html
Copyright © 2011-2022 走看看