聊一聊關於靜態資源的訪問問題web
首先,咱們要對web.xml裏面的DispatcherServlet進行設置spring
<!-- 中央調度器--> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springMVC.xml</param-value> </init-param> <!--tomcat 一啓動就能夠加載中央調度器,數字只要大於0 便可--> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <!-- url-pattern設置爲:"/",當你使用了"/",他會替代Tomcat中的default, 致使全部的資源都給DispatcherServlet處理,默認狀況下DispatcherServlet 沒有處理靜態資源的能力,沒有控制器對象能處理靜態資源的訪問,因此致使靜態資源 訪問失敗都是404,動態代理能夠正常訪問。若是不設置url-pattern設置爲:"/", 則不存在靜態資源訪問不到 --> <url-pattern>/</url-pattern> </servlet-mapping>
因爲設置了url-pattern爲:"/",接下來咱們還須要設置springmvc的配置文件,讓靜態資源能夠被訪問到。有兩種方式tomcat
<!--添加該標籤--> <mvc:default-servlet-handler /> <!-- 原理: 給程序內存中增長一個處理器對象:DefaultServletHttpRquestHandler。 讓這個對象能夠把接收到的請求轉發給Tomcat的default這個servlet。 可是這個標籤與@RequestMapping這個註解有衝突,因此須要加入註解驅動:<mvc:annotation-driven /> --> <mvc:annotation-driven />
<!-- 使用框架中的:<mvc:resource mapping="" location=""/>標籤, 標籤加入後框架會本身建立ResourceHttpRequestHandler這個處理器對象。 讓這個對象處理靜態資源的訪問,不依賴於Tomcat服務器。該標籤與@RequestMapping 註解有衝突,須要加註解驅動:<mvc:annotation-driven /> 參數: location:靜態資源在你的項目中的位置 mapping:訪問靜態資源的URI地址,使用通配符 ** ,表明多級任意 參數內的靜態資源皆能夠被訪問 --> <mvc:resources location="/img/" mapping="/img/**"/>
好啦,這就是目前做爲一個算不上菜鳥的菜鳥對springmvc靜態資源訪問的掌握程度。歡迎留言服務器