Java servlet在servlet上下文中存储列表

Java servlet在servlet上下文中存储列表,java,servlets,Java,Servlets,在部署主servlet时,它需要执行计算并准备一个列表。该列表需要由随后调用的另一个servlet访问。计算只需运行一次。谁能解释一下怎么做 谢谢您可以使用并从中执行计算 类文件: public final class YourListener implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent event) { Serv

在部署主servlet时,它需要执行计算并准备一个列表。该列表需要由随后调用的另一个servlet访问。计算只需运行一次。谁能解释一下怎么做

谢谢

您可以使用并从中执行计算


类文件:

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

资源:

您可以使用a并从那里执行计算


类文件:

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

资源:


在主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初始化方法中

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服务器域加载失败