springboot啟動(dòng)404問題以及解決方案
springboot啟動(dòng)404問題
隨便建了個(gè)springboot項(xiàng)目,寫了個(gè)TestController類.在成功啟動(dòng)內(nèi)置tomcat后,一直報(bào)404。
在網(wǎng)上找了很多例子,大部分都是說(shuō)啟動(dòng)類的位置和controller包的位置的問題,我的是沒有問題的。
還有就是配置前端訪問html問題的配置,我的是純后臺(tái),沒有連接前端,因此也沒問題。
找了一圈后,在一個(gè)英文網(wǎng)站找到了原因
在寫controller類時(shí),用到了注解@RequestMapping注解,百度了一下,發(fā)現(xiàn)注解在spring-web包中,于是引入了spring-web的依賴。
然后啟動(dòng)服務(wù)器成功后一直報(bào)錯(cuò)。
后面加上了spring-boot-starter-web
才解決了此問題。
原因找到了,那為什么會(huì)出現(xiàn)這種情況呢?
我查看了下
spring-boot-starter-web
的依賴群,于是發(fā)現(xiàn)了如圖的各種依賴
然后發(fā)現(xiàn)spring-boot-starter-web不僅包含了spring-web的依賴,還找到了一個(gè)最關(guān)鍵的依賴:spring-webmvc
沒錯(cuò),404的原因找到了,就是少了spring-webmvc幫忙處理web請(qǐng)求.
加上了spring-boot-starter-web就可以去掉之前加的spring-web依賴了.
那為什么并不加spring-webmvc就不行呢?
我看了下spring-webmvc的源碼包
如圖:
DispatcherServlet正是請(qǐng)求分發(fā)和處理返回view視圖的控制器
然后看了下springmvc的工作流程:
1、用戶發(fā)送請(qǐng)求至前端控制器DispatcherServlet。
2、DispatcherServlet收到請(qǐng)求調(diào)用HandlerMapping處理器映射器。
3、處理器映射器找到具體的處理器(可以根據(jù)xml配置、注解進(jìn)行查找),生成處理器對(duì)象及處理器攔截器(如果有則生成)一并返回給DispatcherServlet。
4、DispatcherServlet調(diào)用HandlerAdapter處理器適配器。
5、HandlerAdapter經(jīng)過適配調(diào)用具體的處理器(Controller,也叫后端控制器)。
6、Controller執(zhí)行完成返回ModelAndView。
7、HandlerAdapter將controller執(zhí)行結(jié)果ModelAndView返回給DispatcherServlet。
8、DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器。
9、ViewReslover解析后返回具體View。
10、DispatcherServlet根據(jù)View進(jìn)行渲染視圖(即將模型數(shù)據(jù)填充至視圖中)。
11、DispatcherServlet響應(yīng)用戶。
由此可知.如果沒有spring-webmvc依賴,請(qǐng)求根本不知道怎么處理,也就是根本找不到責(zé)任人和目的地.
那spring-web又是做什么用的呢?
有比較才有不同,name我們用spring-web和spring-webmvc來(lái)大概比較一下
首先看下spring-web的源碼包
可以看到http和remoting都是服務(wù)于遠(yuǎn)程調(diào)用的,而web包則是管理spring容器對(duì)象的,
spring-webmvc依賴于spring-web,應(yīng)為mvc模式的對(duì)象都是由spring-web來(lái)管理的,可以說(shuō)spring-webmvc是拓展業(yè)務(wù)的子分支。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
如何批量生成MySQL不重復(fù)手機(jī)號(hào)大表實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于如何批量生成MySQL不重復(fù)手機(jī)號(hào)大表的相關(guān)資料,,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-11-11mysql如何修改表結(jié)構(gòu)(alter table),多列/多字段
這篇文章主要介紹了mysql如何修改表結(jié)構(gòu)(alter table),多列/多字段問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12mysql5.7.18.zip免安裝版本配置教程(windows)
這篇文章主要為大家詳細(xì)介紹了mysql5.7.18.zip安裝教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05MySQL數(shù)據(jù)表?yè)p壞的正確修復(fù)方案
修復(fù)以損壞的MySQL數(shù)據(jù)表的實(shí)際操作在實(shí)際中是我們經(jīng)常用到的,以下的文章主要是介紹正確修復(fù)以損壞的MySQL數(shù)據(jù)表的實(shí)際操作步驟,以下就是正文的介紹,希望會(huì)給你帶來(lái)一些幫助在此方面。2011-01-01