1.什么是Filter?
Filter是javaweb三大组件之一,三大组件分别是Servlet程序,Listen监听器,filter过滤器,filter过滤器是一个接口,通过实现filter接口的dofilter()方法来拦截web请求,同时也可以过滤响应
2.Filter简单使用(判断账号密码是否正确)
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
//只有httpServletRequest类才有Session
if (httpServletRequest.getParameter("user").equals("admin")
&&httpServletRequest.getParameter("password").equals("123456"))
{
//用户名密码正常的情况下给予访问
filterChain.doFilter(servletRequest,servletResponse);//交给下一个过滤器或Servlet
}
else
{
servletResponse.getWriter().write("Error");
}
}
web.xml文件
<filter>
<filter-name>filter</filter-name>
<filter-class>filter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<!--
/* 拦截所有请求
/index.jsp 拦截指定文件
/*.jsp 拦截所有的jsp文件
/hello 拦截指定路径
-->
<url-pattern>/hello</url-pattern>
</filter-mapping>
3.Filter的生命周期(与Servlet的生命周期一样)
- 3.1 构造方法
- 3.2 init初始化方法
- 3.3 dofilter方法
- 3.4 destroy销毁方法
4.FilterConfig类(与servletConfig类似)
主要是获得filter的配置信息
5.Filter的执行顺序
-
5.1 执行顺序是根据web.xml的filter配置顺序
-
5.2 如果用注解的方式,则filter的执行顺序根据类名的字母顺序执行
比如 Afilter类比Bfilter类先执行 -
5.3 建议使用web.xml配置