概念
对目标资源的请求和响应进行过滤截取。
在请求到达servlet之前,进行逻辑判断,判断是否放行到servlet;
也可以在一个响应response到达客户端之前进行过滤,判断是否允许返回客户端。
它是随你的 web应用启动而启动的,只初始化一次,以后就可以拦截相关请求。
只有当你的web应用停止或重新部署的时候才销毁。
注意:
同一个页面可以被多次过滤(设置多个过滤器)。
一个过滤器(过滤方法)也可以应用于多个页面。
Filter的使用方法:
首先要记得配置web.xml
//定义你的filter
<filter>
<filter-name>XXFilter(过滤器名)</filter-name>
<filter-class>包.文件名(中间用.连接)</filter-class>
</filter>
//定义你filter的拦截地址
<filter-mapping>
<filter-name>XXFilter(过滤器名-与上面的要一致)</filter-name>
<url-pattern>/main.jsp(要使用的界面)</url-pattern>
新建一个JAVA类,要实现Javax.serlvet.Filter这个接口。
public class LoginFilter implements Filter{
}
初始化和销毁一般不用管。
我们要对doFilter方法进行重写。
chain.doFilter(request,response)是放行的意思,可以到达下个servlet,未被拦截。
举例如下:
public void init(FilterConfig config) throws ServletException {
//初始化方法,一般不用管
}
public void destroy() {
//销毁方法,一般不用管
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
//对doFilter方法进行重写
System.out.println("到达Filter");
if(条件不符合){
System.out.println("成功拦截");
}else {
System.out.println("未拦截继续执行");
chain.doFilter(req, resp);
}
}