1.什么是filter?
过滤器实际上就是对web资源进行拦截,做一些处理后再交给下一个过滤器或servlet处理
通常都是用来拦截request进行处理的,也可以对返回的response进行拦截处理
大概流程图如下
2.简单实现filter
2.1 创建filter
public class FilterTest implements Filter {
//容器启动时便会执行该方法
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("初始化filter");
}
//该方法里面用于执行过滤操作
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
servletResponse.setContentType("text/html;charset=utf-8");
System.out.println("执行filter前...");
filterChain.doFilter(servletRequest,servletResponse); //放行,如果不写,程序会被拦截
System.out.println("执行filter后...");
}
//web服务器关闭,执行该方法
@Override
public void destroy() {
System.out.println("销毁filter");
}
}
2.2 创建测试要用的servlet类
ublic class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html"); //ajax异步请求为application/json格式
resp.setCharacterEncoding("utf-8");
PrintWriter out = resp.getWriter(); //响应流
out.print("执行HelloServlet的doGet方法");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
2.3 web.xml文件中配置servlet以及filter
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!--映射配置-->
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>servlets.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
<!--配置拦截器-->
<filter>
<filter-name>filter</filter-name>
<filter-class>servlets.FilterTest</filter-class>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/hello</url-pattern>
</filter-mapping>
</web-app>
2.4 运行结果
注:从运行结果上可以看到,在容器初始化时,便会初始化我们所配置好的filter
部分内容转载至:Java Web之过滤器(Filter)