当用tomcat作为web服务器时,在web.xml文件里配置servlet时需要指定url-pattern,它表示客户端请求的url与该servlet匹配的规则。servlet的url-pattern支持多种方式匹配,如下所示。
当用tomcat作为web服务器时,在web.xml文件里配置servlet时需要指定url-pattern,它表示客户端请求的url与该servlet匹配的规则。servlet的url-pattern支持多种方式匹配,如下所示。
- 精确匹配
servlet的url-pattern可以配置具体的url,例如:
<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
这样配置后,客户端请求http://localhost:8080/hello就能匹配到HelloServlet。
- 目录匹配
servlet的url-pattern也支持目录匹配,例如:
<servlet>
<servlet-name>FileServlet</servlet-name>
<servlet-class>FileServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileServlet</servlet-name>
<url-pattern>/file/*</url-pattern>
</servlet-mapping>
这里的/*表示匹配所有以/file/开头的url,例如http://localhost:8080/file/test.html和http://localhost:8080/file/a/b/c都会被匹配到FileServlet。
- 扩展名匹配
servlet的url-pattern也支持扩展名匹配,例如:
<servlet>
<servlet-name>ImageServlet</servlet-name>
<servlet-class>ImageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ImageServlet</servlet-name>
<url-pattern>*.jpg</url-pattern>
<url-pattern>*.png</url-pattern>
</servlet-mapping>
这里的.jpg和.png表示匹配所有以.jpg和.png结尾的url。
需要注意的是,servlet的url-pattern匹配是按照顺序进行的。例如:
<servlet>
<servlet-name>FileServlet</servlet-name>
<servlet-class>FileServlet</servlet-class>
</servlet>
<servlet>
<servlet-name>ImageServlet</servlet-name>
<servlet-class>ImageServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileServlet</servlet-name>
<url-pattern>/file/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ImageServlet</servlet-name>
<url-pattern>*.jpg</url-pattern>
<url-pattern>*.png</url-pattern>
</servlet-mapping>
客户端请求http://localhost:8080/file/test.jpg时,会优先匹配到FileServlet而不是ImageServlet。
另外,servlet的url-pattern也支持正则表达式匹配,但这超出了本文的范围,读者可以自行了解。
本文标题为:servlet的url-pattern匹配规则详细描述(小结)


基础教程推荐
- Spring Cloud Eureka服务注册中心入门流程分析 2023-01-23
- java – 如何在动态查询中保护自己免受SQL注入? 2023-11-01
- 2022 最新 IntelliJ IDEA 详细配置步骤演示(推荐) 2023-05-19
- Spring中Bean扫描原理详情 2023-02-18
- Spring Boot优化后启动速度快到飞起技巧示例 2023-03-15
- Intellij IDEA根据maven依赖名查找它是哪个pom.xml引入的(图文详解) 2023-04-22
- Spring Security实现用户名密码登录详解 2023-06-23
- java – 使用AtomicReference.compareAndSet来设置对数据库调用结果的引用是否合适? 2023-11-02
- java – 无限循环数据库检查 2023-11-02
- jsp中四种传递参数的方法 2023-08-01