1. 程式人生 > >SpringMvc 請求無法到達controller,出現404錯誤的原因

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請求無法到達controller404

導語: 遇到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()無法訪問url404的問題

今天在寫專案的時候,遇到了明明加了註解“@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