1. 程式人生 > >url-pattern中的/和/*的區別

url-pattern中的/和/*的區別

url-pattern配置為"/"和"/*"的區別

最近在學習springMVC框架,對於其前端控制器的過濾配置url-pattern很困惑。遂百度查各種資料,翻閱各種部落格,發現每個人的說法都不一樣,很多人的理解都是錯的!於是找大牛解惑,大牛就是大牛,一下子就讓我明白了。

解:首先大家都知道"/*"可以匹配所有url,包括帶副檔名的,一般只用在過濾器上。

而"/"很多人理解成不能攔截帶副檔名的,這種理解是錯誤的!它其實也能攔截“.js”,“.css”,".png"等靜態資源的訪問。

看官方文件可知,它是tomcat的預設servlet,當其他的url-pattern匹配不上時都會走這個servlet。它除了能夠處理靜態資源還能夠處理HTTP快取請求,媒體(音訊/視訊)資料流和檔案下載簡歷。所以如果我們的專案中配置了"/",會覆蓋掉tomcat中的default servlet。


tomcat伺服器的web.xml配置:

所以當springMVC的前端控制器配置為“/”時,需要在主配置檔案中配置放行靜態資源。

第一種:

<!-- 放行靜態資源 -->

<mvc:resources location="/js/" mapping="/js/**"/> 

<mvc:resources location="/css/" mapping="/js/**"/>

 <mvc:resources location="/images/" mapping="/js/**"/>

第二種:

<mvc:default-servlet-handler />

相關推薦

url-pattern的//*的區別

url-pattern配置為"/"和"/*"的區別 最近在學習springMVC框架,對於其前端控制器的過濾配置url-pattern很困惑。遂百度查各種資料,翻閱各種部落格,發現每個人的說法都不一樣,很多人的理解都是錯的!於是找大牛解惑,大牛就是大牛,一下子就讓我明白

spring MVC的困惑 url-pattern的//*有區別

今天在寫專案時發現一個spring 總是報org.springframework.web.servlet.DispatcherServlet noHandlerFound警告: No mapping found for HTTP request with URI [/my

Servlet URL對映//*的區別

程式碼如下所示: <servlet-mapping> <servlet-name>main</servlet-name> <url-pattern>/*</url-pattern>

php???:區別

??和?:區別: $headerVal = 0; $this->params = $headerVal ?? 2; 相當於 isset($headerVal) ? $headerVal : 2; //結果是0 $this->params = $headerVal ?: 2; 相當於

C++:::區別用法的一些總結

冒號(:)的用法 1、既定義變數所佔的大小 例如: unsigned char a:4;   2、public:和private:後面的冒號,表示後面定義的所有成員都是公有或私有的,例如: class A { public: int a;

mybatis#{}${}區別

開發思考由來: <select id="findUserById" parameterType="int" resultType="com.zzu.ssm.po.User"> select * from user where id=#{id}

Python3// /區別

clas 大於 一個 pytho 其中 整數 大整數 mar 中一 " / "表示浮點數除法,返回浮點float結果;" // "表示整數除法,返回一個不大於" / "計算結果的最大整數int,特別註意如果其中一個操作數位負數,則結果必為負數。如: a = 5/3b = 5

php“=>” “->” 區別

=>一般應用到陣列中,是一個對應關係。 ->一般是類方法的呼叫。 ->  用於類中,訪問類中的方法  eg:<?php   class Hello{function ad_demo{echo "hello word";} }      $word =

mybatis #{} ${} 區別

在使用MyBatis 框架時 ,在xml的配置檔案中,通常是使用#{} 來獲取數值的 如 :select * from t_user_inf where ID = #{id} ; 這時 如果你傳入的值為zhangsan  ,則會編譯成為   select * from t

Mybatis ${} #{} 區別

1. #將傳入的資料都當成一個字串,會對自動傳入的資料加一個雙引號。如:order by #user_id#,如果傳入的值是111,那麼解析成sql時的值為order by "111", 如果傳入的值是id,則解析成的sql為order by "id".  2. $將傳入的資

URL引數&+被轉成空格

     在ajax傳輸密碼串的時候,密碼總是報錯,檢視日誌發現密碼串有很多的空格,檢視在非ajax中傳輸的密碼串,發現密碼串中的&和+都被轉義成了空格。       檢視網上的資料[1]發現   web開發中通過問號(?)方式在瀏覽器位址列中傳值時。瀏覽器是通

js=====區別

轉換成 都是 sna 比較 數據類型 -h 其中 class 位置 js中==和===區別 簡單來說: == 代表相同, ===代表嚴格相同, 為啥這麽說呢, 這麽理解: 當進行雙等號比較時候: 先檢查兩個操作數數據類型,如果相同, 則進行===比較, 如果不同,

SpringMVCurl-pattern //*的區別

學習Spring的時候,在配置web.xml的時候,把url-pattern 配置成/*,啟動專案後去訪問自己的Controller總是報404.檢查了很多發現資源是存在的,配置的地址也沒有問題,為什麼會出現404錯誤呢?最後發現是自己配置的 url-patte

web.xmlurl-pattern //*之間的區別

在寫springMVC小例子的時候遇到了攔截的問題,在url-pattern中引數的兩種方式 一、 <servlet-mapping> <servlet-name>springMVC</servlet-name> <

<url-pattern>寫成//*的區別

空串 login 不同的 pattern 資源 聲音 welcom 方式 想要 <url-pattern>/</url-pattern>   會匹配到 /login 這樣的路徑型url,不會匹配到模式為*.jsp這樣的後綴型url。   這種形式

滲透日記20180125--每日點滴--URL?#的區別(關於SSRF)以及mysql的secure-file-priv

mysq www. transport post 這樣的 pan .com 並不是 aaa 零,緒論 20180125日,忙! 瞎比比總結一下,來滿足這是個日記的樣子。 1、今天談的並不是什麽技術【當然也不是沒有技術(都很基礎)】而是瞎幾把扯。 一、關於一種SSRF的檢測繞

python web開發-flaskurl帶斜線/不帶斜線/的區別詳解

編程語言 Python flask中帶斜線和不帶斜線的url通過flask進行路由配置的時候,有一個細節,就是同樣的url,帶上”/”和不帶”/”有什麽區別。舉例說明:比如有個url,名字為”/url”先同時定義兩種url,一種帶”/”,一種不帶”/”,如下代碼:@app.route("/url")d

HTTP 協議 URI URL 有什麽區別

路徑 西湖區 AI www. str 我們 tar ofo 不能 URI = Universal Resource IdentifierURL = Universal Resource Locator 統一資源標誌符URI就是在某一規則下能把一個資源獨一無二地標識出來。拿

<url-pattern>寫成//*的區別- CSDN博客

區別 繼續 媒體 ack ren css 以及 image jsp頁面 <url-pattern>/</url-pattern>: 會匹配到/springmvc這樣的路徑型url,不會匹配到模式為*.jsp這樣的後綴型url。 <url-pat

正則表達式pattern.match(),re.match(),pattern.search(),re.search()方法的使用區別

pil 多行 findall 什麽 大小寫 python python語言 one 文本 正則表達式(regular expression)是一個特殊的字符序列,描述了一種字符串匹配的模式,可以用來檢查一個串是否含有某種子串。 將匹配的子串替換或者從某個串中取出符合某個