package com.hg.ecommerce.interceptor; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; /** * <p> * 拦截器为开发者提供了3个时间点,以便介入一个请求的生命周期,在这期间,用户可以通过HttpServletResponse改变 * 响应的方式,这将改变request的原有生命周期,更重要的是,可以增加逻辑来对请求进行额外的控制 * </p> * <p> * 拦截器需要在XML配置文件中进行配置,可以使用java config避免,但是无法通过annotation来避免 * 详情见action-serlvet.xml * </p> * @author Li He * */ public class UserControlInterceptor extends HandlerInterceptorAdapter { private static Logger mLogger = LogManager.getLogger(UserControlInterceptor.class); /** * This implementation always returns {@code true}. */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { mLogger.trace("Pre Handle"); //want to revert the request, please modify return true to return false return true; } /** * This implementation is empty. */ @Override public void postHandle( HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { mLogger.trace("Post Handle"); } /** * This implementation is empty. */ @Override public void afterCompletion( HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { mLogger.trace("Already Complete!"); } }