2009-09-18 133 views
1

当试图设置上下文属性,像这样:getServletContext()。getAttribute()返回null?

void init() 
{ 
    String testing = new String(); 
    testing = "This is a test"; 
    getServletContext().setAttribute("test", testing); 
} 

在一个小服务程序,并获得属性像这样:

String testing = (String) getServletContext().getAttribute("test") 

在第二个servlet,testingnull

这是否意味着我的servlet处于不同的上下文中?如果是这样,我怎样才能访问第一个servlet的上下文属性?请为此提供参考,因为我对java/servlet比较新。

我使用NetBeans与Glassfish的3

编辑:它们都在同一个Web应用程序,并在相同的WEB-INF/web.xml中都定义

回答

4

如果两个servlet都在同一个webapp中,默认情况下初始化的顺序是未定义的。所以它可能是,你的“第二个”servlet在“第一个”之前被初始化(根据web.xml中的顺序)。您可通过添加时加载的启动标签servlet的标签解决它:

<servlet> 
    <servlet-name>first<servlet-name> 
    ... 
    <load-on-startup>1<load-on-startup> 
</servlet> 

<servlet> 
    <servlet-name>second<servlet-name> 
    ... 
    <load-on-startup>2<load-on-startup> 
</servlet> 
+0

谢谢!定义这似乎工作。这一直让我疯狂整个上午。你碰巧知道为什么这很重要? – moshen 2009-09-18 18:11:33

0

我相信两个servlet需要在Web应用程序中,也就是打包在同一个war文件中,这样才能工作。

0

语境== ==战争的webapps

两个servlet有相同的Web应用程序下分担生活环境。检查两个servlet类是否在相同的WEB-INF/classes下。

+0

它们都在同一个Web应用程序,并且都在同一个WEB-INF/web.xml中 – moshen 2009-09-18 14:07:15