Java 在tomcat中设置上下文变量

Java 在tomcat中设置上下文变量,java,tomcat,servlets,tomcat6,servlet-filters,Java,Tomcat,Servlets,Tomcat6,Servlet Filters,我在设置tomcat上下文变量时遇到问题。 我试过: 在根文件夹的web.xml中(注意:它不是conf文件夹中的) 我尝试添加上下文参数,不起作用,这没有改变任何东西,上下文变量仍然为null <context-param> <param-name>testname</param-name> <param-value>testvalue</param-value> </context-param> 测试

我在设置tomcat上下文变量时遇到问题。 我试过:

  • 在根文件夹的web.xml中(注意:它不是conf文件夹中的) 我尝试添加上下文参数,不起作用,这没有改变任何东西,上下文变量仍然为null

    <context-param>
        <param-name>testname</param-name>
        <param-value>testvalue</param-value>
    </context-param>
    
    
    测试名
    测试值
    
  • 使用servlet getServletContext.setAttribute(“test”、“ok”)来设置变量,它也不起作用,变量始终保持为null

  • 我尝试在server.xml中添加crossContext=true(即使我只有一个webapp),但它不起作用

  • 有什么建议吗


    谢谢

    您需要将上下文参数添加到您的webapp的
    /WEB-INF/WEB.xml
    ,而不是“根文件夹”中的任何位置

    <context-param>
        <param-name>testname</param-name>
        <param-value>testvalue</param-value>
    </context-param>
    

    ServletContext#set/getAttribute()
    设置/获取应用程序范围中的属性。它们与上下文参数无关。

    基本上,我希望更改上下文变量的值,然后另一个servlet可以使用它。功能需求是什么?设置一个变量,该变量可由部署在同一Tomcat服务器上的所有web应用程序访问?是的,该变量必须由同一服务器上的其他筛选器访问抱歉,我应该更清楚,该变量由同一服务器上的其他人在一个应用程序中访问。目前,我在服务器上只有一个webapp。此外,我无权在服务器上运行命令(这是一个共享宿主服务器),所以环境变量可能不是一个好主意。难怪我总是得到null,因为我使用了getServletContext().getAttribute(“test”)。我认为getInitParameter(“test”)仅在中指定时使用,现在我得到了它,上下文属性与上下文参数不同。servlet init参数只能通过
    ServletConfig
    或继承的
    GenericServlet#getInitParameter()
    使用。至于设置值,请进行猜测。。。(提示:阅读javadoc)。要了解什么是属性以及如何使用它们,请花一些时间阅读,这通常应该是很有启发性的。
    String testname = getServletContext().getInitParameter("testname");
    System.out.println(testname); // testvalue