写一个springboot 所有请求参数清除前后空格的过滤器
时间: 2023-07-25 08:06:35 浏览: 146
可以通过自定义一个过滤器实现对所有请求参数清除前后空格的操作。以下是实现方式:
1. 创建一个类,继承 `OncePerRequestFilter` 类,重写 `doFilterInternal` 方法,该方法用于拦截请求并处理请求参数。
```java
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class TrimRequestParamsFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
// 获取所有请求参数名
Enumeration<String> paramNames = request.getParameterNames();
// 遍历请求参数并清除前后空格
while (paramNames.hasMoreElements()) {
String paramName = paramNames.nextElement();
String[] paramValues = request.getParameterValues(paramName);
for (int i = 0; i < paramValues.length; i++) {
paramValues[i] = paramValues[i].trim();
}
request.setAttribute(paramName, paramValues);
}
filterChain.doFilter(request, response);
}
}
```
2. 在Spring Boot项目中注册该过滤器。
```java
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean<TrimRequestParamsFilter> trimRequestParamsFilter() {
FilterRegistrationBean<TrimRequestParamsFilter> registrationBean = new FilterRegistrationBean<>();
registrationBean.setFilter(new TrimRequestParamsFilter());
// 设置过滤器的执行顺序,数字越小越先执行
registrationBean.setOrder(1);
// 设置需要过滤的请求路径
registrationBean.addUrlPatterns("/*");
return registrationBean;
}
}
```
该配置文件中创建了一个名为 `trimRequestParamsFilter` 的过滤器,并设置需要过滤的请求路径为 "/*",表示对所有请求进行参数清除操作。最后通过 `setOrder` 方法设置过滤器的执行顺序,数字越小越先执行。
阅读全文