什么是虚拟路径映射
概念:
客户端通过 URL 地址来访问 Web 服务器中的资源,Servlet 程序若想被外界访问,就必须被映射到一个 URL 地址上。
特点:
-
该 URL 地址和 Servlet 程序的物理路径(在硬盘上的存储位置)不一致,被称为虚拟路径。
-
Servlet 与虚拟路径的对应关系叫做 Servlet 虚拟路径映射。
Servlet虚拟路径映射分类
-
单一映射
-
多重映射
单一映射
使用web.xml实现单一映射
使用@WebServlet实现单一映射
使用urlPatterns实现单一映射
web.xml实现单一映射
使用方法:
使用 <servlet>
和 <servlet-mapping>
元素实现 Servlet 单一映射
@WebServlet实现单一映射
使用方法:
直接在@WebServlet注解后+路径:
package ServletPractice;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* 编写一个Servlet容器,不使用注释的方法
* @since JDK 1.8
* @date 2021/09/15
* @author Lucifer
*/
urlPatterns实现单一映射
在@WebServlet内使用urlPatterns属性:
package ServletPractice;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* 编写一个Servlet容器,不使用注释的方法
* @since JDK 1.8
* @date 2021/09/15
* @author Lucifer
*/
Servlet多重映射
配置多个
<servlet-mapping>
元素配置多个
<url-pattern>
子元素@WebServlet+
urlPatterns
实现
配置多个<servlet-mapping>
元素
配置多个元素,使多个元素指向一个<servlet-name>
元素:
这样配置以后在网页可以访问到该Servlet类的URL就有两个:
-
http://localhost:8080/servletPractice/myServlet
-
http://localhost:8080/servletPractice/myServlet2
还可以在一个servlet-mapping
下配置多个<url-pattern>
子节点:
@WebServlet实现多重映射
实现方法:
使用@WebServlet注释+urlPattern实现:
package ServletPractice;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
/**
* 使用@WebServlet注释+urlPatter实现多重映射一个Servlet资源
* @since JDK 1.8
* @date 2021/09/15
* @author Lucifer
*/