Filter概念
web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦载下来,完成一些特殊的功能。
过滤器的作用
一般用于完成通用的操作。如:权限设置、登录验证、统一编码处理、敏感字符过滤等。
过滤器的创建步骤
①定义一个类,实现接口Filter
②复写方法
③配置拦截路径
package filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
/**
* Servlet Filter implementation class Filter_one
*/
@WebFilter("/*")
public class Filter_one implements Filter {
/**
* Default constructor.
*/
public Filter_one() {
// TODO Auto-generated constructor stub
}
/**
* @see Filter#destroy()
*/
public void destroy() {
// TODO Auto-generated method stub
}
/**
* @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
*/
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
// TODO Auto-generated method stub
System.out.println("dofilter");// place your code here
// pass the request along the filter chain
chain.doFilter(request, response);
System.out.println("pass");
}
/**
* @see Filter#init(FilterConfig)
*/
public void init(FilterConfig fConfig) throws ServletException {
// TODO Auto-generated method stub
}
}
过滤器配置
第一种方法(注释法):
在导入包代码下方直接添加
@WebFilter("/*")
第二种方法(web.xml):
在web.xml文件中添加
<filter>
<filter-name>Filter_one</filter-name>
<filter-class>filter.Filter_one</filter-class>
</filter>
<filter-mapping>
<filter-name>Filter_one</filter-name>
<url-pattern>/index.jsp</url-pattern>//拦截路径,根据情况设置
</filter-mapping>
过滤器执行流程与生命周期
1.init:在服务器后动后,会创建Filter对象,然后调用init方法,只执行一次,用于加载资源。
2.doFilter:每一次请求被拦截资源时,会执行,且执行多次
3.destroy:在服务器关闭后,Flter对象被销毁,如果服务器是正常关闭,则会执行destroy方法,只执行一次,用于释放资源。
过滤器拦截路径配置
①具体资源路径:/index.jsp只有访问index.jsp资源时,过滤器才会被执行
②拦截目录:/user/访问/user下的所有资源时,过滤器都会被执行
③后缀名拦酸:.jsp访问所有后缀名为jsp资源时,过滤器都会被执行
④拦截所有资源:/*访问所有资源时,过滤器都会被执行
过滤器拦截方式配置
注解配置:
设置dispatcherTypes属性
①REQUEST:默认值,浏览器直接请求资源
//浏览器直接请求资源时,该过滤器会被执行
@WebFilter(value="/*",dispatcherTypes =DispatcherType.REQUEST)
②FORWARD:转发访问资源
③INCLUDE:包含访问资源
④ERROR:错误跳转资源
⑤ASYNC:异步访问资源