文章目录
一、Filter
1. 简介
Filter是对客户端访问资源的过滤,符合条件的放行,不符合条件的不放行,并且可以对目标资源访问前后进行逻辑处理的一个组件。
2. 过滤器的作用
Java过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器可以对请求进行修改、判断等,把不符合规则的请求在中途拦截或修改;也可以对响应进行过滤,拦截或修改响应。例如:修改响应体或是请求体的字符集。
二、快速入门
步骤:
- 使用Maven创建一个Web项目
- 导入javax.servlet-api依赖
- 编写一个过滤器继承Filter执行过滤操作
- 编写一个Servlet继承HttpServlet执行业务处理操作
- 在web.xml/注解中进行配置(配置servlet 和 filter )
CharsetFilter.java
public class CharsetFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("这里做一些初始化操作");
}
@Override
public void destroy() {
System.out.println("这里做一些过滤器被销毁前的操作");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("这里执行过滤请求");
//比如将请求的字符集改为utf-8
request.setCharacterEncoding("utf-8");
System.out.println(request.getCharacterEncoding());
//这里也可以设置响应体的相关参数
System.out.println(response.getCharacterEncoding());
//改后放行
chain.doFilter(request,response);
System.out.println("这里过滤响应");
System.out.println(response.getCharacterEncoding());
}
}
ServiceServlet.java
public class ServiceServlet extends HttpServlet {
@O