Spring MVC框架:第五章:靜態(tài)資源訪問與mvc:view-controller

靜態(tài)資源訪問
1.提出靜態(tài)資源問題

Web項目的開發(fā)不可避免的要使用靜態(tài)資源。在我們的項目中圖片文件、音視頻文件、CSS文件、JavaScript文件、HTML文件等等凡是瀏覽器直接可以使用且不需要Tomcat解析的資源都是靜態(tài)資源。

那么靜態(tài)資源在SpringMVC中有什么問題呢?

如果在web.xml中我們配置ulr-pattern為“/”,那么訪問靜態(tài)資源時會返回404。

在這里插入圖片描述















原因是參照/這個配置SpringMVC對所有“/”下的資源都進行匹配,而a.jpg我們又沒有任何一個@RequestMapping和它對應,所以SpringMVC認為并不存在這個資源。
在這里插入圖片描述























2.解決辦法
①解決辦法1
url-pattern映射*.擴展名
在ulr-pattern配置擴展名,例如:*.mvc

<!-- Map all requests to the DispatcherServlet for handling -->
<servlet-mapping>
    <servlet-name>springDispatcherServlet</servlet-name>
    <url-pattern>*.mvc</url-pattern>
</servlet-mapping>

這樣配置之后會有一個重要的、嚴格的限制:所有希望由SpringMVC來處理的請求,末尾都必須加上指定的擴展名,比如我們這個例子中的*.mvc。反之沒有以*.mvc結尾的請求都和SpringMVC無關,還是由Tomcat處理。
②解決辦法2

還是保持/的配置,然后在Spring配置文件中加入如下配置:

<mvc:default-servlet-handler/>
<mvc:annotation-driven/>

單獨使用mvc:default-servlet-handler是不行的,必須配合mvc:annotation-driven。原因我們在SpringMVC原理中介紹。

小結:
?前提web.xml中url-pattern還是映射“/”
?SpringMVC配置文件中配置:mvc:default-servlet-handler/保證靜態(tài)資源可以訪問
?SpringMVC配置文件中配置:mvc:annotation-driven/ 常規(guī)請求可以訪問
?介紹mvc:default-servlet-handler/作用
SpringMVC處理請求的步驟概括來說就是SpringMVC能處理就處理,處理不了交給Tomcat。
?介紹mvc:annotation-driven/作用
SpringMVC的標配,在實際開發(fā)時建議每次都把這個配置加上。因為加上這個配置后,SpringMVC會在IOC容器中加入很多用得到的bean。例如:@ResponseBody、文件上傳、類型轉換等等功能都需要用到。

在這里插入圖片描述

















第八節(jié) mvc:view-controller

假設有下面這樣一個handler方法:

@RequestMapping("/direct")
public String direct() {
    return "result";
}

這個方法內部沒有做任何處理,僅僅是把一個URL地址"/direct"映射到視圖"result"。那么有沒有辦法簡化一下呢?使用mvc:view-controller配置即可。

<mvc:view-controller path="/direct" view-name="result"/>
<mvc:annotation-driven/>

mvc:view-controller也必須搭配mvc:annotation-driven。

<a href="${pageContext.request.contextPath }/direct">測試ViewController</a>

解決多個Web工程contextPath名重復問題,我們復制之前的項目Context root沒有改
在這里插入圖片描述


















解決導入工程后目標運行時環(huán)境錯誤


在這里插入圖片描述