从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参数有哪些用例?
@WebServlet
批注用于提供默认值。
在JavaEE中,还可以使用注释来提供部署属性。给定注释的值后,仍可以使用部署描述符(即web.xml)覆盖注释提供的默认值。
在上面的示例中,init-param可以通过在中配置servlet具有匹配名称的来覆盖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>