场景
- 修改请求中的参数,某字段加密(接口需要解密后的数据),此处统一解密
- 请求参数和响应结果,记录日志/存数据库
- 在请求参数中添加 额外字段(标识某些系统等)
OncePerRequestFilter
GET方式
getParameterMap(),只能够获取到GET请求的参数
1 | java复制代码//请求参数 |
注意:异常 No modifications are allowed to a locked ParameterMap
1 | java复制代码//类 org.apache.catalina.util.ParameterMap |
POST方式
POST的请求参数是在请求体body中,而body参数是以流形式存在的。
1 | Java复制代码ServletInputStream inputStream = httpRequest.getInputStream(); |
注意:异常 request body missing
过滤器获得POST请求参数,但是controller层报错。
httpRequest.getInputStream() 只能使用一次,再次使用报错
1 | arduino复制代码InputStream read方法内部有一个postion标志。 |
继承并重写方法
1 | Java复制代码@Component |
继承HttpServletRequestWrapper
1 | java复制代码public class RequestParameterWrapper extends HttpServletRequestWrapper { |
本文转载自: 掘金