SpringBootMVC相關內容
SpringMVC
基于java實現MVC模型的輕量級Web框架
做Web程序開發
當我們的瀏覽器發出一個請求給到后端服務器以后,由servlet負責處理請求,
servlet只是能夠接收請求產生響應,不能進行真正的數據處理
于是將后端服務拆分成
三層架構
web
負責頁面數據的收集和產生頁面
service
負責業務處理
dao
負責數據的持久化,存儲和查詢數據
最終得到數據并在表現層中組織出最終要得到的界面,再將該頁面反饋給我們的瀏覽器
進階版-MVC模式
將servlet三成三塊
web變成 - contrller、View、Model三個部分
1. 瀏覽器發送請求給controller控制器
2. 由控制器調用我們的業務層
3. 業務層調用數據層
4. service得到數據之后最終展示出來給Model數據模型
5. 然后將View也就是頁面抽取出來,由view和model配合在一起工作
6. 最終得到頁面反饋給用戶
View分為
HTML+CSS+VUE+ElemetUIG構建頁面
瀏覽器通過View用**異步調用**的形式調用我們的后端服務器
Controller調用service調用dao
調用完之后最終會得到一個Model的對象
后端服務器和前端頁面通過json數據模式打交道
SpringMVC負責
以上Controller對應服務器開發,同時將操作完的數據轉成json格式交給頁面
M - 數據和業務
V - HTML
C - 交接
Spring SpringMVC SpringBoot 區別
Spring
IOC容器,用來管理Bean,使用依賴注入實現控制反轉,降低耦合。可以很方便地整合各種框架
提供AOP機制彌補OOP代碼重復的問題:
將不同類和方法中的相同的處理邏輯,抽取成切面,自動注入給方法執行
如日志、異常等 - 面向切面編程
SpringMVC
Spring對Web框架的一個解決方案,提供了一個總的前端控制器Servlet
用來接收請求,然后定義了一套路由策略(從url到handle的映射)及適配執行handle
將handle結果使用視圖解析技術生成視圖展現給前端
SpringBoot
Spring提供的一個快速開發包,能更快速地開發spring+springmvc應用
簡化配置(約定大于配置),整合了一系列解決方案(starter機制)
redis、mongoDB、es可以開箱即用
首先創建一個com.example.controller包
設置一個UserController類
package com.example.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class UserController {
@RequestMapping("/save")
public void save(){
System.out.println("save");
}
}
- Serlvet容器初始化配置類
創建一個com.example.config包
SerlvetContainersintConfig - servlet容器配置
public class SerlvetContainersintConfig extends AbstractDispatcherServletInitializer { //分派器Servlet初始化器
@Override
//Web相關組件:Controller、視圖解析器等
//Web上下文:處理HTTP請求、響應
protected WebApplicationContext createServletApplicationContext() { //要求加載SpringMVC的容器對象
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(SpringMvcConfig.class);
return ctx;
}
@Override
protected String[] getServletMappings() { //
return new String[]{"/"}; //所有請求都歸spring處理
}
@Override
protected WebApplicationContext createRootApplicationContext() { //加載Spring配置的容器對象
return null;
}
}
```AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();```
創建一個基于注解配置的Web應用上下文對象
AnnotationConfigWebApplicationContext - 注釋配置Web應用上下文
報錯
真的煩
com.intellij.execution.ExecutionException: 找不到此 Web 模塊的
修改selvet-api依賴
<dependency>
<groupId>jakarta.servlet</groupId>
<artifactId>jakarta.servlet-api</artifactId>
<version>6.0.0</version>
<scope>provided</scope>
</dependency>
not found for the web module
項目結構-工作-添加一個什么
運行之后會彈出一個404界面
我們在UserController下添加一個@ResponseBody
再將返回值改成String
然后return"{'info' : 'springmvc'}";
具體如下
@Controller
public class UserController {
@RequestMapping("/save")
@ResponseBody
public String save(){
System.out.println("save");
return"{'info' : 'springmvc'}";
}
}
啟動服務器初始化過程
- 服務器啟動,執行ServletContainerInitConfig類,初始化web容器
- 執行creatServletApplicationContext方法,創建了WebApplicationContext對象
- 加載SpringConfig
- 執行@ComponentScan加載對應的bean
- 加載UserController,每個@RequestMapping的名稱對應一個具體的方法
- 執行getServletMappings方法,定義所有的請求都通過SpringMVC
單次請求過程 - 發送請求localhost/save
- web容器發現所有請求都經過SpringMVC,將請求交給SpringMVC處理
- 解析請求路徑/save
- 由/save匹配執行對應的方法save();
- 執行save()
- 檢測到有@ResponseBody直接將save()方法的返回值作為響應體返回給請求方
web容器
-ServletContext
--WebApplicationContext
---UserController
/save -> save()

浙公網安備 33010602011771號