SpringMVC 的使用對映路徑展示檔案伺服器上的圖片
首先,spring mvc 的<mvc:resources mapping="***" location="***">標籤是在spring3.0.4出現的,主要是用來進行靜態資源的訪問。我們專案中是這樣使用的:
<mvc:resources mapping="/${mapping_path}/**" location="file:${local_path}/">
對應的xx.propterties檔案中的值如下:
mapping_path=poster
local_path=D:/poster
但是發現這樣,在<img src="http://localhost:7001/pad-sces/poster/xxx.jpg"/>下並沒有成功展示圖片,百思不得其解。後來發現原來這個還與org.springframework.web.servlet.DispatcherServlet的中的url-pattern配置有關,期初在web.xml中我們專案的配置如下:
這樣是沒有效果的,*.do是攔截了所有*.do的請求到servlet中,後來改成<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:/spring/spring-mvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMVC</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
<url-pattern>/</url-pattern>
這樣就可以成功展示了,但是問題又出現了,就是頁面上引用的css,js等效果不起作用了,報錯如下:
WARNING: No mapping found for HTTP request with URI [/pad-sces/js/login.js] in DispatcherServlet with name 'springMVC'
原因是:使用 / 攔截了所有的請求,會影響到靜態資原始檔的獲取,這樣就需要用mvc:default-servlet-handler和mvc:resources來幫住分類完成獲取靜態資源的責任。在spring-mvc-servlet.xml中配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<mvc:default-servlet-handler />
<mvc:resources mapping="/${mapping_path}/**" location="file:${local_path}/">
<mvc:resources mapping="/js/**" location="/js/"/>
<mvc:resources mapping="/css/**" location="/css/"/>
<mvc:resources mapping="/images/**" location="/images/"/>
<mvc:resources mapping="/plugin/**" location="/plugin/"/>
</beans>
這樣就可以成功展示了圖片了,也能正常顯示其他效果。
注意:引用上述js、css等效果的page頁面目錄不需要對映。location是工程路徑地址,mapping是對映後的訪問地址,建議js、css等效果的對映地址和工程路徑地址一致,這樣訪問起來比較容易。
此外還要注意,file:是針對非專案工程中的檔案訪問,本專案工程中的檔案路徑不要加file:
============================================================================
當然,web.xml的DispatcherServlet還可以配置多個url-pattern,如上面所述的,我們可以改成:
<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:/spring/spring-mvc-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>*.do</url-pattern>
<url-pattern>/poster/*</url-pattern>
</servlet-mapping>
這樣在spring-mvc-servlet.xml可以直接這樣配置:
<mvc:resources mapping="/**" location="file:${local_path}/">
不過,有個不好之處在於web.xml必須是寫死的url-pattern值/poster/* 而不能像上述方法那樣配置引數值,可配置性不高。
==============================================================================
以下內容是分享網友的:
如果你的DispatcherServlet攔截 *.do這樣的URL,就不存在訪問不到靜態資源的問題。如果你的DispatcherServlet攔截“/”,攔截了所有的請求,同時對*.js,*.jpg的訪問也就被攔截了。
目的:可以正常訪問靜態檔案,不要找不到靜態檔案報404。
方案一:啟用Tomcat的defaultServlet來處理靜態檔案
<span style="font-size:12px;"> <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></span>
要寫在DispatcherServlet的前面, 讓 defaultServlet先攔截,這個就不會進入Spring了。
方案二:在spring3.0.4以後版本提供了mvc:resources 的使用方法:
<span style="font-size:12px;"> <!-- 對靜態資原始檔的訪問 -->
<mvc:resources mapping="/images/**" location="/images/" /></span>
/images/**對映到ResourceHttpRequestHandler進行處理,location指定靜態資源的位置.可以是web application根目錄下、jar包裡面,這樣可以把靜態資源壓縮到jar包中。cache-period 可以使得靜態資源進行web cache 如果出現下面的錯誤,可能是沒有配置<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,這樣就巧妙的把對靜態資源的訪問由HandlerMapping轉到ResourceHttpRequestHandler處理並返回,所以就支援classpath目錄,jar包內靜態資源的訪問.另外需要注意的一點是,不要對SimpleUrlHandlerMapping設定defaultHandler。因為對static uri的defaultHandler就是ResourceHttpRequestHandler,否則無法處理static resources request。
方案三 ,使用<mvc:default-servlet-handler/>
<span style="font-size:12px;"> <mvc:default-servlet-handler/></span>
會把"/**" url,註冊到SimpleUrlHandlerMapping的urlMap中,把對靜態資源的訪問由HandlerMapping轉到org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler處理並返回DefaultServletHttpRequestHandler使用,就是各個Servlet容器自己的預設Servlet。
補充說明:多個HandlerMapping的執行順序問題:
DefaultAnnotationHandlerMapping的order屬性值是:0
<mvc:resources/ >自動註冊的SimpleUrlHandlerMapping的order屬性值是:2147483646
<mvc:default-servlet-handler/>自動註冊的SimpleUrlHandlerMapping的order屬性值是:2147483647
spring會先執行order值比較小的。當訪問一個a.jpg圖片檔案時,先通過DefaultAnnotationHandlerMapping來找處理器,一定是找不到的,我們沒有叫a.jpg的Action。再按order值升序找,由於最後一個SimpleUrlHandlerMapping是匹配"/**"的,所以一定會匹配上,再響應圖片。
注:如果DispatcherServlet攔截 *.do這樣的URL,就不存上述問題了。
相關推薦
SpringMVC 的使用對映路徑展示檔案伺服器上的圖片
接上一篇提到的部署中的問題,可以採用 <mvc:resources>即可解決,然而使用這種方式也不是一帆風順的,需要解決其他的一些配置問題。 首先,spring mvc 的<mvc:resources mapping="***" location="***
詳解SpringMVC使用MultipartFile實現檔案的上傳
本篇文章主要介紹了SpringMVC使用MultipartFile實現檔案的上傳,本地的檔案上傳到資源伺服器上,比較好的辦法就是通過ftp上傳。這裡是結合SpringMVC+ftp的形式上傳的,有興趣的可以瞭解一下。 如果需要實現跨伺服器上傳檔案,就是將我們本地的檔
SpringMVC + AJAX 實現多檔案非同步上傳
轉自:https://www.jianshu.com/p/f3987f0f471f 今天,我就這個問題來寫一篇如何用 SpringMVC + AJAX 實現的多檔案非同步上傳功能。基本的程式碼還是沿用上篇文章中所用到的專案,需要的朋友可以點選前面的連結檢視。在這裡只貼出關鍵程式碼。 首先
C#+WPF+oracle 檢查檔案伺服器上檔案是否存在
現在有個需求,有個FTP/HTTP網站上有一堆檔案,記錄存在資料庫。 但根本無法知道那些檔案在資料庫中不存,那些檔案在庫裡面,但不存在實體檔案。 現在做了個程式,可以做到讀取資料庫檔案列表,然後檢查網上鍊接是否有效,也可以反向檢查。 <Window x
SpringMVC+MongoDB+Layui實現檔案的上傳、下載、刪除功能
應專案要求,使用MongoDB的GridFS來儲存檔案資料。 需求點:1、
圖片或檔案上傳到伺服器或從伺服器上讀取(圖片可根據路徑src回顯展示,從伺服器上讀出來)
不需要配置虛擬路徑,存的時候資料庫裡只存了圖片的名稱(隨機重新命名的形式),存在指定伺服器上,取的時候也是根據圖片名稱從伺服器上找到,並用OutputStream 讀出來 前臺頁面(用的bootstrap): html程式碼(可回顯,回顯的時候也是去後臺根據路徑查詢到圖片):
SpringMVC下圖片檔案跨伺服器上傳
圖片檔案跨伺服器上傳(我使用的公司雲桌面作為上傳伺服器,自己的筆記本作為儲存伺服器測試的) 一、上傳伺服器: 1、pom檔案(使用jersey外掛) <!-- 上傳元件包 --> <dependency> <gro
SpringMVC 的使用映射路徑展示文件服務器上的圖片
file div 文件的 local 解決 home resources 遇到 配置 需求: 前端上傳圖片,返回路徑給前端,前端通過路徑來訪問圖片的資源。 解決方案: <mvc:resources mapping="/${mapping_path}/**"
Nodejs把接收圖片base64格式儲存為檔案儲存到伺服器上
下面一小段程式碼給大家分享Nodejs把接收圖片base64格式儲存為檔案儲存到伺服器上的方法,具體程式碼如下所示: 前端精品教程:百度網盤下載 ? 1
1. 瀏覽器中訪問Linux伺服器上的圖片(虛擬路徑) + 重啟tomcat (測試可用)
首先需要配置的java,Tomcat的這個以後會發,此外還要確保埠的開放 1.上傳圖片到伺服器 建議使用WinSCP賦予這個軟體,圖形化拖動檔案,十分方便 路徑:USR /本地/ EasyFit /圖片/下是我的圖片 2.配置的tomcat的伺服器檔案 路徑:USR /本地/ tomc
TCP實現多個客戶端同時向同一個伺服器端傳送圖片,也可以同一個客戶端多次向伺服器傳送圖片。當上傳圖片大於一定的限度(這裡指定為了10k)時,則停止上傳,將已經接收到但未接收完的檔案刪除。
伺服器端: //多使用者上傳圖片 import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class UploadPicServer1 { public sta
基於Tomcat如何顯示伺服器上的圖片或檔案?
修改tomcat中conf資料夾下的server.xml檔案,在 <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"  
JAVA中建立HTTP通訊,從伺服器上獲取HTML程式碼,通過HTTP請求來下載圖片或其他二進位制檔案的程式,下載結果要按下載到的檔案型別進行存檔中。
通過HTTP請求來下載圖片或其他二進位制檔案的程式,下載結果要按下載到的檔案型別進行存檔 將程式碼從伺服器的中獲取下來的程式碼,在我之前已經講過了這裡寫連結內容 這裡我們就直接將原始碼稍加改動,加入一個檔案並請將builder 寫入即可。 import
(十二)springMvc 處理圖片,視訊等檔案的上傳
導包 需要匯入如下的包 commons-fileupload-1.3.3.jar commons-io-2.6.jar 修改表單型別 想要上傳圖片、文字、電影、音樂等資源的時候,需要將 form 的
springmvc請路徑引數,springmvc-json-ajax使用,springmvc檔案上傳,springmvc檔案下載,springmvc攔截器(內容較多)
按照操作,絕對都可以實現,親測。。。。。(專案所有檔案和目錄結構全都放上去了) idea工具,建立maven專案 第一步: 放置各種配置檔案: pom.xml <?xml version="1.0" encoding="UTF-8"?> <p
vue 電腦端調攝像頭拍照,canvas轉base64,base64轉圖片檔案並上傳到伺服器
VUE(用了iview): <template> <div id='cameraUpload'> <Form ref='member' :label-width='120' :model='member' :rules='memb
SpringMVC實現FTP伺服器之圖片和富文字上傳
上傳流程為: jsp(上傳檔案)->springMVC的servlet.xml(解析成二進位制Mulitfile)->Controller->service(連線ftp,檔案打包按格式二進位制流上傳)->ftp 注:本文的程式
利用 Javascript 實現上傳圖片並向伺服器獲取圖片路徑後顯示的 demo
由於某些特殊原因,有時需要從服務端請求到圖片路徑,需要給該介面傳遞對應圖片的base64 dataURL,並且有時需要將其上傳圖片的型別統一為 jpeg 格式時,可採用以下方式。 HTM
資料庫儲存路徑,資原始檔放在伺服器上,前臺如何展示(已成功解決)
當前接觸的專案是前後端分離的,我現在需要將圖片檔案的路徑存在資料庫,在前臺展示時將資料庫的路徑拿出來,將伺服器上的圖片檔案展示出來 一開始我的做法是將圖片檔案放在前端頁面程式碼目錄中,然後想到一般情況下,資原始檔都是放在伺服器上的,然後一個同事(妹子呦)告訴我了一個辦法,在tomcat的配置檔案
伺服器上釋出網站時,提示“未能對映到路徑”
網站開發工具與環境:win7旗艦版、SQL Server2008、vs2010(使用SQLEXPRESS完成角色授權) 伺服器環境:Win Server Enterprise、Sql server2008 在伺服器上已有的網站上掛一個子應用程式,選擇預設的DefaultAp