是在http请求-响应周期的一部分中创建和销毁了jsp PageContext对象,还是在请求之间对其进行了缓存和重用。
PageContext具有生命周期方法,建议在请求之间重用。即initialize(),release()。
如果它们被重用,则可能会导致严重的并发问题:如果两个http请求到达,请求同一个jsp页面,并且每个请求都由其自己的线程处理,但是在共享的PageContext对象上设置属性,它们将呈现彼此的内容。
任何帮助表示赞赏。顺便说一句,我正在使用嵌入在Apache Sling中的servlet容器。
PageContext仅在您的JSP页面中可用。如果您的请求首先由servlet处理,然后转发到JSP页面(使用RequestDispatcher.forward),则pageContext仅在此JSP页面上可用,但无法从servlet访问它(因为尚无pageContext)那时候)。
从JSP页面的角度来看,每次调用都会获得新的pageContext。页面上下文可以在内部池化,但不能同时由多个JSP页面共享。
initialize和release方法有此注释:“页面或标记库作者不应使用此方法。” 只是忘记他们。
initialize
release