servlet-mapping/と/*はいったいどういう意味ですか?
2813 ワード
最近、小ヤード兄の公開授業を見ていたとき、幸いにも転覆現場に出会った.まず、現場環境を復元します.
Spring MVCは上記のように構成されており、jspはレンダリングできません.
そこで疑問に思ったのが、/*と何が違うのか.なぜjspがレンダリングできないのですか?
上記の質問に答える前に、まず関連知識を紹介します.
一、servletのurl-patternの4種類のマッチング規則
1.正確な一致
で構成されているアイテムはurlと完全に正確に一致する必要があります.
2.パスマッチング
「/*」で終わる文字列は、パスマッチングに使用されます.
3.拡張子照合
「*.」で先頭の文字列は拡張子マッチングに使用されます
4.デフォルト照合
4つのマッチングルールの優先順位は1>2>3>4です.パスマッチングと拡張子マッチングは、
二、Tomact中web.xmlのデフォルト構成
Tomact起動時はデフォルトでjspへのマッピング処理が追加されており、springMVCで/*のマッチングルールが構成されている場合、マッチングの順序に従ってすべてのリクエストがデフォルトのjspのservletにマッピングされなくなり、jspがレンダリングできなくなります
サーブレット容器Tomcatのweb.xmlにおけるurl-patternの構成の詳細[ソース分析付き]
dispatcherServlet
/*
Spring MVCは上記のように構成されており、jspはレンダリングできません.
そこで疑問に思ったのが、/*と何が違うのか.なぜjspがレンダリングできないのですか?
上記の質問に答える前に、まず関連知識を紹介します.
一、servletのurl-patternの4種類のマッチング規則
1.正確な一致
で構成されているアイテムはurlと完全に正確に一致する必要があります.
MyServlet
/user/users.html
/index.html
/user/addUser.action
2.パスマッチング
「/*」で終わる文字列は、パスマッチングに使用されます.
MyServlet
/user/*
3.拡張子照合
「*.」で先頭の文字列は拡張子マッチングに使用されます
MyServlet
*.jsp
*.action
4.デフォルト照合
MyServlet
/
4つのマッチングルールの優先順位は1>2>3>4です.パスマッチングと拡張子マッチングは、
/user/*.action
が不正であり、/aa/*/bb
が正確なマッチングであるなど、同時に設定できないことに注意してください.二、Tomact中web.xmlのデフォルト構成
default
org.apache.catalina.servlets.DefaultServlet
debug
0
listings
false
1
default
/
jsp
*.jsp
*.jspx
jsp
org.apache.jasper.servlet.JspServlet
fork
false
xpoweredBy
false
3
Tomact起動時はデフォルトでjspへのマッピング処理が追加されており、springMVCで/*のマッチングルールが構成されている場合、マッチングの順序に従ってすべてのリクエストがデフォルトのjspのservletにマッピングされなくなり、jspがレンダリングできなくなります
サーブレット容器Tomcatのweb.xmlにおけるurl-patternの構成の詳細[ソース分析付き]