1.创建拦截器
public class MyIntercept implements HandlerInterceptor { @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { System.out.println("MyIntercept.afterCompletion()"); } @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { System.out.println("MyIntercept.postHandle()"); } @Override public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception { System.out.println("MyIntercept.preHandle()"); return true; } }
2.配置applicationContext.xml
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**" /> <bean class="cn.cnsdhzzl.intercept.MyIntercept"> </bean> </mvc:interceptor> </mvc:interceptors>
访问效果
2. 设置不拦截方法1
设置不拦截器路径
<mvc:exclude-mapping path="/user/login"/>
<mvc:interceptors> <bean class="com.elin4it.ssm.interceptor.DataInterceptor"/> <mvc:interceptor> <mvc:mapping path="/**"/> <mvc:exclude-mapping path="/user/login"/> <bean class="cn.xxx.xxx.interceptor.DataInterceptor"/> </mvc:interceptor> </mvc:interceptors>
3. 设置不拦截方法2
在拦截器里注入一个属性List<String> exceptUrls
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**"/> <bean class="cn.rhgk.yqfy.oa.intercept.LoginIntercept"> <property name="exceptUrls"> <list> <value>/login/auth</value> <value>/login/exit</value> </list> </property> </bean> </mvc:interceptor> </mvc:interceptors>
package cn.rhgk.yqfy.oa.intercept; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.lang.StringUtils; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView; import cn.rhgk.yqfy.oa.pojo.AppAdminLogin; public class LoginIntercept implements HandlerInterceptor { private List<String> exceptUrls; public List<String> getExceptUrls() { return exceptUrls; } public void setExceptUrls(List<String> exceptUrls) { this.exceptUrls = exceptUrls; } @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { } @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { } @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; } } HttpSession session = request.getSession(); AppAdminLogin user = (AppAdminLogin) session.getAttribute("userInfo"); if (null != user) {// 已登陆 return true; } else {// 当前用户未登陆 response.sendRedirect(request.getContextPath() + "/login/auth"); } return false; } }