
拦截器与过滤器的区别:拦截器只能拦截controller的请求,过滤器可以过滤所有请求
(1)实现HandlerInterceptor接口
在执行控制器中的方法之前执行preHandle()中的方法
package com.eu.weh.web; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView; import com.eu.weh.bean.User; /**
*
* @ClassName: LoginInterceptor
* @Description: 登录拦截器
* @author Administrator
* @date 2019年4月29日 上午10:31:25
*
*/
public class LoginInterceptor implements HandlerInterceptor { public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception { //判断当前用户是否已经登录
HttpSession session = request.getSession();
User loginUser = (User) session.getAttribute("dbUser");
if (loginUser == null) {
String path = session.getServletContext().getContextPath();
response.sendRedirect(path+"/login");
return false;
}else {
return true;
}
} public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception { } public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception { } }
(2)SpringMVC配置文件
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**" />
<mvc:exclude-mapping path="/login" />
<mvc:exclude-mapping path="/doAJAXlogin" />
<mvc:exclude-mapping path="/bootstrap/**" />
<mvc:exclude-mapping path="/css/**" />
<mvc:exclude-mapping path="/fonts/**" />
<mvc:exclude-mapping path="/img/**" />
<mvc:exclude-mapping path="/jquery/**" />
<mvc:exclude-mapping path="/layer/**" />
<mvc:exclude-mapping path="/script/**" />
<mvc:exclude-mapping path="/ztree/**" />
<bean class="com.eu.weh.web.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>