SpringMVC 的 使用映射路徑展示文件服務器上的圖片


<servlet>
    <servlet-name>springMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath*:application-web.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

后來發現原來這個還與org.springframework.web.servlet.DispatcherServlet的中的url-pattern配置有關

原因是:使用 / 攔截了所有的請求,會影響到靜態資源文件的獲取,這樣就需要用mvc:default-servlet-handler和mvc:resources來幫住分類完成獲取靜態資源的責任

 

解決方案:

<mvc:resources mapping="/images/**" location="/WEB-INF/images/" cache-period="31556926"/>
<mvc:resources mapping="/js/**" location="/WEB-INF/js/" cache-period="31556926"/>
<mvc:resources mapping="/css/**" location="/WEB-INF/css/" cache-period="31556926"/>

  使用<mvc:resources/>元素,把mapping的URI注冊到SimpleUrlHandlerMapping的urlMap中,key為mapping的URI pattern值,而value為ResourceHttpRequestHandler,這樣就巧妙的把對靜態資源的訪問由HandlerMapping轉到ResourceHttpRequestHandler處理並返回,所以就支持classpath目錄,jar包內靜態資源的訪問.另外需要注意的一點是,不要對SimpleUrlHandlerMapping設置defaultHandler。因為對static uri的defaultHandler就是ResourceHttpRequestHandler,否則無法處理static resources request。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM