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

时间:2012-03-05 19:53:18

标签: java spring struts2 scope

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

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

2 个答案:

答案 0 :(得分:5)

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方式;)

答案 1 :(得分:5)

你可以使用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”的值。