①定义拦截器
public class LoginInterceptor implements HandlerInterceptor {
}
②重写方法,在preHandle方法中实现状态校验
public class LoginInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//从session中获取用户名,判断是否存在
HttpSession session = request.getSession();
String username = (String) session.getAttribute("username");
if(StringUtils.isEmpty(username)){
//如果获取不到说明未登录 ,重定向跳转到登录页面
String contextPath = request.getServletContext().getContextPath();
response.sendRedirect(contextPath+"/static/login.html");
}else{
//如果获取到了,说明之前登录过。放行。
return true;
}
return false;
}
}
③配置拦截器
-
登录相关接口不应该拦截 静态资源不拦截
<mvc:interceptors>
<mvc:interceptor>
<!--要拦截的路径-->
<mvc:mapping path="/**"/>
<!--排除不拦截的路径-->
<mvc:exclude-mapping path="/static/**"></mvc:exclude-mapping>
<mvc:exclude-mapping path="/WEB-INF/page/**"></mvc:exclude-mapping>
<mvc:exclude-mapping path="/login"></mvc:exclude-mapping>
<bean class="com.leon.interceptor.LoginInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>