注:需要导入jar包,请参考前面几篇文章进行下载

web.xml

<?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的名字,此处为FilterA-->
        <filter-name>FilterA</filter-name>
<!--        Filter的类,也就是所在位置,这里显示为Filter包下的FilterA-->
        <filter-class>Filter.FilterA</filter-class>
    </filter>
    <filter>
        <filter-name>FilterB</filter-name>
        <filter-class>Filter.FilterB</filter-class>
    </filter>
<!--    mapping映射设置开始-->
    <filter-mapping>
<!--        映射对象(name)FilterA-->
        <filter-name>FilterA</filter-name>
<!--        对谁拦截:/ServletA-->
        <url-pattern>/ServletA</url-pattern>
<!--        mapping映射设置结束-->
    </filter-mapping>
    <!--Filter过滤器访问先后顺序取决于代码的书写顺序-->
    <filter-mapping>
        <filter-name>FilterB</filter-name>
        <url-pattern>/ServletA</url-pattern>
    </filter-mapping>
    <servlet>
        <servlet-name>ServletA</servlet-name>
        <servlet-class>Servlet.ServletA</servlet-class>
    </servlet>
    <servlet-mapping>
<!--        servlet映射设置开始-->
<!--        servlet的名字:ServletA-->
        <servlet-name>ServletA</servlet-name>
<!--        虚拟路径:/Servlet,也就是通过这个路径才能访问到该Servlet-->
        <url-pattern>/ServletA</url-pattern>
    </servlet-mapping>

</web-app>

ServletA

package Servlet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class ServletA extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //response.setContentType("text/html;charset=UTF-8");//当过滤器存在,此行应加在过滤器中,在此处无效
        PrintWriter out=response.getWriter();
        out.print("Hello!<br>");
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }
}
/*
Filter的拦截响应及返回响应路径:
客户端         Filter          服务器
发送请求--->拦截并处理数据------->响应
返回响应<------处理数据<---------响应
 */

FilterA

package Filter;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class FilterA implements Filter {
    public void destroy() {
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        //强转为Http协议
        HttpServletResponse response=(HttpServletResponse)resp;
        //设置编码格式,仅在第一层过滤器设置即可
        response.setContentType("text/html;charset=UTF-8");

        PrintWriter out=resp.getWriter();
        out.print("Stop![My FilterA]<br>");
        chain.doFilter(req, resp);//放行
        out.print("Come Back![FilterA]<br>");
    }

    public void init(FilterConfig config) throws ServletException {

    }

}

FilterB

package Filter;

import javax.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;

public class FilterB implements Filter {
    public void destroy() {
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        PrintWriter out=resp.getWriter();
        out.print("Stop![My FilterB]<br>");
        chain.doFilter(req, resp);//放行
        out.print("Come Back![FilterB]<br>");
    }

    public void init(FilterConfig config) throws ServletException {

    }

}

项目打包下载

资源下载此资源下载价格为1摩拉,请先
博主Qq:2807306273