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

【SpringBoot+Vue自学笔记】003 SpringBoot Controll

跟着这位老师学习的:https://www.bilibili.com/video/BV1nV4y1s7ZN?vd_source=af46ae3e8740f44ad87ced5536fc1a45

这段话的意思其实是:Spring Boot 简化了传统 Web 项目的搭建流程,让你少折腾配置,直接开搞业务逻辑。


🔧 传统 Web 项目的问题

在没有 Spring Boot 之前,我们想写一个 Web 项目,至少得配置好这些:

  • Spring MVC:处理请求和返回视图或 JSON。

  • Jackson(或其他):处理 JSON 序列化/反序列化。

  • Tomcat:Web 容器,还得自己安装和部署。

  • 再加一堆配置文件才能跑起来。

每一部分都要手动整合,稍有差错就报错,搭建项目成了一种“玄学”。


🧰 Spring Boot 的简化方式

Spring Boot 提供了一个组件:
👉 spring-boot-starter-web

它是个“启动器”,只要你在创建项目时勾选了 Spring Web,
这个启动器就自动加入了进来,里面已经帮你 整合好了你需要的大部分依赖


🚀 spring-boot-starter-web 里面包括:

  • spring-web + spring-webmvc:支持 Web 请求的处理,MVC 模式。

  • jackson-databind:用于处理 JSON,帮你自动把对象转成 JSON 发给前端。

  • 内嵌 tomcat:你不再需要自己装 Tomcat,它内置好了,点个运行就能启动服务。

                Tomcat 是一个 Web 服务器,也叫 Servlet 容器

                        它最主要的作用是:

                📦「运行你的 Web 项目,处理 HTTP 请求」

                        你写的 Spring Boot 应用,前端发来的 HTTP 请求,
                        最后都是由 Tomcat 来接收、分发、处理、响应的。

                        假如你写了个接口:

@GetMapping("/hello")
public String sayHello() {return "Hello";
}

                        用户在浏览器访问:

http://localhost:8080/hello

就是 Tomcat:

  • 接收这个请求

  • 把它交给 Spring 处理

  • 然后 Spring 把结果返回给 Tomcat

  • Tomcat 最后把结果响应给前端

个人理解不一定对:

整个流程像一条流水线,从浏览器发起请求开始,到最终收到响应为止,可以分为下面这几步——每一环都刚刚好接上下一环:


1. 浏览器发送请求

用户在页面点击某个按钮,比如发帖,前端通过 axios 发出 HTTP 请求(如:POST /api/posts)。


2. 请求被 Tomcat 接收到

Spring Boot 内嵌的 Tomcat 是个 Web 服务器,它监听端口(比如 8080),收到请求之后,把请求传给 Spring 的处理核心。


3. DispatcherServlet 拦截请求

这是 Spring MVC 的总调度,叫 “前端控制器”
它接到请求后,开始派活:

  • 查找对应的 Controller

  • 根据请求路径、方法类型(GET/POST)来定位到具体方法,比如 PostController.createPost()


4. Controller 执行方法

你的 Controller 接到请求,拿到参数(比如表单内容),调用服务层逻辑,最终返回一个 Java 对象,比如:

return new Result("发布成功", postId);

5. 返回对象被转换成 JSON

Spring 内置的 JSON 处理器是 Jackson
它把 Java 对象变成 JSON 字符串,比如:

{ "message": "发布成功", "data": 101 }

6. DispatcherServlet 把 JSON 塞进响应里

调度器拿到 JSON 后,放进 HttpServletResponse 里,准备发送。


7. Tomcat 把响应发回浏览器

Tomcat 把 HTTP 响应封装好,通过 TCP 发回用户浏览器。


8. 浏览器收到响应,前端页面更新

前端拿到 JSON 数据,展示“发布成功”的提示,或更新帖子列表等。


整个过程,是从浏览器 → Tomcat → DispatcherServlet → Controller → Jackson → DispatcherServlet → Tomcat → 浏览器
每个部分就像一环扣一环的“链条”,中间没有哪一步是可以省略的。

MVC:model,view,controller

@controller 必须返回一个视图,必须返回一个html页面(用Thymeleaf前后端不分离)

参数映射:

@RequestMapping(value="/getTest3" ,method = RequestMethod.GET)
//http//localhost:8080/qetTest2?nickname=xxx
PUblic String getTest3(@RequestParam("nickname")String.name){System.out.println("nickname:"+name) ;return "GET 请求';
}

用了@RequestParam,则nickname必须被访问到,不能为空,否则这个方法不能被访问到,使用required = false则可以不访问

@RequestMapping(value="/getTest3" ,method = RequestMethod.GET)
//http//localhost:8080/qetTest2?nickname=xxx
PUblic String getTest3(@RequestParam(value = "nickname",required = false)String.name){System.out.println("nickname:"+name) ;return "GET 请求';
}

@RequestBody:接收json数据。

相关文章:

  • Oracle DBMS_SCHEDULER 与 DBMS_JOB 的对比
  • 【音视频开发】第五章 FFmpeg基础
  • k8s调度器:如何控制Pod的分布
  • 【Android】 如何将 APK 内置为系统应用(适用于编辑设置属性)
  • vim编辑器
  • Android Compose Activity 页面跳转动画详解
  • 更换 CentOS 7.9 的系统源
  • 智能交响:EtherCAT转Profinet网关开启汽车自动化通信新纪元
  • Linux电源管理(三),CPUIdle 和 ARM的PSCI
  • VFlash的自动化和自定义动作
  • 深入理解Qt状态机的应用
  • C++23 新特性:std::size_t 字面量后缀 Z/z
  • B3634 最大公约数和最小公倍数
  • InfiniBand与RoCEv2负载均衡机制的技术梳理与优化实践
  • AWS中国区服务部署与ICP备案全流程指南:从0到1实现合规上线
  • Python爬虫实战:基于 Scrapy 框架的微博数据爬取研究
  • 给你的 Rust 通用库“插上” WebAssembly 的翅膀
  • 批量给文件创建一个同名的文件夹,并将文件放入对应同名的文件夹
  • 第9篇:Linux程序访问控制FPGA端HEX<二>
  • 常用UI设计工具及平台概览
  • 广西北流出现强降雨,1人被洪水冲走已无生命体征
  • 中国驻美大使:远离故土的子弹库帛书正随民族复兴踏上归途
  • 浙江一家长称小学老师打孩子还威胁要从3楼扔下,当地警方已立案
  • 北京韩美林艺术馆党支部书记郭莹病逝,终年40岁
  • 法律顾问被控配合他人诈骗酒店资产一审判8年,二审辩称无罪
  • 湖南慈利一村干部用AI生成通知并擅自发布,乡纪委立案