在进行页面访问的时候,我们不想没有登陆的用户,或者页面中session已经失效的用户去访问继续访问这个页面,这个时候可以使用拦截器。
在java中有一个接口叫做HandlerInterceptor,实现这个方法可以实现拦截请求的要求,拦截器主要有三个方法:preHandle (HttpServletRequest request, HttpServletResponse response, Object handle) 方法,postHandle (HttpServletRequest request, HttpServletResponse response, Object handle, ModelAndView modelAndView) 方法,afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handle, Exception ex) 方法。其中preHandle是在控制器方法执行前执行得,posthandle是在控制器方法执行之后触发的,而afterCompletion是在所有的流程执行过后触发的。
这里面和过滤器有写区别,过滤器是会对所有的请求进行拦截,而过滤器是对控制器方法的控制,如果你直接访问jsp页面这种动态的页面,那么过滤器不会拦截,这个时候我们可以将jsp页面放到web-inf目录下,解决这个问题。
那么过滤器如何配置,这有个例子:
过滤器类
import
最主要是在spring文件中进行配置
<!-- 注册拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/springmvc/login"/>
<mvc:exclude-mapping path="/js/**"/>
<mvc:exclude-mapping path="/images/**"/>
<mvc:exclude-mapping path="/style.css"/>
<bean class="com.lianxi.interceptor.MyInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
这里面的<mvc:exclude-mapping />标签是对静态资源进行放行,要不然就会导致页面没有格式。