完美解決SpringMVC中靜態資源無法找到(No mapping found for HTTP request with URI)問題
今天遇到一個比較新奇的問題,但是也應該是使用spring MVC框架時由於疏忽經常會遇到的一個,解決後寫出來和大家分享分享。
問題描述:專案正常啟動,可以訪問頁面,但是無法找到靜態資原始檔,如css,js等檔案資源。
瀏覽器控制檯報錯資訊:
idea後臺報錯資訊:
二月 07, 2017 11:27:35 上午 org.springframework.web.servlet.PageNotFound noHandlerFound 警告: No mapping found for HTTP request with URI [/myboss-web/js/jquery-1.8.3.js] in DispatcherServlet with name 'mvc-dispatcher' 二月 07, 2017 11:27:35 上午 org.springframework.web.servlet.PageNotFound noHandlerFound 警告: No mapping found for HTTP request with URI [/myboss-web/js/fun.base.js] in DispatcherServlet with name 'mvc-dispatcher'
因為專案使用了spring security,之前我一度懷疑是不是沒有給靜態檔案設定訪問許可權,後來確認了已經設定了訪問靜態資源無需許可權認證,也檢查了mvc攔截器的配置資訊,沒發現什麼明顯異常,之後就納悶了。去網上查閱了一些資料後發現,確實是mvc攔截器在作祟。
我之前的攔截器配置資訊:
<!--配置攔截器--> <servlet> <servlet-name>mvc-dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:/spring/applicationContext-mvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>mvc-dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
從配置上分析,如此配置會把所有的請求都會進行攔截,交給spring去處理。而spring所有請求的URL都是在controller中使用註解@RequestMapping標明,所以這樣的情況下訪問靜態資源是訪問不到的。
以下給出三種解決方案,自行選擇使用
方法1:簡單粗暴地告訴伺服器,這些資源不需要攔截!
直接在web.xml檔案中進行配置,如下:
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.xml</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.swf</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.zip</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.gif</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.png</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern> </servlet-mapping>
如果你嫌這樣太麻煩,太low的話,請移步下面兩種方法!
方法2:直接告訴spring,這個你就得這麼做!
在MVC配置檔案中新增資原始檔對映。
<resources mapping="/resources/**" location="/resources/" /> <resources mapping="/images/**" location="/images/" /> <resources mapping="/js/**" location="/js/" />
註解:
mapping:對映
location:本地資源路徑,注意必須是webapp根目錄下的路徑。
兩個*,它表示對映resources/下所有的URL,包括子路徑(即接多個/)
可能有筒子看完這個後會回來說:“博主寫的啥玩意,照著寫了還是沒用,我絕對沒敲錯字!我還是複製過去的!!!”
如果真的有這樣的哥們,別告訴我,否則我怕我會忍不住會拿出我的30米大刀!
請自行更換路徑!!!
當然這個還有一個需要注意的地方:
配置的location一定要是web-app根目錄下才行,如果你將資源目錄,放置到web-app/WEB-INF下面的話,恭喜你,訪問失敗!404 NOT FOUND
方法3:全部使用預設的,也別操啥心了
<mvc:default-servlet-handler/>
比較懶得童鞋可以直接在MVC配置檔案加上這麼一句,這個確實方便,但是弊端就是他會把你發出的請求全部按照預設的處理了!
如果直接貼出這一句,我怕又有筒子會說怎麼報錯了,mvc標籤報錯了!
哥們,你要是這種錯誤都解決不了,你也先別看這博文了,先去看看什麼叫namespace吧!還來得及治療!
相關推薦
完美解決SpringMVC中靜態資源無法找到(No mapping found for HTTP request with URI)問題
今天遇到一個比較新奇的問題,但是也應該是使用spring MVC框架時由於疏忽經常會遇到的一個,解決後寫出來和大家分享分享。 問題描述:專案正常啟動,可以訪問頁面,但是無法找到靜態資原始檔,如cs
Spring3中js/css/jpg/gif等靜態資源無法找到(No mapping found for HTTP request with URI)問題解決
最近專案中使用到Spring3,在感嘆Spring3註解配置清爽的同時竟然出現了這個不和諧的事情,實在無法忍受 問題:部署專案後程序載入或用瀏覽器訪問時出現類似的警告,2011-01-19 10:52:51,646 WARN [org.springframework.w
Spring MVC靜態資源攔截(No mapping found for HTTP request with URI in DispatcherServlet with name ' ')問題
程式載入或用瀏覽器訪問靜態資源時出現以下的警告: No mapping found for HTTP request with URI [/] in DispatcherServlet with name ” 問題原因:預設的訪問的URL都會被Dis
springmvc搭建環境時報No mapping found for HTTP request with URI [/exam3/welcome] in DispatcherServlet with name 'spring2'
url att comm con icon ffi handler b- ati 項目是使用spring MVC (1)在瀏覽器中訪問,後臺總報錯: Java代碼 No mapping found for HTTP request with URI [/exam
springmvc報404錯誤No mapping found for HTTP request with URI [/mavenSpringmvc/requesttest] in DispatcherServlet with name 'spring'
for 404錯誤 com web and uri pat con 題解 問題404錯誤的原因有很多種 有這種,後邊不帶url的 這種一般就是沒有進入到controller中 可以在toncat中看到信息 十一月 12, 2018 12:21:25 下午 org.
No mapping found for HTTP request with URI [....] in DispatcherServlet with name 'springMVC'
這個錯誤,為在頁面報404錯誤。 web.xml 配置如下: <servlet> <servlet-name>springMVC</servlet-name> <servlet-class>org.springframe
解決警告:spring mvc No mapping found for HTTP request with URI錯誤的方法
今天學習spring MVC的時候,引入了jquery。死活訪問不到,控制檯裡有個警告,然後再谷歌瀏覽器裡面發現錯誤 Failed to load resource: the server responded with a status of 404 (). Uncaught R
關於[No mapping found for HTTP request with URI]的問題解決方法
在我們將Web專案部署到伺服器時,有時會出現靜態資源找不到的問題,如在我釋出一個Spring MVC的專案時會報出這樣的錯誤“No mapping found for HTTP request with URI [/HelloWorld/login] in
No mapping found for HTTP request with URI [/webapp/] in DispatcherServlet with name 'SpringMVC'
可能有如下幾個原因: 1、是否設定了web目錄,在IDEA中,web目錄是這樣的 如果沒有設定,按照下面的方法設定: 選中要設定的模組,點選file、project structure,設定web.xml檔案和web目錄的位置 2、DispatcherServlet的url-pattern
Spring MVC 遇到No mapping found for HTTP request with URI的解決方法
第一次學習SpringMVC4.0 時遇到了一個小問題“No mapping found for HTTP request with URI”困擾了一天,最後試了好多方法終於得到解決和大家分享練習環境:Eclipse Mars +MVC4+Tomcat8.0 一、遇到的問題:
SpringMVC之靜態資源無法訪問
對於添加了springMVC攔截器後無法訪問靜態檔案的情況,有三種解決辦法,可參考:http://www.cnblogs.com/banning/p/6195072.html我專案中用的第一種方案,且靜態檔案全在/WEB-INF/public/,故配置如下:springmvc
完美解決K8s中的Pod無法解析外網域名問題
127.0.0.1 coredns rep 保留 內容 support 拷貝 -- dns 系統:Ubuntu 18.04.02K8s版本:1.13.4 故障現象:Pod內無法ping通外網域名,訪問外網IP、K8s內部域名或者IP均正常 原因分析:K8s在創建Pod時
Spring MVC中靜態資源的引用(適用於spring3.04以上版本)
採用<mvc:resources/>標籤即可解決靜態資源的訪問問題,為了方便配置管理,我將專案中所有的靜態資源(js、css、images、)統一放置在一個目錄下: 在你的Spring MVC配置檔案中去增加配置:  
27.Spring-Boot中攔截器中靜態資源的處理(踩過坑)以及Spring mvc configuring拓展介紹
一.springboot中對靜態資源的處理 預設情況下,springboot提供存放放置靜態資源的資料夾: /static /public /resources /META-INF/resources 對於maven專案即就是存在src/main/re
解決:com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class
今天在使用Spring Data JPA的時候,碰到了這樣一個問題: com.fasterxml.jackson.databind.exc.InvalidDefinitionException: No serializer found for class org.hibernate.
解決使用SpringMVC時,css、js、image等靜態資源無法載入的問題
問題:在使用SpringMVC框架時,配置web.xml檔案時,springDispatcherServlet的配置如下 <servlet> <servlet-name>springDispatcherServl
springmvc靜態資源無法載入
springmvc攔截所有請求,用/: <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servle
Spring MVC:解決靜態資源無法訪問的問題
解決靜態資源不能訪問的問題,解決方式有三種: 使用defaultServlet開啟tomcat中conf/web.xml,在這個檔案中有一個叫做DefaultServlet的配置,當系統找不到處理某次url請求該交由誰處理的時候,就會交給這個servlet處理。我們可以通過使用這個DefaultSer
記一次解決cmd中執行java提示"找不到或無法載入主類"的問題
今天遇到一個問題:在cmd命令列中,用javac編譯java檔案可以成功,但是用java執行卻提示“找不到或無法載入主類”。現將該問題的原因以及解決辦法記錄一下。 先理解一下系統變數path和classpath的作用。 path:可執行命令的搜尋路徑,在該路徑下搜尋可以執行的程式或批處理檔案。 命令
J2EE for SpringMVC 對映靜態資源獨Js不成功的問題解決
剛才博主遇到一個很頭大的問題,靜態資源映射了,路徑語法啥的都沒問題而css和img又能夠對映成功,能夠正常讀取,經過反覆檢查,博主發現是版本跟不上了。 看看博主的配置先: <beans xmlns="http://www.springframe