springmvc 登录拦截
用到拦截器: HandlerInterceptor
首先在spring-mvc.xml中配置
<!--拦截器-->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/> <!--表示拦截所有请求-->
<bean class="com.car.Interceptor.LoginInterceptor"></bean> <!--拦截器类-->
</mvc:interceptor>
</mvc:interceptors>
创建一个拦截器类实现HandlerInterceptor接口, 目前只需要在preHandle方法中实现代码即可 ,返回true表示可通过拦截器的请求
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse, Object o) throws Exception {
//获取请求的url
StringBuffer url = httpServletRequest.getRequestURL();
//若是公开地址则允许通过
if (url.toString().indexOf("login") >= 0){
return true;
}
//获取session内容,若不存在身份信息则不允许访问
UserInfo userInfo = (UserInfo) httpServletRequest.getSession().getAttribute("userInfo");
if (userInfo != null){
return true;
}
httpServletRequest.getRequestDispatcher("/admin/login")
.forward(httpServletRequest, httpServletResponse);
return false;
}
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
}
}
这样当用户登录成功后,session中存在userInfo这个值, 表示用户已经登录过可以访问自己主页的内容, 若session中不存在则重新回退到登录界面
还没有评论,来说两句吧...