有两种(或更多)servlet可以共享配置参数,在web.xml
中声明一次吗?
看了here,但似乎不是答案。
用例非常简单:我有两个servlet:一个将文件上传到目录,另一个下载它们。我很乐意在web.xml
中只登录一次目录/路径,以避免歧义/混淆。
答案 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>
将作为默认值 - 如果特定设置没有可用的有效默认值,也可以省略它。