Servlet 3.0项目打包成WAR时修改WebInitParam

ala*_*inm 5 java servlets servlet-3.0

在我的项目中,我使用 Servlet 3.0 并且尝试使用注释。

为了初始化数据库的连接参数,我在 servlet 中使用它:

@WebServlet(name = "FrontServlet", urlPatterns = {"/index"},
        initParams = {
        @WebInitParam(name = "userDB", value = "root"),
        @WebInitParam(name = "passwordDB", value = "*****")})
Run Code Online (Sandbox Code Playgroud)

现在,当我将项目打包在 WAR 中时,我没有 web.xml,因此我无法像以前在旧 servlet 版本中那样编辑初始化参数。

我的问题是,当项目打包成 WAR 时,我可以编辑我的初始化参数吗?如果是的话怎么办?否则我应该使用什么方法来存储我的初始化参数并能够在 WAR 中修改它们?

如果可能的话,我想避免使用所有 URL 模式等重新创建整个 web.xml...

编辑 :

最后我保留了:

@WebServlet(name = "FrontServlet", urlPatterns = {"/index"})
Run Code Online (Sandbox Code Playgroud)

我使用Properties加载数据库参数,并使用以下命令访问配置文件getClass().getClassLoader().getResourceAsStream("servlet/config/config.ini")

Tar*_*log 2

据我所知,没有标准方法可以在运行时修改初始化参数。此外,将配置放在那里是一种不好的做法,尤其是以明文形式放在那里的数据库凭据。

通常,最佳实践是将配置放入外部文件中。它可能是一些自定义属性或 xml 文件。

对于数据库连接,通常使用 JNDI。因此,基本上,您在代码中查找 JNDI 资源,而 JNDI 本身是在容器级别配置的。Google 找到很多如何通过 JNDI 为 Jetty、Tomcat、JBoss 等配置数据库连接的示例。