标签:err rect extends apt 跳转 目录 false gets 执行
拦截器的目的就是:用户所属的session不存在后进行对控制器请求的拦截,使跳转到首页或者登陆页面。
1、首先在web.xml中配置dispatcher-servlet.xml 。代码中对应的<servlet-name>中的dispatcher 映射的就是dispatcher-servlet.xml文件
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- springmvc 请求后缀 -->
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>*.do</url-pattern><!-- 拦截所有以.do结尾的请求,交于DispatcherServlet处理 -->
</servlet-mapping>
2、在dispatcher-servlet.xml 文件中配置拦截器需要拦截的目录,其中处理拦截的具体实现类的在第三步新建,对应的包路径需要修改。
<!-- 配置拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<!-- 拦截器拦截的URL格式 -->
<mvc:mapping path="/*.do" />
<!-- 拦截器不拦截的controller -->
<mvc:exclude-mapping path="/toLogin.do"/>
<mvc:exclude-mapping path="/login.do"/>
<!-- 处理拦截的具体实现类 -->
<bean class="com.springmvc.interceptor.LoginInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
3、新建拦截器具体实现类,注意拦截器的具体实现类继承自类HandlerInterceptorAdapter。
preHandle->postHandle->afterCompletion,这三个方法是依次执行的
public class LoginInterceptor extends HandlerInterceptorAdapter {
// 继承HandlerInterceptorAdapter类
// 重写 preHandle()方法,在业务处理器处理请求之前对该请求进行拦截处理
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
UserModal user = (UserModal) request.getSession().getAttribute("userInfo");
if(user == null){
response.sendRedirect("/toLogin.do");
return false;
}
return true;
}
@Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object o, ModelAndView mav)
throws Exception {
System.out.println("----------postHandle");
}
@Override
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object o, Exception excptn)
throws Exception {
}
}
4、拦截器的基本配置基本配置完成,然后自己写个简单的controller和jsp登录映射验证即可。
标签:err rect extends apt 跳转 目录 false gets 执行
原文地址:http://www.cnblogs.com/hongwei-jia/p/6740076.html