在我的项目中,我使用的是 Servlet 3.0,并且我尝试使用注释。
为了初始化数据库的连接参数,我在我的 servlet 中使用了它:
@WebServlet(name = "FrontServlet", urlPatterns = {"/index"},
initParams = {
@WebInitParam(name = "userDB", value = "root"),
@WebInitParam(name = "passwordDB", value = "*****")})
现在,当我将项目打包到 WAR 中时,我没有 web.xml,所以我无法像以前使用旧 servlet 版本那样编辑初始化参数。
我的问题是,当项目打包成 WAR 时,我可以编辑我的初始化参数吗?如果是如何?否则我应该使用什么方法来存储我的初始化参数并能够在 WAR 中修改它们?
如果可能的话,我想避免用所有 URL 模式等重新创建整个 web.xml...
编辑:
最后我保留了:
@WebServlet(name = "FrontServlet", urlPatterns = {"/index"})
然后我使用 Properties 加载数据库参数,使用 getClass().getClassLoader().getResourceAsStream("servlet/config/config.ini")
最佳答案
在 Servlet 3.0 中,注释提供了默认值,但这些可以在 web.xml 中被覆盖,因此您可以将以下内容添加到 web.xml 中以更改参数。
<servlet>
<servlet-name>FrontServlet</servlet-name>
<servlet-class>fully.qualified.ClassName</servlet-class>
<init-param>
<param-name>passwordDB</param-name>
<param-value>NewValue</param-value>
</init-param>
</servlet>
至少在 Tomcat 中,您需要指定类名和 Servlet 名。在不进一步研究合并代码的情况下(自从我开始研究它已经有一段时间了),其中一个应该就足够了。现在,您需要同时使用两者。
关于java - Servlet 3.0项目打包WAR时修改WebInitParam,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10513292/