springmvc不進(jìn)入Controller導(dǎo)致404的問(wèn)題
?
一.摘要
emmmm..
對(duì)springmvc不太熟練的情況下,如果不出意外的話,項(xiàng)目啟動(dòng)后出現(xiàn)404頁(yè)面是很煩人。
在這里,我記錄一下可能會(huì)導(dǎo)致出現(xiàn)這種情況的原因<因?yàn)橹暗奈恼陆Y(jié)構(gòu)不算是很清晰,所以這次做一些修改>
二.出現(xiàn)404的分類以及會(huì)導(dǎo)致的原因
1.啟動(dòng)項(xiàng)目后,無(wú)法訪問(wèn)主頁(yè)出現(xiàn)的404
2.1.1.查看項(xiàng)目是否啟動(dòng)成功;
2.1.2.確認(rèn)項(xiàng)目地址的正確性;
2.1.3.作為項(xiàng)目主頁(yè)的html頁(yè)面應(yīng)該放到工程的WebContent的根目錄下;
2.項(xiàng)目啟動(dòng)并且成功進(jìn)入主頁(yè)后,訪問(wèn)其他頁(yè)面出現(xiàn)的404
2.2.1. 相關(guān)操作訪問(wèn)路徑是否正確;
2.2.2. Controller層是否被注解@Controller標(biāo)注為組件;
2.2.3. springmvc配置文件中,是否配置了對(duì)@Controller標(biāo)簽的支持:<mvc:annotation-driven />;
2.2.4. springmvc配置文件中,是否配置了對(duì)Controller層的掃描: <context:component-scan base-package="controller">;
2.2.5. sprinmvc的配置文件中,視圖解析器路徑是否配置異常;
2.2.6. 檢查web.xml中的相關(guān)配置是否正確:
1.是否配置了spring的監(jiān)聽(tīng),以及正確加載spring相關(guān)配置文件
2.是否正確加載springmvc的配置文件
三.分情況詳細(xì)說(shuō)明
3.1.先附上并簡(jiǎn)單介紹一下我的工程結(jié)構(gòu)目錄圖
簡(jiǎn)單介紹一下applicationContext-*為什么會(huì)有三個(gè):
applicationContext-dao
: 里面配置了數(shù)據(jù)源,以及對(duì)mybatis的相關(guān)支持<注意我的項(xiàng)目是ssm>applicationContext-service
:里面配置了事務(wù)管理applicationContext-trans
: 配置了對(duì)Service層的掃描
如果沒(méi)有對(duì)Service層的掃描,就無(wú)法使用到@Service標(biāo)注的組件,從而導(dǎo)致Controller中的出現(xiàn)空指針情況。
emmm,,,稍微考慮了一下,我決定把a(bǔ)pplicationContext-trans的配置截圖附上:
你看把,真的是只配置了對(duì)Service層注解的掃描
3.2.啟動(dòng)項(xiàng)目后,無(wú)法訪問(wèn)主頁(yè)出現(xiàn)404
3.2.1. 查看項(xiàng)目是否啟動(dòng)成功;
略<sorry,沒(méi)什么可說(shuō)的>
3.2.2.確認(rèn)項(xiàng)目地址的正確性;
略
3.2.3.作為項(xiàng)目主頁(yè)的html頁(yè)面應(yīng)該放到工程的WebContent的根目錄下;
參照上面項(xiàng)目結(jié)構(gòu)
3.3.項(xiàng)目啟動(dòng)并且成功進(jìn)入主頁(yè)后,訪問(wèn)其他頁(yè)面出現(xiàn)404; 3.3.1.相關(guān)操作訪問(wèn)路徑是否正確;
檢查包括:
①. 頁(yè)面的請(qǐng)求路徑
②. Controller層的路徑
③. web.xml是否配置了對(duì)前端請(qǐng)求的攔截路徑<怎么這么多情況....>
截個(gè)圖,給個(gè)案例:
①. index.jsp如下
②. Controller如下
③. 前端攔截器:
注意攔截路徑: /表示攔截一切路徑,不能是/*
(如果你要問(wèn)為什么,抱歉,人家這么規(guī)定我也無(wú)能為力)
3.3.2.Controller層是否被@Controller標(biāo)注為組件
顧名思義,略。(如果這個(gè)都不會(huì),你該考慮一下是不是還要把demo給進(jìn)行下去了)
3.3.3.springmvc配置文件中,是否配置了對(duì)@Controller標(biāo)簽的支持:<mvc:annotation-driven />
①. <mvc:annotation-driven />我配置在了springmvc-config.xml文件中,在下面講解合適的時(shí)候我會(huì)附上代碼截圖
<為什么老是截圖?因?yàn)槲以敢?..>
②. 什么是<mvc:annotation-driven/>
相當(dāng)于注冊(cè)了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter兩個(gè)bean,配置一些messageconverter。
簡(jiǎn)單來(lái)說(shuō)就是: 提供了使用并且能夠識(shí)別@Controller注解的前提.
3.3.4.springmvc配置文件中,是否配置了對(duì)Controller層的掃描:<context:component-scan base-package=" ">
既然上面配置了對(duì)@Controller的支持,現(xiàn)在就需要配置對(duì)@Controller注解的掃描
值得注意的是(比如在我的demo里),
base-package="controller",而不是bask-package="controller.*";
3.3.5.springmvc配置文件中,是否正確配置了視圖解析器的路徑
<!-- 配置視圖解析器 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> //value路徑配置的是jsp所在的文件夾目錄 <property name="suffix" value=".jsp"/> //value配置的是頁(yè)面的后綴 </bean>
現(xiàn)在,附上springmvc配置文件springmvc-config的代碼截圖(現(xiàn)在就是合適的時(shí)候):
在這里面包括了上述說(shuō)的1.注解的支持;2.掃描@Controller注解所在包的配置;3.視圖解析器的配置
3.3.6.檢查web.xml中的相關(guān)配置是否正確
注意:我的配置文件在一個(gè)資源文件夾下,具體路徑還請(qǐng)根據(jù)自己的結(jié)構(gòu)目錄來(lái)配置
①. 是否配置了spring的監(jiān)聽(tīng),以及正確加載spring相關(guān)配置文件
//配置spring相關(guān)配置文件 <context-param> <param-name>contextConfigLocation</param-name> //不可修改 <param-value>classpath:config/spring/applicationContext-*.xml</param-value> </context-param> //配置spring監(jiān)聽(tīng) <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
附上截圖,方便查看:
②. 是否正確加載springmvc的配置文件
標(biāo)簽概念及代碼如下:
//配置servlet <servlet> <servlet-name>springmvc</servlet-name> //可以理解為剛給當(dāng)前servlet起名字,可自定義 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>//springmvc的核心處理器,不可自定義 <init-param> <param-name>contextConfigLocation</param-name> //核心處理器的初始化,不可自定義 <param-value>classpath:springmvc/springmvc-config.xml</param-value> //springmvc配置文件的目錄,根據(jù)自己結(jié)構(gòu)目錄自定義 </init-param> </servlet> //配置servletMapping <servlet-mapping> <servlet-name>springmvc</servlet-name> //可以理解為指定被Mapping的servlet的名稱(代碼第二行中的名稱相同) <url-pattern>/</url-pattern> //配置攔截路徑,/表示全攔截 </servlet-mapping>
<url-pattern/> 攔截器路徑的配置方式包括: *.do 、*.action 、/
意思是分別:攔截以do、action、任意后綴或者是無(wú)后綴的前端請(qǐng)求
附上截圖,方便大家更直觀的看:
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java創(chuàng)建隨機(jī)數(shù)的四種方式總結(jié)
這篇文章主要介紹了java的四種隨機(jī)數(shù)生成方式的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下2022-07-07Springboot使用Redis中ZSetOperations實(shí)現(xiàn)博客訪問(wèn)量
在日常的網(wǎng)站使用中,經(jīng)常會(huì)碰到頁(yè)面的訪問(wèn)量,本文主要介紹了Springboot使用Redis中ZSetOperations實(shí)現(xiàn)博客訪問(wèn)量,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01Spring IOC創(chuàng)建對(duì)象的兩種方式
這篇文章主要給大家介紹了關(guān)于Spring IOC創(chuàng)建對(duì)象的兩種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03SpringBoot超詳細(xì)講解Thymeleaf模板引擎
這篇文章主要分享了Spring Boot整合使用Thymeleaf,Thymeleaf是新一代的Java模板引擎,類似于Velocity、FreeMarker等傳統(tǒng)引擎,關(guān)于其更多相關(guān)內(nèi)容,需要的小伙伴可以參考一下2022-07-07@RequestBody,@RequestParam和@Param的區(qū)別說(shuō)明
這篇文章主要介紹了@RequestBody,@RequestParam和@Param的區(qū)別說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03Java下載文件時(shí)文件名亂碼問(wèn)題解決辦法
我最近在開(kāi)發(fā)時(shí)遇到了文件另存為時(shí)文件名出現(xiàn)亂碼,在火狐上正常的文件名,在IE中又出現(xiàn)亂碼問(wèn)題,然后好不容易在IE下調(diào)試好了文件名亂碼問(wèn)題,在火狐下又出現(xiàn)亂碼,最后終于感覺(jué)這樣是能解決了。具體如下:2013-04-04Spring Gateway自定義請(qǐng)求參數(shù)封裝的實(shí)現(xiàn)示例
這篇文章主要介紹了Spring Gateway自定義請(qǐng)求參數(shù)封裝的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09