当前位置: 首页 > news >正文

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");}}
  1. 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;}@Overrideprotected String[] getServletMappings() { //return new String[]{"/"}; //所有请求都归spring处理}@Overrideprotected 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")@ResponseBodypublic String save(){System.out.println("save");return"{'info' : 'springmvc'}";}}

启动服务器初始化过程

  1. 服务器启动,执行ServletContainerInitConfig类,初始化web容器
  2. 执行creatServletApplicationContext方法,创建了WebApplicationContext对象
  3. 加载SpringConfig
  4. 执行@ComponentScan加载对应的bean
  5. 加载UserController,每个@RequestMapping的名称对应一个具体的方法
  6. 执行getServletMappings方法,定义所有的请求都通过SpringMVC
    单次请求过程
  7. 发送请求localhost/save
  8. web容器发现所有请求都经过SpringMVC,将请求交给SpringMVC处理
  9. 解析请求路径/save
  10. 由/save匹配执行对应的方法save();
  11. 执行save()
  12. 检测到有@ResponseBody直接将save()方法的返回值作为响应体返回给请求方

web容器
-ServletContext
--WebApplicationContext
---UserController
/save -> save()

http://www.gsyq.cn/news/11016.html

相关文章:

  • 小柏实战学习Liunx(图文教程三十五)
  • HarmonyOS 5 通知与语音能力开发实战:从消息推送到智能语音交互
  • Keithley 万用表里测电阻分成两种模式
  • 实战:基于HarmonyOS 5构建分布式聊天通讯应用
  • HarmonyOS 5 高级动效实战:粒子系统、路径动画与物理动效开发
  • 全新 CloudPilot AI:嵌入 Kubernetes 的 SRE Agent,降本与韧性双提升!
  • HarmonyOS 5 性能优化全攻略:从启动加速到内存管理
  • HarmonyOS 5 网络编程与数据存储实战:从RESTful API到本地持久化
  • 浅谈当前时代下大学生的就业择业及人生规划
  • flink不同环境切换 - --
  • ps-填充色
  • PythonStudio_圆的面积demo源代码
  • HT-AD4PS-1+ 一分四射频功分器:1-500 MHz 小尺寸/低插损,通信、医疗全能打
  • HarmonyOS资源管理与访问:多分辨率与多语言适配
  • 面试官:为什么没有虚拟线程池?
  • 从安装到中文界面,一文带你玩转 DaVinci Resolve 20(零基础也能搞定)
  • linux手动安装阿里云Logtail采集Nginx访问日志
  • 古代史
  • HarmonyOS 5.0+ 安全加密与数据存储最佳实践指南
  • EV论文修改工作
  • B端界面设计的核心逻辑:效率优先还是体验优先?
  • 质数(埃氏筛、欧拉筛)
  • HarmonyOS数据持久化:Preferences轻量级存储实战
  • 有理数类的问题回答
  • 案例分享 | 芯片企业官网优化
  • Kali Linux 2025.3 发布 (Vagrant Nexmon) - 领先的渗透测试发行版
  • C语言多线程同步详解:从互斥锁到条件变量
  • LazyForEach性能优化:解决长列表卡顿问题
  • Redis数据结构的最佳实践 - 公众号
  • java函数式编程的学习01