Servlet虚拟路径映射
Servlet 虚拟路径映射可以被分为 2 类:
单一映射
多重映射
下面介绍如何实现单一映射和多重映射。
Servlet 单一映射
Servelt 单一映射是指一个 Servlet 只被映射到一个虚拟路径上。Servlet 单一映射的实现方式有 2 种:
使用 web.xml 实现单一映射;
使用 @WebServlet 实现单一映射。
1. web.xml 实现单一映射
在 web.xml 文件中,使用 <servlet> 和 <servlet-mapping> 元素实现 Servlet 单一映射,代码如下。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3网站站点" rel="nofollow" />
package net.biancheng.www;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/MyServlet")
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
也可以使用 urlPatterns 属性实现 Servlet 单一映射,代码如下。
package net.biancheng.www;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(urlPatterns = "/myServlet")
public class MyServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
Servlet 多重映射
Servlet 的多重映射是指一个 Servlet 可以被映射到多个虚拟路径上。此时,客户端可以通过多个路径实现对同一个 Servlet 的访问。Servlet 多重映射的实现方式有 3 种:
配置多个 <servlet-mapping> 元素。
配置多个 <url-pattern> 子元素。
在 @WebServlet 的 urlPatterns 属性中使用字符串数组
1. 配置多个 <servlet-mapping> 元素
Servlet 2.5 规范之前,<servlet-mapping> 元素只允许包含一个 <url-pattern> 子元素,若要实现 Servet 的多重映射,只能通过配置多个 <servlet-mapping> 元素实现。以 serveltDemo 为例,在 web.xml 中配置两个 <servlet-mapping> 元素,代码如下所示。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3网站站点" rel="nofollow" />
在地址栏中输入“http://localhost:8080/servletDemo/myServlet2”,也可以访问 MyServlet,结果如下图。

2. 配置多个 <url-pattern> 子元素
从 Servlet 2.5 开始,<servlet-mapping> 元素可以包含多个 <url-pattern> 子元素,每个 <url-pattern> 代表一个虚拟路径的映射规则。因此,通过在一个 <servlet-mapping> 元素中配置多个 <url-pattern> 子元素,也可以实现 Servlet 的多重映射。以 servletDemo 为例,<servlet-mapping> 元素下添加两个 <url-pattern> 子元素,代码如下。
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3网站站点" rel="nofollow" />




