gpt4 book ai didi

Java - 动态 Web 项目 - 全局对象

转载 作者:行者123 更新时间:2023-11-29 03:20:07 25 4
gpt4 key购买 nike

我对创建全局对象很感兴趣,它将由我所有的 servlet 和我的所有 JSP 文件共享。但我不明白该怎么做。请指教。

对于 senario,此对象将包含我的 servlet 和 jsp 文件希望从中获取信息的大量信息。我知道如何在 servlet 和 jsp 之间传递对象。但我不知道如何为整个“系统”或“网站”初始化 1 个全局对象


<display-name>WebTest1</display-name>
<listener>
<listener-class>listeners.AppListener</listener-class>
</listener>
<welcome-file-list>
<welcome-file>MainPage.html</welcome-file>
<welcome-file>MainPage.htm</welcome-file>
<welcome-file>MainPage.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>SimpleServlet</servlet-name>
<servlet-class>servlets.SimpleServlet</servlet-class>
</servlet>

最佳答案

您应该将对象存储在应用程序上下文中。您可以在应用程序开始使用 ServletContextListener 时执行此操作.

public AppListener implements ServletContextListener {

public void contextInitialized(ServletContextEvent sce) {
//application is being deployed
//register the "global" object here
ServletContext sc = sce.getServletContext();
MyGlobalClass globalObject = ...
sc.setAttribute("globalObject", globalObject);
}
public void contextDestroyed(ServletContextEvent sce) {
//application is being undeployed
}
}

在 web.xml 中将此类注册为监听器:

<listener>
<listener-class>package.where.defined.AppListener</listenerclass>
</listener>

然后你可以在 Servlet 和 JSP 中访问这个对象:

小服务程序:

public void doGet(...) throws ... {
ServletContext servletContext = request.getServletContext();
MyGlobalClass globalObject = (MyGlobalClass)servletContext.getAttribute("globalObject");
//use it...
}

JSP:

${globalObject.someField}

关于Java - 动态 Web 项目 - 全局对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24211021/

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