1.11 使用部署描述符
在前面的范例中已经学过,编写和部署Servlet应用程序是很容易的。部署的一个方面是给Servlet映射配置一条路径。在那些例子中,利用WebServlet注解类型给一个Servlet映射了一条路径。
使用部署描述符是配置Servlet应用程序的另一种方法,关于部署描述符的详细讨论,可查看第16章的内容。部署描述符总是命名为web.xml,并放在WEB-INF目录下。本章将介绍如何创建一个名为app01c的Servlet应用程序,并为它编写一个web.xml文件。
app01c有两个Servlet:SimpleServlet和WelcomeServlet,以及一个映射Servlet的部署描述符。代码清单1-5和代码清单1-6分别展示了SimpleServlet和WelcomeServlet。注意,Servlet类没有用@WebServlet进行标注。部署描述符如代码清单1-7所示 。
使用部署描述符有许多好处。第一,可以包含@WebServlet中没有的元素,如load-on-startup元素。这个元素在应用程序启动时加载Servlet,而不是第一次调用Servlet时加载。使用load-on-startup意味着,Servlet的第一次调用并不比后续的调用更占用时间。如果Servlet的init方法比较费时的话,这个元素就特别有帮助。
使用部署描述符的另一个好处是,如果需要修改配置值,如Servlet路径,就不需要重新编译Servlet类。
此外,可以将初始参数传给一个Servlet,并且不需要重新编译Servlet类就可以对它们进行编辑。
部署描述符还允许覆盖Servlet注解中指定的值。Servlet中的WebServlet注解,如果没有在部署描述符中进行声明,那么它将是无效的。但是,一个带有部署描述符的应用程序,如果对于不在其部署描述符中的Servlet进行标注,则其仍然有效。这意味着,可以在标注完Servlet之后,又在同一个应用程序的部署描述符中声明Servlet。
图1-8展示了app01c的目录结构。这个目录结构与app01a的并没有太大的区别。唯一的不同在于,app01c在WEB-INF中有一个web.xml文件。
在部署描述符中声明了SimpleServlet和WelcomeServlet之后,就可以利用下面这些URL来访问它们了:
关于部署和部署描述符的更多信息,可查看第16章的内容。