gpt4 book ai didi

java - 如何在没有任何请求、 session 等的情况下获取上下文?

转载 作者:行者123 更新时间:2023-11-28 21:54:14 25 4
gpt4 key购买 nike

我在一个类中有一个方法,它不获取任何可用于获取实际 servlet 上下文的内容。实际上,它就像

public String getSomething() { ... }

但要计算结果,我需要实际的、线程特定的 servlet 结构。

我认为,在应用程序上下文的深处,应该存在一些类似线程特定的存储,可以通过调用某些系统类的静态方法来实现。

我在一个tomcat6 servlet容器中,但是如果需要的话Spring也可以。

最佳答案

添加 ServletContextListener到您的 web.xml。这将在您的 webapp 加载时调用。在 contextInitialized() 方法中,您可以将 ServletContext 存储在静态变量中以备后用。然后您将能够以静态方式访问 ServletContext:

class MyListener implements ServletContextListener {

public static ServletContext context;

@Override
public void contextInitialized(ServletContextEvent sce) {
context = sce.getServletContext();
}

@Override
public void contextDestroyed(ServletContextEvent sce) {
context = null;
}

}

像这样将其添加到 web-xml 中:

<web-app>
<listener>
<listener-class>
com.something.MyListener
</listener-class>
</listener>
</web-app>

而且您可以像这样从任何地方访问它:

public String getSomething() {
// Here you have the context:
ServletContext c = MyListener.context;
}

注意:

您可能希望将其存储为 private 并提供 getter 方法,并在使用前检查 null 值。

关于java - 如何在没有任何请求、 session 等的情况下获取上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26670684/

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