在tomcat中设置上下文变量

Posted

技术标签:

【中文标题】在tomcat中设置上下文变量【英文标题】:set up context variable in tomcat 【发布时间】:2012-03-05 09:50:00 【问题描述】:

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

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

    <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),但它不起作用。

所以有什么建议吗?

谢谢

【问题讨论】:

基本上,我想更改上下文变量的值,然后另一个 servlet 可以使用它 功能需求是什么?设置一个可供部署在同一 Tomcat 服务器上的所有 Web 应用程序访问的变量? 是的,该变量必须被同一服务器上的其他过滤器访问 【参考方案1】:

您需要将上下文参数添加到您的 web 应用程序的 /WEB-INF/web.xml,而不是“在根文件夹中”。

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

您需要通过ServletContext#getInitParameter()获取它:

String testname = getServletContext().getInitParameter("testname");
System.out.println(testname); // testvalue

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

【讨论】:

对不起,我应该更清楚一点,这个变量是由一个应用程序中同一服务器上的其他人访问的。目前,我在服务器上只有一个 webapp。另外,我无权在服务器上运行命令(它是一个共享托管服务器),所以环境变量可能不是一个好主意。 难怪我总是得到 null,因为我使用了 getServletContext().getAttribute("test")。我以为只有在 中指定了 时才使用 getInitParameter("test"),现在我明白了 上下文属性与上下文参数不同。 servlet 初始化参数只能由ServletConfig 或继承的GenericServlet#getInitParameter() 使用。至于设置值,请猜测...(提示:阅读 javadoc)。 要了解属性是什么以及如何使用它们,请花点时间阅读***.com/questions/3106452/…,总体上应该很有启发性。

以上是关于在tomcat中设置上下文变量的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Tomcat 中设置上下文路径,以便在不附加部署文件夹名称的情况下进入站点?

在tomcat 7中设置默认应用程序

如何刷新我在 ServletContextListener 中设置的 servlet 上下文变量?

如何在 JBoss 中设置环境变量

我们如何在 C# 中设置/获取其他用户的环境变量?

如何在路径中设置变量并在模板中显示?