springboot啟動404問題以及解決方案
springboot啟動404問題
隨便建了個springboot項目,寫了個TestController類.在成功啟動內置tomcat后,一直報404。
在網上找了很多例子,大部分都是說啟動類的位置和controller包的位置的問題,我的是沒有問題的。
還有就是配置前端訪問html問題的配置,我的是純后臺,沒有連接前端,因此也沒問題。
找了一圈后,在一個英文網站找到了原因
在寫controller類時,用到了注解@RequestMapping注解,百度了一下,發(fā)現注解在spring-web包中,于是引入了spring-web的依賴。
然后啟動服務器成功后一直報錯。
后面加上了spring-boot-starter-web才解決了此問題。
原因找到了,那為什么會出現這種情況呢?
我查看了下
spring-boot-starter-web
的依賴群,于是發(fā)現了如圖的各種依賴

然后發(fā)現spring-boot-starter-web不僅包含了spring-web的依賴,還找到了一個最關鍵的依賴:spring-webmvc
沒錯,404的原因找到了,就是少了spring-webmvc幫忙處理web請求.
加上了spring-boot-starter-web就可以去掉之前加的spring-web依賴了.
那為什么并不加spring-webmvc就不行呢?
我看了下spring-webmvc的源碼包
如圖:

DispatcherServlet正是請求分發(fā)和處理返回view視圖的控制器
然后看了下springmvc的工作流程:
1、用戶發(fā)送請求至前端控制器DispatcherServlet。
2、DispatcherServlet收到請求調用HandlerMapping處理器映射器。
3、處理器映射器找到具體的處理器(可以根據xml配置、注解進行查找),生成處理器對象及處理器攔截器(如果有則生成)一并返回給DispatcherServlet。
4、DispatcherServlet調用HandlerAdapter處理器適配器。
5、HandlerAdapter經過適配調用具體的處理器(Controller,也叫后端控制器)。
6、Controller執(zhí)行完成返回ModelAndView。
7、HandlerAdapter將controller執(zhí)行結果ModelAndView返回給DispatcherServlet。
8、DispatcherServlet將ModelAndView傳給ViewReslover視圖解析器。
9、ViewReslover解析后返回具體View。
10、DispatcherServlet根據View進行渲染視圖(即將模型數據填充至視圖中)。
11、DispatcherServlet響應用戶。
由此可知.如果沒有spring-webmvc依賴,請求根本不知道怎么處理,也就是根本找不到責任人和目的地.
那spring-web又是做什么用的呢?
有比較才有不同,name我們用spring-web和spring-webmvc來大概比較一下
首先看下spring-web的源碼包

可以看到http和remoting都是服務于遠程調用的,而web包則是管理spring容器對象的,
spring-webmvc依賴于spring-web,應為mvc模式的對象都是由spring-web來管理的,可以說spring-webmvc是拓展業(yè)務的子分支。
總結
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
centos7.4系統(tǒng)中yum源安裝mysql 5.6
本文給大家介紹的是如何在centos7.4系統(tǒng)中通過yum源安裝MySQL 5.6數據庫,CentOS7默認數據庫是mariadb, 但是 好多用的都是mysql ,但是CentOS7的yum源中默認好像是沒有mysql的,今天我們就來看看具體如何操作2018-09-09
MySql8.0對應驅動包匹配注意點+SpringBoot連接MySQL+多數據源配置教程
MySql8.0更新后,應用程序需要更新對應驅動包,Maven配置、JDBC配置、Mybatis集成、多數據源配置等細節(jié)注意事項,需注意驅動包版本匹配、數據庫配置、類文件創(chuàng)建及配置等,并解決了項目啟動過程中遇到的報錯信息2026-03-03

