1. 程式人生 > >如何自定義一個攔截器

如何自定義一個攔截器

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>