在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")。我以为只有在ServletConfig
或继承的GenericServlet#getInitParameter()
使用。至于设置值,请猜测...(提示:阅读 javadoc)。
要了解属性是什么以及如何使用它们,请花点时间阅读***.com/questions/3106452/…,总体上应该很有启发性。以上是关于在tomcat中设置上下文变量的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Tomcat 中设置上下文路径,以便在不附加部署文件夹名称的情况下进入站点?