Servlet 的 URLPattern配置
Servlet 的 URLPattern(URL 模式)用于定义 Servlet 的访问路径,决定了客户端如何通过 URL 访问 Servlet。URLPattern 可以在 @WebServlet 注解或 web.xml 中配置。
URLPattern 的匹配规则
URLPattern 支持多种匹配方式,包括精确匹配、路径匹配、扩展名匹配和默认匹配。以下是常见的匹配规则:
精确匹配 精确匹配要求 URL 完全匹配指定的路径。例如:
@WebServlet("/hello")可以匹配 /hello/a、/hello/b 等路径,但不能匹配 /hello。
扩展名匹配 扩展名匹配以 *. 开头,匹配指定扩展名的请求。例如:
@WebServlet("*.do")可以匹配 /test.do、/user/list.do 等路径。
默认匹配 默认匹配使用 /,通常用于默认 Servlet。例如:
@WebServlet("/")匹配所有未被其他 Servlet 处理的请求。
URLPattern 的优先级
当多个 URLPattern 可能匹配同一个请求时,Servlet 容器会按照以下优先级选择最具体的匹配:
- 精确匹配
- 路径匹配(最长路径优先)
- 扩展名匹配
- 默认匹配
在 web.xml 中配置 URLPattern
在 web.xml 中,可以通过 <url-pattern> 标签配置 URLPattern:
<servlet><servlet-name>MyServlet</servlet-name><servlet-class>com.example.MyServlet</servlet-class>
</servlet>
<servlet-mapping><servlet-name>MyServlet</servlet-name><url-pattern>/hello</url-pattern>
</servlet-mapping>多 URLPattern 配置
一个 Servlet 可以配置多个 URLPattern:
@WebServlet({"/hello", "/world"})注意事项
- URLPattern 区分大小写,具体行为取决于 Servlet 容器的实现。
- 避免在 URLPattern 中使用
/结尾的路径,除非明确需要路径匹配。 - 默认 Servlet 的 URLPattern 为
/,通常用于处理静态资源或未匹配的请求。
