filter
This commit is contained in:
8
pom.xml
8
pom.xml
@@ -20,6 +20,14 @@
|
||||
<lombok.version>1.18.30</lombok.version>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<!-- filter -->
|
||||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>javax.servlet-api</artifactId>
|
||||
<version>4.0.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<!-- filter end -->
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter</artifactId>
|
||||
|
||||
25
src/main/java/stu/base/filter/FilterConfig.java
Normal file
25
src/main/java/stu/base/filter/FilterConfig.java
Normal file
@@ -0,0 +1,25 @@
|
||||
package stu.base.filter;
|
||||
|
||||
import org.springframework.boot.web.servlet.FilterRegistrationBean;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
/**
|
||||
* @Author cuiJiaWang
|
||||
* @Create 2025-02-06 10:03
|
||||
*/
|
||||
@Configuration
|
||||
public class FilterConfig {
|
||||
|
||||
@Bean
|
||||
public FilterRegistrationBean<MyFilter> customFilterRegistration() {
|
||||
FilterRegistrationBean<MyFilter> registrationBean = new FilterRegistrationBean<>();
|
||||
MyFilter myFilter = new MyFilter();
|
||||
registrationBean.setFilter(myFilter);
|
||||
registrationBean.addUrlPatterns("/*");
|
||||
registrationBean.setOrder(1); // 设置过滤器的执行顺序
|
||||
|
||||
registrationBean.addInitParameter("encoding", "UTF-8"); // 添加初始化参数
|
||||
return registrationBean;
|
||||
}
|
||||
}
|
||||
37
src/main/java/stu/base/filter/MyFilter.java
Normal file
37
src/main/java/stu/base/filter/MyFilter.java
Normal file
@@ -0,0 +1,37 @@
|
||||
package stu.base.filter;
|
||||
|
||||
import javax.servlet.FilterConfig;
|
||||
import javax.servlet.*;
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* @Author cuiJiaWang
|
||||
* @Create 2025-02-06 09:54
|
||||
*/
|
||||
public class MyFilter implements Filter {
|
||||
|
||||
/*
|
||||
Web 容器在启动时,会触发每个Filter实例的 init 方法调用并传递一个FilterConfig对象,
|
||||
该配置允许过滤器获取初始化参数以及ServletContext上下文对象,从而加载任何所需的资源。
|
||||
该方法在Filter的整个生命周期中仅会在初始化时被调用一次。
|
||||
*/
|
||||
@Override
|
||||
public void init(FilterConfig filterConfig) throws ServletException {
|
||||
}
|
||||
|
||||
/*
|
||||
每一次请求都会调用该方法
|
||||
*/
|
||||
@Override
|
||||
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
|
||||
filterChain.doFilter(servletRequest, servletResponse);
|
||||
}
|
||||
|
||||
/*
|
||||
Web 容器在销毁时,会执行一次
|
||||
清理过滤器所有持有的资源(如内存、文件句柄、线程等)
|
||||
*/
|
||||
@Override
|
||||
public void destroy() {
|
||||
}
|
||||
}
|
||||
20
src/main/java/stu/base/filter/filter.md
Normal file
20
src/main/java/stu/base/filter/filter.md
Normal file
@@ -0,0 +1,20 @@
|
||||
## 过滤器
|
||||
### 什么是Filter
|
||||
`Filter`是 Java Servlet 规范的一部分,定义在`javax.servlet`包中,`Filter`可以对`Servlet`容器的所有 HTTP 请求(`HttpServletRequest`)和响应(`HttpServletResponse`)进行预处理或后处理操作。
|
||||
|
||||
|
||||
### 使用
|
||||
- 在启动类或者任意配置类上加上`@ServletComponentScan`注解来让 Spring Boot 自动扫描并注册这些过滤器。
|
||||
```java
|
||||
@WebFilter(urlPatterns = "/*", filterName = "myFilter")
|
||||
public class MyFilter implements Filter{}
|
||||
|
||||
@ServletComponentScan(basePackages ="stu.base.filter") // 指定扫描包路径
|
||||
public class StuApplication {}
|
||||
```
|
||||
- 使用 `FilterRegistrationBean` 进行注册
|
||||
- 直接使用 `@Component` 注解
|
||||
```java
|
||||
@Component //默认会应用到所有请求路径
|
||||
public class MyFilter implements Filter{}
|
||||
```
|
||||
Reference in New Issue
Block a user