在应用程序范围设置变量,以便在会话中共享

我正在使用带有Spring插件的Struts2。 我想设置一个变量值,它将在所有不同的会话中共享。 它只是一个字符串值,但如果一个会话更改它,我希望更改的值可用于所有会话。

最好的方法是什么? 代码示例将很棒。

http://docs.oracle.com/cd/E17802_01/products/products/servlet/2.3/javadoc/javax/servlet/ServletContext.html

在Servlet代码中:

Object attr = getServletContext().getAttribute("ATTR_NAME"); // Do something with it and... getServletContext().setAttribute("ATTR_NAME", attr); 

这是通用的Java EE Servlet方式;)

你可以使用Spring做这样的事情

 package mypackage; import javax.servlet.ServletContext; import org.springframework.web.context.ServletContextAware; public class MYDataLoader implements ServletContextAware { public void setServletContext(ServletContext servletContext) { servletContext.setAttribute("myKey", value); } } 

在其余代码中,您只需从request-> session获取servletContext对象,并获取“mykey”的值。