一尘不染

@WebInitParam的用例

java

从Servlet 3.0规范开始,就有可能将Servlet映射元数据声明为Servlet类的注释:

@WebServlet(name="appInfoServlet", urlPatterns ="/appInfo", initParams = @WebInitParam(name="ocwd.deployer.email", value="admin@example.com"))
public class AppInfoServlet extends HttpServlet {

}

我不明白的是将初始化参数与servlet放在同一类中的用例。据我了解,这些参数应与类分开保存,并放入部署描述符中。

@WebServlet注释中指定init参数有哪些用例?


阅读 488

收藏
2020-12-03

共1个答案

一尘不染

批注用于提供默认值。

在JavaEE中,还可以使用注释来提供部署属性。给定注释的值后,仍可以使用部署描述符(即web.xml)覆盖注释提供的默认值。


在上面的示例中,init-param可以通过在中配置servlet具有匹配名称的来覆盖web.xml

  <servlet>
    <servlet-name>appInfoServlet</servlet-name>
    <init-param>
        <param-name>ocwd.deployer.email</param-name>
        <param-value>noreply@example.com</param-value>
    </init-param>
  </servlet>
2020-12-03