似乎that some servlet containers在请求之间重用HttpServletRequest
(或更一般地,ServletRequest
)实例。
问题:
有人指向 servlet规范,此行为(或此类实例引用的有效性规则)已定义?
答案 0 :(得分:8)
它没有在Servlet API中定义。这是一个实现细节。
在3.11中为请求对象(和5.6为响应对象)
每个请求对象仅在servlet的范围内有效 服务方法,或在过滤器的doFilter方法的范围内, 除非为组件启用了异步处理 在请求对象上调用startAsync方法。在这种情况下 在发生异步处理的情况下,请求对象保持有效 直到在AsyncContext上调用完成。 通常是容器 回收请求对象以避免性能开销 请求对象创建。开发人员必须意识到维护 对尚未调用startAsync的请求对象的引用 不建议在上述范围之外,因为它可能具有 不确定的结果
这不是必需的,但是常用。
规范中的内容(参见第2.3.3章)是单线程模型。一个请求,一个线程。这样可以清理和重复使用请求。