在servlet之间共享配置参数

时间:2011-05-09 16:19:02

标签: java servlets

有两种(或更多)servlet可以共享配置参数,在web.xml中声明一次吗?

看了here,但似乎不是答案。

用例非常简单:我有两个servlet:一个将文件上传到目录,另一个下载它们。我很乐意在web.xml中只登录一次目录/路径,以避免歧义/混淆。

2 个答案:

答案 0 :(得分:3)

是的,在<context-param>添加web.xml,例如

<context-param>
   <param-name>myParam</param-name>
   <param-value>Some value</param-value>
</context-param>

这是整个webapp的范围,而不是单个servlet。

然后,您可以从getInitParameter(...)对象的ServletContext方法(在servlet中使用getServletContext()获取)中的servlet中获取此内容。

答案 1 :(得分:0)

或者您可以在<env-entry>中声明web.xml

  <env-entry>
    <description>This is the address of the SMTP host that shall be used to send mails
    </description>
    <env-entry-name>smtp.mailhost</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>mailhost</env-entry-value>
</env-entry>

然后可以使用JNDI查找该值,并且可以在部署时设置(如何完成此操作是特定于容器的),而无需修改WAR / EAR文件。如果没有设置deply-time值,<env-entry-value>将作为默认值 - 如果特定设置没有可用的有效默认值,也可以省略它。