我感兴趣的是创建一个全局对象,它将由我的所有servlet和所有JSP文件共享。但我不知道该怎么做。请指点。
对于senario,这个对象将包含大量我的servlet和jsp文件希望从其中获取的信息。我知道如何在servlet和jsp之间传递对象,但我不知道如何为整个“系统”或“网站”初始化一个全局对象
<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>
发布于 2014-06-13 17:44:10
应该将对象存储在应用程序上下文中。当应用程序开始使用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中访问该对象:
Servlet:
public void doGet(...) throws ... {
ServletContext servletContext = request.getServletContext();
MyGlobalClass globalObject = (MyGlobalClass)servletContext.getAttribute("globalObject");
//use it...
}JSP:
${globalObject.someField}https://stackoverflow.com/questions/24211021
复制相似问题