Java servlet在servlet上下文中存储列表
在部署主servlet时,它需要执行计算并准备一个列表。该列表需要由随后调用的另一个servlet访问。计算只需运行一次。谁能解释一下怎么做 谢谢您可以使用并从中执行计算Java servlet在servlet上下文中存储列表,java,servlets,Java,Servlets,在部署主servlet时,它需要执行计算并准备一个列表。该列表需要由随后调用的另一个servlet访问。计算只需运行一次。谁能解释一下怎么做 谢谢您可以使用并从中执行计算 类文件: public final class YourListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent event) { Serv
类文件:
public final class YourListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent event) {
ServletContext context = event.getServletContext();
//Calculation goes here
}
@Override
public void contextDestroyed(ServletContextEvent event) {
//Nothing to do
}
}
web.xml:
<web-app>
<!-- ... -->
<listener>
<listener-class>ext.company.project.listener.YourListener</listener-class>
</listener>
<!-- ... -->
</wep-app>
ext.company.project.listener.YourListener
资源:
类文件:
public final class YourListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent event) {
ServletContext context = event.getServletContext();
//Calculation goes here
}
@Override
public void contextDestroyed(ServletContextEvent event) {
//Nothing to do
}
}
web.xml:
<web-app>
<!-- ... -->
<listener>
<listener-class>ext.company.project.listener.YourListener</listener-class>
</listener>
<!-- ... -->
</wep-app>
ext.company.project.listener.YourListener
资源:
public void init(ServletConfig config) throws ServletException {
super.init(config);
// do calculations
ArrayList resultsList = calculate_something();
// save for other servlets
config.getServletContext().setAttribute("SAVED_DATA", resultsList);
}
在其他servlet中
// retrieving value from ServletContext
ArrayList list = (ArrayList)getServletContext().getAttribute("SAVED_DATA");
在主servlet初始化方法中
public void init(ServletConfig config) throws ServletException {
super.init(config);
// do calculations
ArrayList resultsList = calculate_something();
// save for other servlets
config.getServletContext().setAttribute("SAVED_DATA", resultsList);
}
在其他servlet中
// retrieving value from ServletContext
ArrayList list = (ArrayList)getServletContext().getAttribute("SAVED_DATA");
如果servlet被销毁并重新加载,这将发生两次。@Colin Hebert你是对的,他提到主servlet需要进行计算,这就是为什么我发布了我所做的。从交换中可以明显看出,这个问题被误解了。如果servlet被销毁并重新加载,这将发生两次。@Colin Hebert你是对的,他提到主servlet需要进行计算,这就是为什么我发布了我所做的。从交流中可以明显看出,这个问题被误解了。谢谢,科林。但是我要执行计算,然后如何存储/检索它…请explain@Abdul,您可以将结果作为属性存储在数据库中,然后使用
getServletContext().getAttribute()
从任何servlet@Colin... 非常感谢你的帮助。要使用此上下文对象,是否需要使用上下文调用请求调度程序?请让我know@Abdul,此上下文是servlet上下文。通过getServletContext()
和event.getServletContext()
@Colin中的YourListener
,可以从任何servlet访问。在我这样做的那一刻,服务器的加载失败。它只是说GLassFish服务器域无法加载。但是我要执行计算,然后如何存储/检索它…请explain@Abdul,您可以将结果作为属性存储在数据库中,然后使用getServletContext().getAttribute()
从任何servlet@Colin... 非常感谢你的帮助。要使用此上下文对象,是否需要使用上下文调用请求调度程序?请让我know@Abdul,此上下文是servlet上下文。通过getServletContext()
和event.getServletContext()
@Colin中的YourListener
,可以从任何servlet访问。在我这样做的那一刻,服务器的加载失败。它只是说GLassFish服务器域加载失败