Java——Filter过滤器的简介
一、Filter:简介
目标
- 了解过滤器的作用
讲解
1. 什么是过滤器
- Filter:是Servlet规范提供的一项技术,是一个接口:
javax.servlet.Filter。- Servlet规范提供了三项技术:
- Servlet技术
- Filter技术
- Listener技术
- Servlet规范提供了三项技术:
- 作用:可以在请求到达目标资源之前,先拦截下来进行预处理;还可以在目标资源返回响应之前,处理响应之后,再放行到客户端
2. 过滤器的使用场景
- 敏感词过滤
- 统一乱码解决
- IP黑名单
- 权限过滤
小结
二、Filter:入门【重点】
目标
- 能够编写Filter【重点】
- 理解Filter的运行原理
讲解
1. 步骤
复习Servlet入门步骤:
- 创建Java类,实现Servlet接口
- 重写接口的方法。共5个方法,了解3个,重点service方法
- 在类上加注解@WebServlet,配置这个Servlet的访问路径
创建一个Filter的步骤:
- 创建Java类,实现
javax.servlet.Filter接口 - 重写接口的方法。Filter接口共3个方法,重点关注doFilter方法
- 在类上加注解@WebFilter,配置Filter拦截范围
2. 示例
2.1 准备一个目标资源
package com.demo.target;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet(urlPatterns="/target")
public class TargetServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("/target.....");
}
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request, response);
}
}
2.2 创建过滤器
package com.demo.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
/**
* 1. 创建Java类,实现javax.servlet.Filter接口
* 2. 重写接口的方法,重点doFilter方法
* 3. 在类上添加注解@WebFilter,配置拦截范围
*/
@WebFilter("/*")
public class Demo01StartFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("A");
//放行(调用执行后续的资源)
chain.doFilter(request, response);
System.out.println("B");
}
@Override
public void destroy() {
}
}
package com.demo.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;
@WebFilter("/*")
public class Demo02StartFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
System.out.println("C");
chain.doFilter(request, response);
System.out.println("D");
}
@Override
public void destroy() {
}
}
2.3 测试效果
3. 原理(运行过程)
- 客户端的请求:首先会被Tomcat交给过滤器进行过滤;放行之后才会到达目标资源
- 在目标资源里得到的request、response:是前边过滤器处理过的,不是第一手的
- 如果过滤器里不放行,请求就不能到达目标资源
小结
- 创建一个Java类,实现
javax.servlet.Filter接口 - 重写接口的方法。共3个,重点doFilter方法
- 在类上加注解@WebFilter,配置拦截范围
...全文
相关推荐
Filter(过滤器)简介和工作原理
Filter(过滤器)简介和工作原理Filter 简介Filter(过滤器)是 Java EE 中的一种组件,用于拦截和处理 Servlet 容器中的请求和响应。
Java web Filter 简介和工作原理
Java Web Filter简介和工作原理Java Servlet技术规范版本2.3引入了一种新的组件类型,即过滤器(Filter)。
Filter简介和工作原理
**Filter简介**Filter,中文译为过滤器,是Java Servlet技术中的一种重要组件,用于在Servlet容器中拦截请求和响应,实现预处理和后处理功能。
java中servlet文字过滤器
Servlet Filter简介Servlet Filter是一种可以在请求到达目标Servlet之前或之后执行的拦截机制。
Java实训教程 Java软件开发实战 web开发技术 第5章 filter 共23页.pptx
#### 二、Filter技术简介**1. 过滤器概述**过滤器是Java Web应用中一种非常重要的组件,它主要用于拦截用户的请求或响应,在请求到达目标资源之前或响应返回给客户端之前进行处理。


