HttpServletRequest重用

似乎一些servlet容器在请求之间重用HttpServletRequest (或更一般地, ServletRequest )实例。

题:

有人可以指向 servlet规范中定义了这种行为(或引用此类实例的有效性规则)吗?

    它没有在Servlet API中定义。 这是一个实现细节。

    在3.11中为请求对象(和5.6为响应对象)

    每个请求对象仅在servlet的服务方法范围内有效,或者在filter的doFilter方法范围内有效,除非为组件启用了异步处理并且在请求对象上调用了startAsync方法。 在发生异步处理的情况下,请求对象保持有效,直到在AsyncContext上调用complete。 容器通常会回收请求对象,以避免请求对象创建的性能开销。 开发人员必须意识到不建议维护对上述范围之外未调用startAsync的请求对象的引用,因为它可能具有不确定的结果

    它不是必需的,但是常用。

    规范中的内容(参见第2.3.3章)是单线程模型。 一个请求,一个线程。 这允许清理和重用请求。