婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > tomcat關于配置servlet的url-pattern的問題思路詳解

tomcat關于配置servlet的url-pattern的問題思路詳解

熱門標簽:鶴壁電銷外呼系統(tǒng)怎么安裝 地圖標注需要現(xiàn)場嗎 工廠位置地圖標注 地圖標注企業(yè)名稱侵權(quán)案件 網(wǎng)站上插入地圖標注內(nèi)容 繽客網(wǎng)注冊時地圖標注出不來 企業(yè)400電話辦理哪正規(guī) 重慶營銷外呼系統(tǒng)排名 400電話辦理哪家好廠商

tomcat在配置web.xml的時候,servlet是一個比較重要的問題,在這里討論一下servlet中的幾個痛點

  1.  servlet url-pattern的匹配問題
  2. url-pattern中 //* 的區(qū)別
  3. url-pattern的優(yōu)先級問題
  4. 根路徑 / 的匹配問題

1 servlet url-pattern 的匹配問題

url-pattern 有三種匹配模式,分別是路徑匹配、精確匹配、后綴匹配

1.1 精確匹配

<url-pattern> 中配置的項必須與url完全精確匹配。

代碼舉例:point_down:

<servlet-mapping>
 <servlet-name>MyServlet</servlet-name>
 <url-pattern>/kata/detail.html</url-pattern>
 <url-pattern>/demo.html</url-pattern>
 <url-pattern>/table</url-pattern>
</servlet-mapping>

當在瀏覽器中輸入如下幾種url時,都會被匹配到該servlet

http://10.43.11.143/myapp/kata/detail.html
http://10.43.11.143/myapp/demo.html

http://10.43.11.143/myapp/table

注意:

http://10.43.11.143/myapp/table/ 是非法的url,不會被當作 http://10.43.11.143/myapp/table 識別

另外上述url后面可以跟任意的查詢條件,都會被匹配,如

http://10.43.11.143/myapp/table?hello 這個請求就會被匹配到MyServlet。

1.2 路徑匹配

以“/”字符開頭,并以“/*”結(jié)尾的字符串用于路徑匹配

代碼舉例:point_down:

<servlet-mapping>
 <servlet-name>MyServlet</servlet-name>
 <url-pattern>*.jsp</url-pattern>
 <url-pattern>*.action</url-pattern>
</servlet-mapping>

路徑以/user/開始,后面的路徑可以任意。比如下面的url都會被匹配。

http://localhost:8080/appDemo/user/users.html

http://localhost:8080/appDemo/user/addUser.action

http://localhost:8080/appDemo/user/updateUser.actionl

1.3 后綴匹配

以“*.”開頭的字符串被用于后綴匹配

代碼舉例:point_down:

<servlet-mapping>
 <servlet-name>MyServlet</servlet-name>
 <url-pattern>*.jsp</url-pattern>
 <url-pattern>*.action</url-pattern>
</servlet-mapping>

則任何擴展名為jsp或action的url請求都會匹配,比如下面的url都會被匹配

http://localhost:8080/appDemo/user/users.jsp

http://localhost:8080/appDemo/toHome.action

注意:路徑和后綴匹配無法同時設置

注意:路徑和擴展名匹配無法同時設置,比如下面的三個 都是非法的,如果設置,啟動tomcat服務器會報錯。

<url-pattern>/kata/*.jsp</url-pattern>

<url-pattern>/*.jsp</url-pattern>

<url-pattern>he*.jsp</url-pattern>

幾個實例:point_down:,不明白請看本文第三章

2 url-pattern中 //* 的區(qū)別

<url-pattern>/</url-pattern>

<url-pattern>/*</url-pattern>

先說 /*/* 相對來講比較好理解,它是路徑匹配的一種,從范圍上來講,它是范圍最廣的路徑匹配,所有的請求都符合它的要求,從精度上來講,它是精度最低的路徑匹配( 注意!我說的是路徑匹配 ),路徑匹配的優(yōu)先級是從長到短的( 具體請看本文第三章 ),所以說它是精度最低的路徑匹配。很多博客中說它的特點是匹配 *.jsp ,這不是廢話嗎? /* 本身就是路徑匹配,它當然可以匹配 *.jsp

再說 / , / 是匹配優(yōu)先級最低的匹配 ,當一個url和所有的 url-pattern 匹配都不合適的時候,這個url就會走 / 匹配,根本就沒有什么 *.jsp 的限制,大家之所以產(chǎn)生了(客觀上也確實是這樣) / 不會匹配 *.jsp 但是 /* 會匹配 *.jsp 的原因是在tomcat/conf/web.xml里面單獨配置了 *.jsp 的配置, 具體請看本文第三章

3 url-pattern的優(yōu)先級問題

當一個url與多個servlet的匹配規(guī)則可以匹配時,則按照 “ 精確路徑 > 最長路徑>后綴匹配”這樣的優(yōu)先級匹配到對應的servlet。

例1:比如servletA 的url-pattern為 /test,servletB的url-pattern為 /* ,這個時候,如果我訪問的url為http://localhost/test ,這個時候容器就會先進行精確路徑匹配,發(fā)現(xiàn)/test正好被servletA精確匹配,那么就去調(diào)用servletA,不會去管servletB。

例2:比如servletA的url-pattern為/test/ ,而servletB的url-pattern為/test/a/ ,此時訪問http://localhost/test/a時,容器會選擇路徑最長的servlet來匹配,也就是這里的servletB。

例3: 比如servletA的url-pattern:*.action ,servletB的url-pattern為 / * ,這個時候,如果我訪問的url為http://localhost/test.action,這個時候容器就會優(yōu)先進行路徑匹配,而不是去匹配擴展名,這樣就去調(diào)用servletB。

那么就產(chǎn)生了一個疑問。為什么 /* 會匹配到 *.jsp ,但是/匹配不到 *.jsp

原因很簡單,在tomcat/conf/web.xml里面會有如下配置

<servlet-mapping>
 <servlet-name>default</servlet-name>
 <url-pattern>/</url-pattern>
</servlet-mapping>

<!-- The mappings for the JSP servlet -->
<servlet-mapping>
 <servlet-name>jsp</servlet-name>
 <url-pattern>*.jsp</url-pattern>
 <url-pattern>*.jspx</url-pattern>
</servlet-mapping>

:point_up_2:可以清楚地看到 *.jsp 作為名為jsp的servlet的后綴匹配,/*是路徑匹配,其優(yōu)先級高于后綴匹配,所以能匹配到后綴為jsp的文件。而 / 是級別最低的匹配,其級別低于后綴匹配,所以jsp文件不會被 url-pattern 為/的匹配到。

4 根路徑 / 的匹配問題

大家應該會注意到一個問題,就是當url-pattern為/*的時候訪問http://localhost:8080/會404,但是訪問http://localhost:8080/index.html卻沒有問題(當然前提是在spring容器里面配置了 <mvc:default-servlet-handler/> )。當url-pattern為/時, http://localhost:8080/ 會自動轉(zhuǎn)發(fā)到 http://localhost:8080/index.html 而不會404。原因是什么呢?

首先,我們必須要明確,一個網(wǎng)址的根目錄即/(比如http://localhost:8080/)到底意味著什么?經(jīng)過實驗發(fā)現(xiàn)/是很特殊的,它會被url-pattern為/*的匹配,但他不會被url-pattern為/匹配。

在tomcat中,/默認是屬于會被defaultservlet匹配,但是其優(yōu)先級低于路徑匹配,所以當某一個servlet的url-pattern為/*時,/就會被這個servlet匹配,從而不被defaultservlet匹配。

在tomcat源代碼中找到如下片段可以佐證我的看法:point_down:

<!-- ==================== Default Welcome File List ===================== -->
<!-- When a request URI refers to a directory, the default servlet looks  -->
<!-- for a "welcome file" within that directory and, if present, to the   -->
<!-- corresponding resource URI for display.                              -->
<!-- If no welcome files are present, the default servlet either serves a -->
<!-- directory listing (see default servlet configuration on how to       -->
<!-- customize) or returns a 404 status, depending on the value of the    -->
<!-- listings setting.                                                    -->
<!--                                                                      -->
<!-- If you define welcome files in your own application's web.xml        -->
<!-- deployment descriptor, that list *replaces* the list configured      -->
<!-- here, so be sure to include any of the default values that you wish  -->
<!-- to use within your application.   

:point_up_2:上面是講 Welcome File List 的,即 / 路徑會被默認轉(zhuǎn)發(fā)到 Welcome File List 中規(guī)定的網(wǎng)頁,即初始頁。我翻譯一下上面的一部分,具體的可以谷歌翻譯,翻譯:point_right:

翻譯:point_down:

當請求URI指向目錄時,默認servlet在該目錄中查找“歡迎文件”,如果存在,則在相應的資源URI中查找以進行顯示。如果不存在歡迎文件,則默認servlet會提供目錄列表(請參閱默認servlet配置中的有關如何自定義的內(nèi)容)或返回404狀態(tài),具體取決于列表設置的值

/會重定向到歡迎頁面的原因是 Welcome File List 的存在, Welcome File List 發(fā)揮效果的前提是/必須被defaultservlet匹配。當某一個servlet的url-pattern為/*時,/就會被這個servlet匹配,從而不被defaultservlet匹配。所以只有在自己定義的servlet的url-pattern為/時, http://localhost:8080/ 會自動轉(zhuǎn)發(fā)到 http://localhost:8080/index.html 而不會404

總結(jié)

到此這篇關于tomcat關于配置servlet的url-pattern的問題詳解的文章就介紹到這了,更多相關tomcat配置servlet問題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

標簽:棗莊 渭南 東莞 克拉瑪依 日照 常州 96 鹽城

巨人網(wǎng)絡通訊聲明:本文標題《tomcat關于配置servlet的url-pattern的問題思路詳解》,本文關鍵詞  tomcat,關于,配置,servlet,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關。
  • 相關文章
  • 下面列出與本文章《tomcat關于配置servlet的url-pattern的問題思路詳解》相關的同類信息!
  • 本頁收集關于tomcat關于配置servlet的url-pattern的問題思路詳解的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    日韩国产精品久久久| 高清久久久久久| 国产成人综合自拍| 精品国产免费一区二区三区香蕉| 亚洲不卡av一区二区三区| 欧美挠脚心视频网站| 免费成人在线视频观看| 欧美一区二区三区四区五区 | 国产一区二区精品久久91| 日韩一区二区在线观看视频| 美女一区二区久久| 国产午夜精品在线观看| 99国产精品久久久久久久久久久| 亚洲人亚洲人成电影网站色| 91福利国产精品| 日韩中文字幕区一区有砖一区 | 一本大道av一区二区在线播放| 国产精品网站在线播放| 欧美在线|欧美| 韩国视频一区二区| 亚洲精品综合在线| 日韩欧美成人激情| 99国产精品久久久久久久久久| 国产精品久久久久一区二区三区 | 久久久久99精品一区| 91美女片黄在线观看| 免费的成人av| 亚洲欧洲精品一区二区精品久久久| 色偷偷久久一区二区三区| 亚洲国产精品一区二区久久| 精品国产乱码久久久久久免费| 91久久一区二区| 国产精品亚洲а∨天堂免在线| 午夜精品久久久久| 亚洲私人影院在线观看| 精品国产3级a| 91精品国产91久久综合桃花| a级精品国产片在线观看| 美女视频黄 久久| 亚洲欧美激情视频在线观看一区二区三区 | 日韩一级片在线观看| 99久久99久久精品免费看蜜桃| 日日夜夜一区二区| 最新日韩av在线| 久久综合久久99| 91麻豆精品在线观看| 图片区小说区区亚洲影院| 国产亚洲一区二区三区| 色就色 综合激情| 日韩中文字幕不卡| 综合欧美一区二区三区| 中文在线资源观看网站视频免费不卡| 欧美日韩激情一区| 91丝袜美女网| 色综合久久中文字幕| 国精产品一区一区三区mba视频 | 久久不见久久见免费视频7| 亚洲中国最大av网站| 中文无字幕一区二区三区| xfplay精品久久| 日韩欧美国产午夜精品| 欧美天天综合网| 本田岬高潮一区二区三区| 国产一区二区在线电影| 久久9热精品视频| 久久电影网站中文字幕 | 99视频有精品| 99久久99久久精品国产片果冻| 99久久99久久精品国产片果冻| 盗摄精品av一区二区三区| 成人一区二区三区在线观看| eeuss鲁片一区二区三区| 在线看日韩精品电影| 制服丝袜一区二区三区| 日韩欧美成人午夜| 久久精品欧美一区二区三区不卡| 激情成人综合网| 国产精品77777竹菊影视小说| 国产成+人+日韩+欧美+亚洲| 国产91在线看| 成人网页在线观看| 91在线高清观看| 欧美三片在线视频观看| 这里是久久伊人| 久久久亚洲午夜电影| 中文av字幕一区| 一区二区三区中文字幕精品精品| 亚洲成人av在线电影| 免费在线一区观看| 国产一区二区三区日韩| 国产成人aaaa| 91麻豆国产香蕉久久精品| 欧美主播一区二区三区| 91精品国产综合久久精品 | 国产高清不卡二三区| 波波电影院一区二区三区| 日韩中文字幕91| 国产精品88888| 99久精品国产| 99re热视频这里只精品| 欧美老人xxxx18| 337p粉嫩大胆噜噜噜噜噜91av| 综合自拍亚洲综合图不卡区| 丝袜美腿亚洲一区二区图片| 成人免费视频caoporn| 欧美日韩国产成人在线免费| 国产清纯白嫩初高生在线观看91 | 图片区小说区区亚洲影院| 日本系列欧美系列| 成人黄色a**站在线观看| 欧美日韩免费一区二区三区视频| 日韩三级伦理片妻子的秘密按摩| 国产精品美女久久久久久久网站| 亚洲高清久久久| av不卡免费电影| 精品国产免费一区二区三区香蕉 | 欧美xingq一区二区| 亚洲免费av高清| 九九久久精品视频| 在线观看日产精品| 久久久无码精品亚洲日韩按摩| 国产精品久久久久久久久晋中 | 亚洲另类在线视频| 麻豆专区一区二区三区四区五区| jizzjizzjizz欧美| 精品美女在线观看| 一区二区三区资源| 国产iv一区二区三区| 精品精品国产高清a毛片牛牛| 亚洲精品国产a| 91久久奴性调教| 亚洲欧美日韩小说| 国产成人av一区二区| 欧美久久一区二区| 性感美女极品91精品| 91香蕉视频在线| 亚洲精品视频免费观看| 在线精品视频一区二区三四| 日韩久久一区二区| 成人久久久精品乱码一区二区三区| 久久精品日产第一区二区三区高清版| 国产精品一区三区| 国产精品激情偷乱一区二区∴| 国产成人av资源| 亚洲人亚洲人成电影网站色| 日本道在线观看一区二区| 亚洲午夜久久久久久久久久久| 91精品国产综合久久久久| 国内外成人在线| 国产精品乱码妇女bbbb| 色偷偷久久人人79超碰人人澡| 图片区小说区区亚洲影院| 日韩精品在线网站| 国产九九视频一区二区三区| 欧美激情在线看| 日本伦理一区二区| 综合久久国产九一剧情麻豆| 欧美性大战久久| 日韩国产精品91| 欧美大片在线观看一区二区| 国产高清成人在线| 亚洲美女少妇撒尿| 欧美色精品在线视频| 国精产品一区一区三区mba桃花 | 欧美嫩在线观看| 日韩va亚洲va欧美va久久| 欧美丰满嫩嫩电影| 99免费精品在线| 亚洲午夜精品久久久久久久久| 日韩视频国产视频| 丁香网亚洲国际| 亚洲三级免费观看| 精品国产凹凸成av人网站| av在线播放成人| 美女任你摸久久| 亚洲欧美日韩中文播放| 精品久久久网站| 欧美另类z0zxhd电影| 成人黄色网址在线观看| 亚洲国产精品自拍| 中文字幕巨乱亚洲| 7777精品伊人久久久大香线蕉完整版 | 欧美成人午夜电影| 成人精品高清在线| 久久精品国产99久久6| 亚洲欧美日韩国产成人精品影院| 91麻豆精品91久久久久久清纯| 不卡视频免费播放| 精品综合久久久久久8888| 亚洲成年人网站在线观看| 国产精品二三区| 久久久久九九视频| 日韩欧美久久久| 欧美在线|欧美| 一本大道久久a久久综合婷婷| 国产精品一线二线三线| 国产专区欧美精品| 激情文学综合插| 热久久一区二区| 美女视频网站久久|