似乎有些servlet容器在请求之间重用了HttpServletRequest(或更一般而言ServletRequest)实例。
HttpServletRequest
ServletRequest
题:
有人可以 点 到 Servlet规范 地方这种行为(或这些实例的引用的有效性规则)的 定义 ?
Servlet API中未定义它。这是一个实现细节。
在3.11中用于请求对象(对于响应对象则在5.6中)
每个请求对象仅在servlet的service方法的范围内或在过滤器的doFilter方法的范围内有效,除非对该组件启用了异步处理并且在请求对象上调用了startAsync方法。在发生异步处理的情况下,请求对象将保持有效,直到在AsyncContext上调用complete为止。 容器通常回收请求对象,以避免产生请求对象的性能开销。 开发人员必须意识到,不建议维护对未在上述范围之外调用startAsync的请求对象的引用,因为这样做可能会产生不确定的结果
它不是必需的,而是常用的。
规范中的内容(请参阅第2.3.3节)是单线程模型。一个请求,一个线程。这允许清除请求并重新使用。