当前位置 : 主页 > 编程语言 > java >

JavaWeb中URL匹配规则详解

来源:互联网 收集:自由互联 发布时间:2023-03-22
URL的匹配规则 ​​精确匹配​​ ​​扩展名匹配​​ ​​路径匹配​​ ​​任意匹配​​ ​​匹配所有​​ ​​路径匹配优先顺序​​ ​​多映射URL的实现方式​​ 精确匹配 精确

URL的匹配规则

  • ​​精确匹配​​
  • ​​扩展名匹配​​
  • ​​路径匹配​​
  • ​​任意匹配​​
  • ​​匹配所有​​
  • ​​路径匹配优先顺序​​
  • ​​多映射URL的实现方式​​

精确匹配

精确匹配是指中配置的值必须与url完全精确匹配。

JavaWeb中URL匹配规则详解_javaweb

扩展名匹配

在允许使用统配符“”作为匹配规则,“”表示匹配任意字符。在扩展名匹配中只要扩展名相同都会被匹配和路径无关。注意,在使用扩展名匹配时在中不能使用“/”,否则容器启动就会抛出异常。

JavaWeb中URL匹配规则详解_bc_02

路径匹配

根据请求路径进行匹配,在请求中只要包含该路径都匹配。“*”表示任意路径以及子路径。注意这里是指该项目下以love为路径开头进行访问;

JavaWeb中URL匹配规则详解_扩展名_03

比如访问 like/love 就不可以

JavaWeb中URL匹配规则详解_html_04

任意匹配

匹配“/”。匹配所有但不包含JSP页面

JavaWeb中URL匹配规则详解_扩展名_05

匹配所有

JavaWeb中URL匹配规则详解_html_06

但是这就会有一个问题,当一个路径符合多个匹配规则时,那么该怎么办呢?

路径匹配优先顺序

当一个url与多个Servlet的匹配规则可以匹配时,则按照 “ 精确路径 > 最长路径 >扩展名”这样的优先级匹配到对应的Servlet

案例分析

Servlet1映射到 /abc/*

Servlet2映射到 /*

Servlet3映射到 /abc

Servlet4映射到 *.do

当请求URL为“/abc/a.html”,“/abc/”和“/”都匹配,Servlet引擎将调用Servlet1。

当请求URL为“/abc”时,“/abc/*”和“/abc”都匹配,Servlet引擎将调用Servlet3。

当请求URL为“/abc/a.do”时,“/abc/”和“.do”都匹配,Servlet引擎将调用Servlet1。

当请求URL为“/a.do”时,“/”和“.do”都匹配,Servlet引擎将调用Servlet2。

当请求URL为“/xxx/yyy/a.do”时,“/”和“.do”都匹配,Servlet引擎将调用Servlet2。

URL映射方式

在web.xml文件中支持将多个URL映射到一个Servlet中,但是相同的URL不能同时映射到两个Servlet中。

多映射URL的实现方式

JavaWeb中URL匹配规则详解_html_07

JavaWeb中URL匹配规则详解_bc_08

上一篇:图解Redis,Redis主从复制与Redis哨兵机制
下一篇:没有了
网友评论