SpringMvc 請求無法到達controller,出現404錯誤的原因
轉載來自於:http://www.68idc.cn/help/jiabenmake/qita/20160512615015.html
最近做springmvcmybatismaven專案整合的時候遇到一個問題,專案搭起來以後,http請求怎麼都進不到controller中,耗費 了一天多時間弄這個問題,最後發現還是自己對spring的配置檔案和各種註解不熟。其實這個問題就是由於註解沒配好的緣故 首先,從配置檔案講最近做springmvc+mybatis+maven專案整合的時候遇到一個問題,專案搭起來以後,http請求怎麼都進不到controller中,耗費
了一天多時間弄這個問題,最後發現還是自己對spring的配置檔案和各種註解不熟。其實這個問題就是由於註解沒配好的緣故
首先,從配置檔案講起
web.xml
<!-- 載入Spring配置檔案 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:spring-context*.xml </param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 載入spring mvc --> <servlet> <servlet-name>spring3mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:spring-mvc*.xml </param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring3mvc</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
在上面的web.xml中,我們看到基於ContextLoaderListener和DispatcherServlet都可以配置spring相關的XML,兩類XML的字首分別以spring和springmvc開頭,說明,基於ContextLoaderListener載入的XML配置,原則上是與spring容器相關的(也可以說是父容器);而基於DispatcherServlet載入的XML配置,原則上是與springmvc容器相關的(相當於子容器)。
父容器載入的配置檔案預設地址為:/WEB-INF/applicationContext.xml,它預設以applicationContext命名,說明它是spring的全域性的配置,如果你專案中此檔名和地址都沒有改,那麼在web.xml中可以不用配置,spring容器會自動到預設地址下去載入。
子容器的配置檔案命名預設為[servlet-name]-servlet.xml方式,也就是說servlet-name中如果沒有指定init-param屬性,系統自動尋找的配置檔案為[servlet-name]-servlet.xml,預設路徑也是WEB-INF下。
所以個人建議,基於mvc相關的spring配置由DispatcherServlet載入,而其餘的JavaBean都交給ContextLoaderListener載入。
值得說明的是這兩種方式載入spring的ApplicationContext上下文物件不是合併儲存的。mvc context可以引用applicationContext的bean,而applicationContext無法引用到mvc的bean,spring查詢bean,會先在當前context中查詢,如果沒有滿足的,再到父容器查詢。而且兩個context中可以存在相同的bean定義的,只不過優先查詢當前context。並且各context上下文中的宣告式標籤相互不起作用。也就是說,如果你在applicationContext.xml中宣告的<mvc:annotation-driven /> ,在mvc的context中是不起作用的。
說了這麼多,其實我專案中的錯誤原因也就找到了,我的問題在於,我將<mvc:annotation-driven />宣告在了application上下文的配置中,從而導致mvc的context 中宣告的<context:component-scan base-package="com.hq51.business.controller" /> 不起作用,專案也就無法識別和載入controller了,所以會出現需要controller處理的http請求,最後都是莫名其妙的404錯誤。
相關推薦
SpringMvc 請求無法到達controller,出現404錯誤的原因
轉載來自於:http://www.68idc.cn/help/jiabenmake/qita/20160512615015.html 最近做springmvcmybatismaven專案整合的時候遇到一個問題,專案搭起來以後,http請求怎麼都進不到controller
springMVC,請求無法到達controller,報404
導語: 遇到404,大家都清楚是請求路徑的問題,要麼是沒有這個路徑,要麼請求路徑和實際路徑不一致。springMVC的專案,訪問時,404時,後臺也不會有任何提示。所以就得尋根溯源,一點點捋。 問題描述: 瀏覽器訪問路徑沒有問題,controller路徑對映也沒有問題,
springmvc 請求無法到達controller
搞了一下午的springmvc的專案,發現配置什麼的都沒有錯誤,但是springmvc的請求都無法到達controller。 最後才知道: 專案spring的版本是spring3 而本地的java卻是java8版本! 二者不相容啊!!!!! spring4.1.6以
SpringMVC中遇到頁面跳轉出現404錯誤的問題
書寫 one 錯誤 spa size 成功 問題: scan con 今天遇到了一個問題: 使用SpringMVC時,出現頁面無法跳轉的情況(404錯誤), 出現這個異常的原因在於SpringMVC的配置文件中控制器的配置書寫錯誤: 原代碼: <context:co
Eclipse下Dynamic web專案無法通過路徑訪問,出現404
這個弄了很久,嘗試了很多方法,最後yu原因還是tomcat的鍋,windows-》show 選擇View 調出servers 視窗,選中釋出專案的tomcat ,右鍵選擇 “Clean...”,然後重啟就行了 另外說明Web'Webcontent下WEB-INF外的資源沒設
springboot專案,請求可以進入controller,但返回結果報404
返回值: { "timestamp": 1507703410086, "status": 404, "error": "Not Found", "message": "Not Found", "path": "/as
關於springMVC使用@RequestMapping()無法訪問url,報404的問題
今天在寫專案的時候,遇到了明明加了註解“@RequestMapping()”而且url寫的沒有一點點點點點錯誤,但是請求的時候還是報了404錯誤。解決辦法:找到spring-mvc配置檔案並加上:<
使用 socket.io + nginx 時,出現 400 錯誤,無法通信
nginx TP 配置文件 pro ket 解決方法 pre sock 通信 解決方法 將下面的代碼配置到 nginx 的配置文件中 location / { proxy_pass http://127.0.0.1:8888; proxy_http_vers
搭建好lnmp後,使用瀏覽器訪問,出現404 Not Found
highlight 存在 dex htm service 修改 start not found ice 出現404 Not Found的原因是nginx指向頁面不存在,編輯nginx配置文件,修改nginx指向頁面路徑 root html; 修改為 root /usr/sh
springboot上傳linux檔案無法瀏覽,提示404錯誤
1.配置檔案地址置換 @Componentclass WebConfigurer implements WebMvcConfigurer { @Autowired ConfigUtil bootdoConfig; @Override public void addResourceHandle
springboot上傳linux文件無法瀏覽,提示404錯誤
提示 iframe set wire figure path com nts 路徑 1.配置文件地址置換 @Componentclass WebConfigurer implements WebMvcConfigurer { @Autowired ConfigUti
Spring的Tomcat服務關閉後,Quartz程序無法正常關閉,出現記憶體洩露
簡介 spring內部整合quartz,將quartz整合到web專案裡面,通過頁面動態控制quartz的增加、修改、刪除、查詢,這種方式極大簡化了對quartz定時器任務的控制; 但隨之而來的是一個極為困擾的問題:當專案的伺服器關閉的時候,quartz定時器任務程序依舊在執行,
點選WordPress後臺連結出現404錯誤,所有URL少/wp-admin/ 目錄
剛才幫一個朋友跟我講wordpress後臺不管點什麼都會出現404,解決辦法也很簡單。 預設的nginx的wordpress偽靜態是 location / { if (-f $request_filename/index.html){ r
vue 除去#符號,並部署後瀏覽器重新整理不出現404錯誤處理
export default new Router({mode:"history", //把模式改成history ,就可以去除 # 符號// base:'/', routes: [ { path: '/', name: 'HelloWorld'
將檔案複製入U盤,出現:錯誤0x80071AC3:無法完成操作,因為卷有問題
windows電腦上的檔案無法複製、剪下到U盤內,U盤內的檔案右鍵選單中“刪除”項消失,直接用“delete”也沒反應,但U盤內檔案可以複製到電腦上,且在U盤內也可以正常開啟。進行如上操作時,彈出提示框:” 錯誤0x80071AC3:無法完成操作,因為卷有問題 “。 解決方
Struts2在web.xml,struts.xml配置中出現404錯誤,解決方案
在JSP開發中使用struts2框架,配置web.xml和struts.xml後,jsp文件執行都是404錯誤 找了很多方法,都不能解決問題,最終發現是struts包的配置問題,最新的struts2.5.8的版本與2.3之前的版本有很大不同 像xwork.core的包就被整
F盤提示無法訪問裝置硬體出現致命錯誤,導致請求失敗的資料恢復方法
F盤打不開裝置硬體出現致命錯誤,導致請求失敗,是因為這個I盤的檔案系統內部結構損壞導致的。要恢復裡面的資料就必須要注意,這個盤不能格式化,否則資料會進一步損壞。具體的恢復方法看正文 工具/軟體:流星資料恢復軟體 步驟1:先下載並解壓程式執行後,直接雙擊需要恢復
spark2.0.0 在idea intell 中執行scala時,出現如下錯誤,無法解決
18/02/27 23:43:08 WARN TaskSetManager: Lost task 1.0 in stage 0.0 (TID 1, 192.168.1.121): java.lang.ClassCastException: cannot assign inst
無法啟動Genymotion,出現VirtualBox錯誤碼:0x80004005 解決方法
學習Android開發的時候,用到了Android Studio和號稱“業內最快”的安卓模擬器Genymotion。 介紹一下,Genymotion是基於VirtualBox執行的。 在Genymotion的官網註冊會員之後下載了"with VirtualBox"的版本
IntelliJ IDEA Maven 無法匯入jar,出現紅色波浪線。
IntelliJ IDEA Maven 無法匯入jar,出現紅色波浪線。像這樣最近在學習使用 Maven,用 IDEA 開發,準備以 ssm 做一個專案。下載了 Maven,環境變數也配置了,預設的倉庫也改了。然後新建Maven專案,填寫一些專案資訊,選擇 setting.x