java - Servlet 3.0项目打包WAR时修改WebInitParam

标签 java servlets servlet-3.0

在我的项目中,我使用的是 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/

相关文章:

java - servlet 过滤器是否必须在 web.xml 文件中指定?

Java ImageIO.write 发送的数据比 ImageIO.read 接收的多?

java - 如何解决这个类型删除?

java - servlet 发生 mySql 列未找到错误

javascript - 有没有办法知道Servlet中的JS在浏览器上是否启用?

struts2 - jar META-INF 资源中的 Servlet 3.0 磁贴定义

maven - 无法在我的 Maven 项目中导入 Servlet

java - 在 Groovy 脚本中声明的类可以在 javassist 中访问吗?

java - 使用默认方法会在 Android 发布版本中引发 AbstractMethorError

java - 获取服务器地址和应用程序名称