4.1.1 编写web.xml文件

优质
小牛编辑
136浏览
2023-12-01

在Web服务器中运行Servlet的部分被称为Servlet容器。Servlet要想在Servlet容器中正常运行,必须要使用web.xml(在WEB-INF目录中)文件进行配置(虽然使用Java IDE在大多数情况下是不需要手工配置web.xml的,但理解和掌握web.xml的常用配置将会有助于更进一步学习Java Web技术)。web.xml是一个标准的XML格式文件。下面是一个标准的web.xml配置文件的内容:

<!--  web.xml  -->
<?xml version="1.0" encoding="UTF-8"?>
<!--  web.xml中的顶层元素  -->
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">
     <!--  定义欢迎页  -->
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
     <!--  定义Servlet  -->
    <servlet>
        <description></description>
        <display-name>QueryBook</display-name>
        <servlet-name>QueryBook</servlet-name>
        <servlet-class>chapter3.QueryBook</servlet-class>
    </servlet>
    <!--  定义Servlet映射  -->
    <servlet-mapping>
        <servlet-name>QueryBook</servlet-name>
        <url-pattern>/QueryBook</url-pattern>
    </servlet-mapping>
</web-app>

在上面的web.xml文件中中有四个主要的元素:

1. <web-app>:最顶层的元素。所有的web.xml文件都必须拥有这个元素。<web-app>主要描述了当前使用的Servlet的版本以及其他一些文档类型声明,如上面的web.xml文件中描述了Servlet的版本是2.5

2. <servlet>:用于定义和Servlet相关的信息,这个元素含有四个子元素:

(1)<servlet-class>:用来定义Servlet和哪一个具体的类对应,如本例中定义的是chapter3.QueryBook。

(2)<servlet-name>:用于定义Servlet的唯一标识(也就是Servlet名)。如本例中定义了QueryBook。<servlet>元素可以有多个,但是每个<servlet>的<servlet-name>元素的值不能重复,否则Tomcat在启动时会抛出异常。

(3)<description>:该元素提供了用于描述Servlet的文本信息。

(4)<display-name>:该元素提供了一些GUI工具可以显示的Servlet的文本信息。

3. <serlvet-mapping>:该元素一般和<servlet>元素成对出现。用于将Servlet映射成用户可访问的Web路径。其中<url-pattern>定义了可访问的Web路径,但要注意,这个Web路径必须以“/”开头,否则Tomcat在启动时会抛出异常。在第3章访问QueryBook的URL是“http://localhost:8080/demo/QueryBook”。而在<url-pattern>中定义的就是“/QueryBook”部分。当然,也可以将其定义成其他的形式,甚至可以将其模拟成其他语言的Web程序,如将<url-pattern>元素的值设为如下形式:

<url-pattern>/abc.php</url-pattern>

在IE地址栏中只要输入http://localhost:8080/demo/abc.php就可以访问QueryBook了。<url-pattern>中的<servlet-name>与<servlet>中的<servlet-name>完全一样,表示当前的<servlet-mapping>要映射的Servlet名。<servlet-mapping>和<servlet>是多对一的关系。也就是说,多个<servlet-mapping>可以对应一个<servlet>,这样就可以为一个Servlet定义多个可访问的Web路径。如下面的配置代码所示:

<servlet>
    <servlet-name>QueryBook</servlet-name>
    <servlet-class>chapter3.QueryBook</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>QueryBook</servlet-name>
    <url-pattern>/QueryBook</url-pattern>
</servlet-mapping>
<servlet-mapping>
    <servlet-name>QueryBook</servlet-name>
    <url-pattern>/querybook.abc</url-pattern>
</servlet-mapping>

 

如果使用上面的配置,就可以同时通过如下两个URL来访问QueryBook:

http://localhost:8080/demo/QueryBook

http://localhost:8080/demo/querybook.abc

4. <webcome-file-list>:该元素其实就相当于IIS中的默认页。也就是说,如果在浏览器中只访问http://localhost:8080/demo,而不指定具体的Servlet或其他Web资源的路径,系统会自动访问<webcome-file-list>元素中<webcome-file>子元素所指定的文件或Web路径。要注意的是,<webcome-file>元素只能是相对于当前Web工程的相对路径,不能是绝对路径,如http://www.sina.com.cn是不合法的。<webcome-file>元素的值可以是任何形式的相对路径,但前面不能加“/”,这一点和<url-pattern>元素恰恰相反。如<webcome-file>元素的值可以是“index.jsp”,但不能是“/index.jsp”,否则将无法访问。<webcome-file-list>元素可以有多个<webcome-file>子元素,如果第一个<webcome-file>元素所指的相对路径无法访问,系统就会访问第二个<webcome-file>元素所指的相对路径,以此类推。