Springboot读取Request参数的坑
【后端拿参数相关】
默认配置时,
getInputStream()和getReader()⼀起使⽤会报错
使⽤两遍getInputStream(),第⼆遍会为空
当存在@RequestBody等注解时,springMVC已读取过⼀遍流,默认单独使⽤getInputStream()或getReader()都为空。
解决:写filter继承HttpServletRequestWrapper,缓存InputStream,覆盖getInputStream()和getReader()⽅法,使⽤ByteArrayInputStream is = new Bytes());读取InputStream。
springboot和过滤器注意:springboot中,过滤器只需@Component即可⽣效,另外可在FilterRegistrationBean中配置路径和优先级。
对于,必须在InterceptorRegistry中调⽤addInterceptor⽅法。(路径可链式添加)
【关于流】
只能读⼀遍,类似管⼦。
只承担传输职责,⽽与处理和存储⽆关。
对于byte流⽽⾔,进⾏重复读取易于实现,但指针不重置,应是为了与InputStream接⼝定义保持⼀致。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论