gpt4 book ai didi

Java Servlet 池化

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:36:24 27 4
gpt4 key购买 nike

Tomcat 6 下的 Servlets 101:

有人可以指点我对例如的最佳方式的一个很好的解释。在 servlet 启动时创建一个昂贵的 Foo 对象的集合,并将它们存储在我可以在处理每个请求时访问它们的地方?

据我所知,至少有三种方法可以做到这一点,但我不太清楚它们之间的区别。我不关心用于驱逐陈旧条目或类似内容的集群或算法,只关心基础知识。

干杯和感谢。

最佳答案

实现 ServletContextListener ,在 contextInitialized() 期间执行所需的加载任务,并通过 ServletContext#setAttribute() 将结果存储在应用程序范围内。它将在服务器启动期间被调用,应用程序范围也可以在常规 servlet 中访问。

基本示例:

public class Config implements ServletContextListener {
public void contextInitialized(ServletContextEvent event) {
List<Foo> foos = fooDAO().list();
event.getServletContext().setAttribute("foos", foos);
}
}

以通常的方式将其映射到 web.xml 中:

<listener>
<listener-class>mypackage.Config</listener-class>
</listener>

以下是在常规 servlet 中访问它的方法:

protected void doSomething(request, response) {
List<Foo> foos = (List<Foo>) getServletContext().getAttribute("foos");
}

下面是如何在 JSP 中访问它:

<c:forEach items="${foos}" var="foo">
${foo.someProperty}<br>
</c:forEach>

也就是说,我真的不明白这与“servlet 池”有何关系。这个词没有意义。

希望这对您有所帮助。

关于Java Servlet 池化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1755701/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com