如何自定义一个拦截器

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Thinkingcao/article/details/84315814

1、自定义拦截器类,实现HandlerInterceptor接口,并重写抽象方法进行拦截器的拦截逻辑

// return  true表示放行,  return false表示拦截
public class Interceptor1 implements HandlerInterceptor{

	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
	
		log.info("preHandle:请求前调用");
        //返回 false 则请求中断
		//判断用户是否登陆  如果没有登陆  重定向到登陆页面   不放行   如果登陆了  就放行了
		String requestURI = request.getRequestURI();
		if(!requestURI.contains("/login")){
			String username = (String) request.getSession().getAttribute("USER_SESSION");
			if(null == username){
				response.sendRedirect(request.getContextPath() + "/login.action");
				return false;
			}
		}
		return true;
	}

	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3)
			throws Exception {
		
		log.info("postHandle:请求后调用");	
	}

	public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)
			throws Exception {
		 log.info("afterCompletion:请求调用完成后回调方法,即在视图渲染完成后回调");
	}

}

2、在springmvc配置文件中进行配置

       <!-- Springmvc的拦截器 -->
		<mvc:interceptors>
			<!-- 多个拦截器 -->
			<mvc:interceptor>
                 <!-- 对什么url路径进行拦截  /**代表对全路径拦截 -->
				<mvc:mapping path="/**"/>
				<!-- 自定义的拦截器类 -->
				<bean class="com.iss.springmvc.interceptor.Interceptor1"/>
			</mvc:interceptor>
		</mvc:interceptors>
 

猜你喜欢

转载自blog.csdn.net/Thinkingcao/article/details/84315814