背景:最近在写SpringBoot与微信小程序,微信小程序有一个关于自建Session的问题,需要我在json数据中方一个3rd_session_key来作为用户的session信息,所以我需要在用户登录后的每一条json数据中加上这个3rd_session_key的参数。于是我准备用过滤器来filter来实现。在实现这个逻辑的过程中,遇到了一些问题。
首先,我是实现了 javax.servlet.Filter 接口,
然后在 doFilter() 方法中通过传入 ServletRequest 对象来获取传入的json数据,具体我就不做展示了。此时就遇到了一个问题,在过滤器filter中获取到json数据以后,我的controller就拿不到数据了。后面经过一番Google找到了解决方案,就是重写了HttpServletRequestWrapper的getInputStream() 方法。
我的问题是在Spring中 @RequestBody 是如何实现拿到前端传回来的json数据的呢?
我有尝试查看这个 getInputStream() 方法的源码,但是我卡在了 ServletRequest 这个接口的 public ServletInputStream getInputStream() throws IOException 方法,我还不知道怎么找接口方法的具体实现。
感谢。
恩. @requestbody 就是把HttpServletRequest的输入(request.getInputStream())通过json,转换成一个对象.
在spring中是RequestResponseBodyMethodProcessor利用HttpMessageConventer做的.
另外,可以不用这个注解, 直接将字符串转json, 往json里面添加.