<!-- Test public validation interceptor --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/crm/**"/> <mvc:exclude-mapping path="*/crm/resource/download,*/crm/home/homeInit"/> <bean class="com.test.interceptor.DemoInterceptor"/> </mvc:interceptor> </mvc:interceptors>
import java.io.PrintWriter; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; import com.alibaba.fastjson.JSONObject; import com.test.exception.DemoValidateException; import com.test.common.PublicResponse; import com.test.bean.UserInfo; import com.test.service.CrmService; /** * Test public validation interceptor */ public class DemoInterceptor extends HandlerInterceptorAdapter { private static final Log logger = LogFactory.getLog(DemoInterceptor.class); @Autowired private CrmService crmService; /** * Called before the business handler processes the request */ @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { PrintWriter out=null; String logStr="DemoInterceptor.preHandle..."; logger.info(logStr+"Interceptor preHandle method"); try{ UserInfo userInfo=crmService.validateMethod(request); logger.info(logStr+String.format("拦截校验通过:token=%s, servletPath=%s, uri=%s, url=%s", request.getHeader("TOKEN_KEY_NAME_DEMO"),request.getServletPath(),request.getRequestURI(),request.getRequestURL())); /* print result: token=CEEADEC1C6591A84E08DCE54136608BC3, servletPath=, //Can't get it uri=/crm/stu/init, url=http://192.168.12.100:9898/crm/stu/init */ request.setAttribute("CRM_REQUEST_USERINFO_DEMO", userInfo); return true; }catch(DemoValidateException e){ logger.error(logStr+"Public check exception"); PublicResponse rsp=new PublicResponse(); rsp.setRspCode(e.getCode()); rsp.setRspMsg(e.getMessage()); response.setContentType("application/json"); response.setCharacterEncoding("UTF-8"); out = response.getWriter(); out.print(JSONObject.toJSONString(rsp)); logger.info(logStr+String.format("Intercept verification failed: token=%s, rsp=%s", request.getHeader("TOKEN_KEY_NAME_DEMO"),JSONObject.toJSONString(rsp))); out.flush(); }finally { if(null!=out){ out.close(); } } return false; } /** * Executed before the view is generated after the business processor processes the request */ @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { String logStr="DemoInterceptor.postHandle..."; logger.info(logStr+"Interceptor postHandle method"); super.postHandle(request, response, handler, modelAndView); } /** * Called after the DispatcherServlet has completely processed the request and can be used to clean up resources */ @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { super.afterCompletion(request, response, handler, ex); } /** * Process asynchronous requests (this method will be triggered when there is an asynchronous request method in the Controller) */ @Override public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { super.afterConcurrentHandlingStarted(request, response, handler); } }
@RequestMapping(value = "/stu/init", method = RequestMethod.GET) @ResponseBody public PublicResponse testControllerMethod(final HttpServletRequest request, final HttpServletResponse response){ PublicResponse rsp=new PublicResponse(); //add code here try{ //Get UserInfo from the request from the interceptor UserInfo stu=(UserInfo)request.getAttribute("CRM_REQUEST_USERINFO_DEMO"); logger.info(logStr+"测试stu="+stu.toString()); }catch(Exception e){ e.printStackTrace (); logger.error("Interface exception"); } logger.info("Interface response rsp="+rsp.toString()); return rsp; }
Reference blog:
-- Notes on using Interceptor and Filter in SpringMvchttps :
//www.cnblogs.com/FlyHeLanMan/p/6640941.html