过滤器和拦截器的区别:
1.
拦截器只能对action 请求起作用,而过滤器则可以对几乎所有的请求起作用
2.
过滤器是在请求进入容器后,但请求进入servlet之前进行预处理的。请求结束返回也是,是在servlet处理完后,返回给前端之前。
3. 过滤器的触发时机是容器后,servlet之前,所以过滤器的doFilter(
ServletRequest
request, ServletResponse response, FilterChain chain
)的入参是ServletRequest ,而不是httpservletrequest。因为过滤器是在httpservlet之前。
4.
配置拦截器
interceptor :
1.
新建一个 interceptor 拦截器包,创建一个 LoginInterceptor 拦截器类:
2.
将这个类,继承 HandlerInterceptor 接口,并实现 HandlerInterceptor 这个接口的三个方法:
3.
拦截器是要配置的,将这个类,配置在 spring-mvc.xml 的配置文件中,如下:
将登陆拦截器类 LoginInterceptor,配置到里面这个拦截器有2个知识要点:
①:
<mvc:mapping path="/**"/> 是已经拦截了所有请求,包括登录,如果后来想不拦截某个页面,就在拦截配置里面配置:
<mvc:exclude-mapping
path="/system/login" />
②:也可以不在配置文件里拦截某个页面请求,在拦截类里面获取拦截路径,然后做个判断
配置过滤器filter:
过滤器就分两步:新建过滤器类,接着配置web.xml
1.
建一个LoginFilter 类,继承 Filter 类: import javax.servlet.filter
2.
配置 web.xml ,在字符过滤器下面接着配置一个过滤器