1:是JavaWeb三大组件之一:
Servlet、Lisener(2个感知监听器不需要配置)、Filter
:2:过滤器
它会在一组资源(jsp、servlet、css、html等等)的前面执行!
它可以让请求达到目标资源,也可以不让请求达到!
*过滤器有拦截请求的能力!相当于小区中的保安
3:过滤器的写法
写一个类实现Filter接口
在web.xml中进行配置
4:Filter 接口
void init(FilterConfig)
创建后马上执行;Filter在服务器启动时就创建
void destory()
销毁之前执行!在关闭服务器之前销毁
void doFilter(ServletRequest,ServletResponse,FilterChain)
每次过滤时都会执行
Filter是单例的!即只能实例化一次
5:web.xml中的配置
<filter> <filter-name>AFilter</filter-name> <filter-class>filter.AFilter</filter-class> </filter> <filter-mapping> <filter-name>AFilter</filter-name>
//这里可以是/web/*;或者是/AServlet<url-pattern>/AServlet</url-pattern></filter-mapping>
6:代码
1)servletpackage servlet; import java.io.IOException; /** * Created by YuWenHui on 2017/4/8 0008. */ public class AServlet extends javax.servlet.http.HttpServlet { protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException { } protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException { System.out.println("AServlet....."); } }
2)filter
package filter; import javax.servlet.*; import java.io.IOException; /** * Created by YuWenHui on 2017/4/8 0008. */ public class AFilter implements Filter { public void destroy() { System.out.println("destroy。。。"); } public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException { System.out.println("doFilter。。。");
//这里将请求传递下去,如果不符合条件这另作处理 chain.doFilter(req, resp); } public void init(FilterConfig config) throws ServletException { System.out.println("init。。。"); } }
3)配置文件
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1"> <filter> <filter-name>AFilter</filter-name> <filter-class>filter.AFilter</filter-class> </filter> <filter-mapping> <filter-name>AFilter</filter-name> <url-pattern>/AServlet</url-pattern> </filter-mapping> <servlet> <servlet-name>AServlet</servlet-name> <servlet-class>servlet.AServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>AServlet</servlet-name> <url-pattern>/AServlet</url-pattern> </servlet-mapping> </web-app>