Spring mvc登录拦截器

自己实现的第一个Spring mvc登录拦截器

题目要求:拒绝未登录用户进入系统,只要发现用户未登录,则将用户请求转发到/login.do要求用户登录

实现步骤:

1.在spring的配置文件中添加登录拦截,如下:

spring-web.xml

<mvc:interceptors>
<!-- 配置登陆拦截器 -->
<mvc:interceptor>
<mvc:mapping path="/**"/> //拦截所有请求
<mvc:exclude-mapping path="/toLogin"/> //不拦截与登录相关的请求
<mvc:exclude-mapping path="/login"/>
<mvc:exclude-mapping path="/static/**"/>//不拦截静态
<bean class="com.hand.filter.LoginHandlerIntercepter"/>
</mvc:interceptor>
</mvc:interceptors>

注意:要使用mvc:exclude-mapping必须将xml文件的http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"改为http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"

2.实现拦截器

LoginHandlerIntercepter.java

public class LoginHandlerIntercepter implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
if (httpServletRequest.getSession().getAttribute("customer") != null) {
return true;
} else {
//没有登陆,转向登陆界面
httpServletRequest.getRequestDispatcher("/toLogin").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 {

}
}

小结:这个拦截器还有许多不完善的地方,但是大概思路就是这样

 

posted @ 2017-08-29 11:18  londa  阅读(210)  评论(0编辑  收藏  举报