加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java Servlet池

发布时间:2020-12-15 08:31:22 所属栏目:Java 来源:网络整理
导读:Tomcat 6下的Servlets 101: 有人可以指点我对例如最佳方式的一个很好的解释.在servlet启动时创建一个昂贵的Foo对象的集合,并将它们存放在我可以在处理每个请求时访问它们的地方? 我可以说至少有三种方法可以做到这一点,我对这种差异有点模糊.我并不关心集
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池”有什么关系.这个词毫无意义.

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读