亲测,废话不多说直接上代码:
首先,在springmvc配置文件中配置拦截器,如下所示:
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**" /> <bean class="com.megamind.sys.interceptor.LoginInterceptor"> <property name="exceptUrls"> <list> <value>/user/login</value> <value>/user/userReg</value> <value>/user/login</value> <value>/user/freeTrial</value> </list> </property> </bean> </mvc:interceptor> </mvc:interceptors>这里需要注意的是“property”的name“exceptUrls”必须与你拦截器中的变量保持一致;
然后创建拦截器,如下所示:
public class LoginInterceptor extends HandlerInterceptorAdapter { private List<String> exceptUrls; public List<String> getExceptUrls() { return exceptUrls; } public void setExceptUrls(List<String> exceptUrls) { this.exceptUrls = exceptUrls; } @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { String requestUri = request.getRequestURI(); if (requestUri.startsWith(request.getContextPath())) { requestUri = requestUri.substring(request.getContextPath().length(), requestUri.length()); } //系统根目录 if (StringUtils.equals("/", requestUri)) { return true; } //放行exceptUrls中配置的url for (String url : exceptUrls){ if (url.endsWith("/**")) { if (requestUri.startsWith(url.substring(0, url.length() - 3))) { return true; } } else if (requestUri.startsWith(url)) { return true; } } return false; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { } }这样就可以实现拦截你想要拦截的请求了;