【问题标题】:One core app with multiple servlets一个具有多个 servlet 的核心应用程序
【发布时间】:2012-06-04 14:33:38
【问题描述】:

我创建了一个 webapp(用 Eclipse 编写,在 Tomcat 中运行),它是一个 Servlet,它在初始化时创建了一个 Runnable 对象。 Runnable 对象会加载一些东西并将一些数据存储在内存中,servlet 的存在只是为了向用户呈现对象中的最新数据(没有 DB,我们只关心当前数据)。

问题是,我现在想让另一个 Servlet 访问相同的数据并以不同的方式呈现给用户,这意味着 Servlet 创建 Runnable 对象的模型不再可行。

所以,我的问题是:如何创建一个应用程序,让一个主类完成所有工作,而一堆 Servlet 与之对话以获取数据?

作为一种我不太喜欢的解决方法,我刚刚让 doGet() 方法解析请求字符串并根据其内容发送不同的响应,但我宁愿使用单独的 Servlet 来完成。

【问题讨论】:

    标签: tomcat web-applications


    【解决方案1】:

    ServletContextListener.contextInitialized() 方法期间创建Runnable 对象,并使用ServletContext.setAttribute() 将其设置为ServletContext 作为属性。

    而且,两个 servlet 都可以从 ServletContext.getAttribute() 获取 Runabble 对象并呈现数据。

    【讨论】:

    • 不要忘记放置在 ServletContext 中的对象(又名“应用程序范围”)要么必须是线程安全的,要么必须以线程安全的方式访问(例如,在对象本身)。应该一直都是这样(因为 servlet 本身有一些状态),但值得一提。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 2020-12-03
    • 2017-03-11
    • 1970-01-01
    相关资源
    最近更新 更多