簡體   English   中英

這些聲明到Spring MVC應用程序的servlet-context.xml中的mvc:resources映射標記是什么意思?

[英]What means these mvc:resources mapping tags declared into the servlet-context.xml of a Spring MVC application?

我在Spring中還很陌生,正在研究Spring MVC應用程序。

servlet-context.xml配置文件中,我找到了以下行:

<!-- resources exclusions from servlet mapping -->
<mvc:resources mapping="/assets/**" location="classpath:/META-INF/resources/webjars/"/>
<mvc:resources mapping="/css/**" location="/css/"/>
<mvc:resources mapping="/img/**" location="/img/"/>
<mvc:resources mapping="/js/**" location="/js/"/>

評論說servlet映射中的資源排除

這些行到底是什么意思? 我知道這個servlet-context.xml應該包含處理MVC行為的DispatcherServlet配置(這對我來說很清楚),但是前幾行到底是什么?

您能詳細解釋一下我的意思和以前的語法嗎?

如果考慮將所有請求都映射到DispatcherServlet的spring mvc配置,則可以將這些請求歸為對靜態和動態資源的請求。

對動態資源的請求與您在控制器方法中編程的內容相匹配,它們是典型框架處理的主題,例如路徑匹配,內容協商,驗證,綁定,轉換,格式化,參數解析。

對靜態資源的請求是對.js,.css或其他尚未創建但已經與應用程序一起部署的其他資源的請求。 它們不是由程序控制器方法處理,而是由ResourceHttpRequestHandler ,僅因為它們與動態請求相比(除了路徑匹配)具有完全不同的處理動作集。 您可以為給定映射定義靜態文件的位置(可以是類路徑,其他webapp文件夾或文件系統),資源的緩存策略,轉換(例如CSS中的modyfing鏈接,將LESS轉換為CSS)

因此,並不是您不希望servlet處理靜態資源,實際上,這樣做可以帶來很多可能性和靈活性,例如, 處理靜態Web資源就是靜態和動態請求是不同類型的操作的主題,通過使用mvc:resources標記,您可以通過映射指定將哪些請求作為靜態請求處理

由於像圖片,css,javascript等資源不應由servlet處理,而應由Dispatcherservlet專門處理,因此spring提供了一種使用以下方法指定資源的方法

MVC:資源

標簽。 如果未使用上述標記映射此類資源,則調度程序servlet將使用請求的路徑來查找具有匹配請求映射的控制器。 但是使用該標記,spring會查看標記的location屬性以查找並返回資源,如果找不到該資源,則返回HTTP狀態代碼404。

其他有用的答案

  1. 標簽的位置屬性的詳細說明

  2. 彈簧-3- mvcresources和標簽的mvcresources

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM