当我们定义一个 Servlet 时,我们可以通过 Java 注解来实现。例如:
@WebServlet
我们也可以定义初始化参数:
@WebInitParam(name="name", value="value")
初始化参数背后的概念是提供运行时配置参数,该参数可能因部署解决方案的位置而异。例如,在一个系统上,一个初始化参数可能有:
name="passwordFile", value="/etc/mypasswords.txt"
在不同的系统上,我们可能有:
name="passwordFile", value="/tmp/test_passwords.txt"
我们不想在我们的应用程序中硬编码这些值,而是提供一个可以在运行时覆盖的默认值。
当我们构建一个用于在 Java EE 上部署的动态 Web 应用程序时,我们可以专门通过代码中的注释来定义 servlet,这是目前首选的样式。然而,在注释之前,人们通过一个名为 web.xml 的 XML 文件定义了动态 Web 项目(包括其 servlet)的特征。在此文件中,可以提供大量配置参数,包括 servlet 以及对于 servlet 的初始化参数。
看来我们仍然可以使用 web.xml 技术,并且可以与 Java 注释一起使用。这意味着我们可以通过注解声明我们的 Servlet 和初始化参数,同时创建一个 web.xml 文件。如果通过注解找到了一个值,并且没有对应的 web.xml 值,那么将使用该注解。但是,如果同时存在注释和相同的 web.xml 定义,则 web.xml 定义将是实际使用的定义。由于 web.xml 是一个“公开的”配置文件,因此在部署时,我们可以编辑 web.xml 为我们希望覆盖的任何内容设置所需的值……包括初始化参数。