最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring MVC訪問靜態(tài)文件_動力節(jié)點Java學(xué)院整理

 更新時間:2017年08月30日 11:44:31   作者:趙磊  
這篇文章主要為大家詳細(xì)介紹了Spring MVC訪問靜態(tài)文件的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

如何你的DispatcherServlet攔截"*.do"這樣的有后綴的URL,就不存在訪問不到靜態(tài)資源的問題。

如果你的DispatcherServlet攔截"/",為了實現(xiàn)REST風(fēng)格,攔截了所有的請求,那么同時對*.js,*.jpg等靜態(tài)文件的訪問也就被攔截了。

我們要解決這個問題。 

目的:可以正常訪問靜態(tài)文件,不可以找不到靜態(tài)文件報404。 

方案一:激活Tomcat的defaultServlet來處理靜態(tài)文件

Xml代碼  

<servlet-mapping>  
  <servlet-name>default</servlet-name> 
 <url-pattern>*.jpg</url-pattern>   
</servlet-mapping>  
<servlet-mapping>    
  <servlet-name>default</servlet-name>  
  <url-pattern>*.js</url-pattern>  
</servlet-mapping>  
<servlet-mapping>    
  <servlet-name>default</servlet-name>    
  <url-pattern>*.css</url-pattern>   
</servlet-mapping>  

要配置多個,每種文件配置一個   

要寫在DispatcherServlet的前面, 讓 defaultServlet先攔截請求,這樣請求就不會進(jìn)入Spring了,我想性能是最好的吧。

Tomcat, Jetty, JBoss, and GlassFish 自帶的默認(rèn)Servlet的名字 -- "default"
Google App Engine 自帶的 默認(rèn)Servlet的名字 -- "_ah_default"
Resin 自帶的 默認(rèn)Servlet的名字 -- "resin-file"
WebLogic 自帶的 默認(rèn)Servlet的名字  -- "FileServlet"
WebSphere  自帶的 默認(rèn)Servlet的名字 -- "SimpleFileServlet" 

方案二:在spring3.0.4以后版本提供了mvc:resources ,  使用方法:
Xml代碼  

<!-- 對靜態(tài)資源文件的訪問 -->  
<mvc:resources mapping="/images/**" location="/images/" /> 

/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)下面的錯誤,可能是沒有配置<mvc:annotation-driven />的原因。 
報錯WARNING: No mapping found for HTTP request with URI [/mvc/user/findUser/lisi/770] in DispatcherServlet with name 'springMVC' 

使用<mvc:resources/>元素,把mapping的URI注冊到SimpleUrlHandlerMapping的urlMap中,key為mapping的URI pattern值,而value為ResourceHttpRequestHandler,這樣就巧妙的把對靜態(tài)資源的訪問由HandlerMapping轉(zhuǎn)到ResourceHttpRequestHandler處理并返回,所以就支持classpath目錄,jar包內(nèi)靜態(tài)資源的訪問.

另外需要注意的一點是,不要對SimpleUrlHandlerMapping設(shè)置defaultHandler.因為對static uri的defaultHandler就是ResourceHttpRequestHandler,否則無法處理static resources request. 

方案三:使用<mvc:default-servlet-handler/>
Xml代碼  

<mvc:default-servlet-handler/> 

會把"/**" 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

<mvc:resources/ >自動注冊的 SimpleUrlHandlerMapping的order屬性值是: 2147483646 

<mvc:default-servlet-handler/>自動注冊 的SimpleUrlHandlerMapping 的order屬性值是: 2147483647 

spring會先執(zhí)行order值比較小的。當(dāng)訪問一個a.jpg圖片文件時,先通過 DefaultAnnotationHandlerMapping 來找處理器,一定是找不到的,因為我們沒有叫a.jpg的Action。然后再按order值升序找,由于最后一個 SimpleUrlHandlerMapping 是匹配 "/**"的,所以一定會匹配上,就可以響應(yīng)圖片。

 訪問一個圖片,還要走層層匹配。不知性能如何?

最后再說明一下,方案二、方案三 在訪問靜態(tài)資源時,如果有匹配的(近似)總攔截器,就會走攔截器。如果你在攔截中實現(xiàn)權(quán)限檢查,要注意過濾這些對靜態(tài)文件的請求。

如何你的DispatcherServlet攔截 *.do這樣的URL后綴,就不存上述問題了。還是有后綴方便。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java StackTraceElement實例代碼

    Java StackTraceElement實例代碼

    這篇文章主要介紹了Java StackTraceElement實例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • IDEA 錯誤 No main class specified的問題

    IDEA 錯誤 No main class specified的問題

    這篇文章主要介紹了IDEA 錯誤 No main class specified的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • SpringBoot整合liquibase的實現(xiàn)方法

    SpringBoot整合liquibase的實現(xiàn)方法

    這篇文章主要介紹了SpringBoot整合liquibase的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Java中的CompletableFuture原理與用法

    Java中的CompletableFuture原理與用法

    CompletableFuture 是由Java8引入的,這讓我們編寫清晰可讀的異步代碼變得更加容易,該類功能比Future 更加強(qiáng)大,在Java中CompletableFuture用于異步編程,異步通常意味著非阻塞,運(yùn)行任務(wù)單獨的線程,與主線程隔離,這篇文章介紹CompletableFuture原理與用法,一起看看吧
    2024-01-01
  • Spring框架基于注解的AOP之各種通知的使用與環(huán)繞通知實現(xiàn)詳解

    Spring框架基于注解的AOP之各種通知的使用與環(huán)繞通知實現(xiàn)詳解

    這篇文章主要介紹了Spring框架基于注解的AOP之各種通知的使用及其環(huán)繞通知,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-11-11
  • 深入解讀Java代碼組織中的package包結(jié)構(gòu)

    深入解讀Java代碼組織中的package包結(jié)構(gòu)

    這篇文章主要介紹了Java代碼組織中的package包結(jié)構(gòu),是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2016-03-03
  • 教你如何使用Java8實現(xiàn)菜單樹形數(shù)據(jù)

    教你如何使用Java8實現(xiàn)菜單樹形數(shù)據(jù)

    今天給大家?guī)淼氖顷P(guān)于JAVA的相關(guān)知識,文中圍繞著如何使用Java8實現(xiàn)菜單樹形數(shù)據(jù)展開,文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • 淺析Java中的GC垃圾回收器的意義及與GC的交互

    淺析Java中的GC垃圾回收器的意義及與GC的交互

    這篇文章主要介紹了Java中的GC垃圾回收器的意義及與其的交互,GC是Java虛擬機(jī)JVM的一項重要特性,需要的朋友可以參考下
    2015-12-12
  • java常用工具類 Reflect反射工具類、String字符串工具類

    java常用工具類 Reflect反射工具類、String字符串工具類

    這篇文章主要為大家詳細(xì)介紹了java常用工具類,包括Reflect反射工具類、String字符串工具類,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Java?Apache?common-pool對象池介紹

    Java?Apache?common-pool對象池介紹

    這篇文章主要介紹了Java Apache?common-pool對象池介紹,文章通過圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,感興趣的小伙伴可以參考一下
    2022-09-09

最新評論

石台县| 宁海县| 和顺县| 高清| 法库县| 太仆寺旗| 晋中市| 莫力| 保德县| 讷河市| 高州市| 大新县| 吉木乃县| 多伦县| 呼和浩特市| 南丰县| 常宁市| 赤水市| 富平县| 华亭县| 乐都县| 礼泉县| 万源市| 湖北省| 柳河县| 乐至县| 永安市| 武乡县| 阿瓦提县| 咸阳市| 普宁市| 黄浦区| 新疆| 若羌县| 南木林县| 柳州市| 偃师市| 威海市| 塔城市| 金坛市| 封开县|