在 web.xml 文件中,一个
创建好的 Servlet 只有映射成虚拟路径,客户端才能对其进行访问。但是在映射 Servlet 时,还有内容需要学习,如 Servlet 的多重映射、在映射路径中使用通配符、配置默认的 Servlet 等。本节将对这些内容进行讲解。
Servlet 的多重映射指同一个 Servlet 可以被映射成多条虚拟路径。也就是说,客户端可以通过多条路径实现对同一个 Servlet 的访问。Servlet 多重映射的实现方式有以下两种。
1)配置多个
以《第一个Servlet程序》教程中的 test 为例,在 web.xml 文件中的
hello test
hello /hi
hello /hi2
重启 Tomcat 服务器

通过图 1 和图 2 的比较,发现使用两个 URL 地址都可以正常访问 TestServlet01。由此可见,通过配置多个
2)配置多个
同样以 test 为例,在 web.xml 文件中对 TestServlet01 的
TestServlet01 /TestServlet01 /Test02
重启 Tomcat 服务器

在实际开发过程中,开发者有时会希望某个目录下的所有路径都可以访问同一个 Servlet,这时,可以在 Servlet 映射的路径中使用通配符*。通配符的格式有两种,具体如下。
需要注意的是,这两种通配符的格式不能混合使用,例如,/abc/*.do 是不合法的映射路径。另外,当客户端访问一个 Servlet 时,如果请求的 URL 地址能够匹配多条虚拟路径,那么 Tomcat 将采取最具体匹配原则查找与请求 URL 最接近的虚拟映射路径。例如,对于如下所示的一些映射关系:
/abc/* 映射到 Servlet1/* 映射到 Servlet2/abc 映射到 Servlet3*.do 映射到 Servlet4
如果某个 Servlet 的映射路径仅仅是一个正斜线(/),那么这个 Servlet 就是当前 Web 应用的默认 Servlet。Servlet 服务器在接收到访问请求时,如果在 web.xml 文件中找不到匹配的
下面对《第一个Servlet程序》教程中的web.xml文件进行修改,将其设置为默认的 Servlet,具体如下:
TestServlet01 com.mengma.servlet.TestServlet01 TestServlet01 /
启动 Tomcat 服务器,在浏览器的地址栏中输入任意地址
需要注意的是,在 Tomcat 安装目录下的 web.xml 文件中也配置了一个默认的 Servlet,配置信息如下所示:
default org.apache.catalina.servlets.DefaultServlet 1 default /
在上面的配置信息中,org.apache.catalina.servlets.DefaultServlet 被设置为默认的 Servlet,它对 Tomcat 服务器上所有的 Web 应用都起作用。
当 Tomcat 服务器中的某个 Web 应用没有默认 Servlet 时,都会将 DefaultServlet 作为默认的 Servlet。当客户端访问 Tomcat 服务器中的某个静态 HTML 文件时,DefaultServlet 会判断 HTML 是否存在,如果存在,则会将数据以流的形式回送给客户端,否则会报告 404 错误。
默认web.xml欢迎页面
为index.html我给更改为:
/pages/template/login.jsp
某个路径下的jsp文件
welcome-file-list可以转向到servlet,但是!!!前提是servlet不能有扩展名,否则就当成静态文件处理了于是配置如下:
index