静态资源java 配置文件_java web 静态资源访问配置三种方式
方案一:Tomcat的defaultServlet來處理靜態(tài)文件
要放在DispatcherServlet的前面, 讓?defaultServlet先攔截請求,這樣請求就不會進(jìn)入Spring了
方案二: 在spring3.0.4以后版本提供了mvc:resource
/images/**映射到ResourceHttpRequestHandler進(jìn)行處理,location指定靜態(tài)資源的位置.可以是web application根目錄下、jar包里面,這樣可以把靜態(tài)資源壓縮到j(luò)ar包中。cache-period 可以使得靜態(tài)資源進(jìn)行web cache
如果出現(xiàn)下面的錯誤,可能是沒有配置的原因。
報錯WARNING: No mapping found for HTTP request with URI [/mvc/user/findUser/lisi/770] in DispatcherServlet with name 'springMVC'
使用元素,把mapping的URI注冊到SimpleUrlHandlerMapping的urlMap中,
key為mapping的URI pattern值,而value為ResourceHttpRequestHandler,
這樣就巧妙的把對靜態(tài)資源的訪問由HandlerMapping轉(zhuǎn)到ResourceHttpRequestHandler處理并返回,所以就支持classpath目錄,jar包內(nèi)靜態(tài)資源的訪問.
另外需要注意的一點(diǎn)是,不要對SimpleUrlHandlerMapping設(shè)置defaultHandler.因為對static uri的defaultHandler就是ResourceHttpRequestHandler,
否則無法處理static resources request.
方案三 ,使用
會把"/**" url,注冊到SimpleUrlHandlerMapping的urlMap中,把對靜態(tài)資源的訪問由HandlerMapping轉(zhuǎn)到org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler處理并返回.
DefaultServletHttpRequestHandler使用就是各個Servlet容器自己的默認(rèn)Servlet.
補(bǔ)充說明:多個HandlerMapping的執(zhí)行順序問題:
DefaultAnnotationHandlerMapping的order屬性值是:0
自動注冊的?SimpleUrlHandlerMapping的order屬性值是:?2147483646
自動注冊?的SimpleUrlHandlerMapping?的order屬性值是:?2147483647
spring會先執(zhí)行order值比較小的。當(dāng)訪問一個a.jpg圖片文件時,先通過 DefaultAnnotationHandlerMapping 來找處理器,一定是找不到的,因為我們沒有叫a.jpg的Action。然后再按order值升序找,由于最后一個 SimpleUrlHandlerMapping 是匹配 "/**"的,所以一定會匹配上,就可以響應(yīng)圖片。
如何你的DispatcherServlet攔截 *.do,.action這樣的URL后綴,就不存在這樣的問題。
一般看情況而選擇。
總結(jié)
以上是生活随笔為你收集整理的静态资源java 配置文件_java web 静态资源访问配置三种方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java treeset 红黑树_【数据
- 下一篇: java 在线电影_java电影在线影评