spring mvc 中获取HttpServletRequest ,HttpServletResponse
spring中的bean最常用的 singleton 模式
如果要在springmvc Controller 中获取 HttpServletRequest ,HttpServletResponse 怎么办?
1.在接口函数中以参数传入 类似HttpServlet
这种方式获得的是真实的request,response 对象 没什么好说的
2.@Autowired 注入 定义类属性
这种方式获得的是 request,response 代理对象,这样做的好处是什么呢?
前面所说的controller bean是单例模式的 那么 所有的请求实际上访问的是同一个controller对象,
我们可以推断出这里的 request 和response 也是同一个 what? 这不是乱套了吗? 不是说好的每个请求都会有request,response对象吗?
其实 我们访问request,response的任何方法都是先通过代理找到真实的request,response
对象,然后再执行对应的方法
而最终 request,response 都是存储在ThreadLocal里面的
而这种存储在threadLocal里面的实现方式对于 请求->单线程处理 的模型是没问题的,
如果要另开子线程 还得通过参数传递这两个对象,所以我个人觉得还是第一种实现方式比较好