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

【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数据。

相关文章:

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

跟着这位老师学习的:https://www.bilibili.com/video/BV1nV4y1s7ZN?vd_sourceaf46ae3e8740f44ad87ced5536fc1a45 这段话的意思其实是:Spring Boot 简化了传统 Web 项目的搭建流程,让你少折腾配置,直接开搞业务逻辑。 &#x1f52…...

探索Web3平台的数据安全和保护机制

在数字化时代,Web3 平台以其去中心化、透明性和用户主权等特点,正逐渐成为互联网技术的新宠。然而,随着数据价值的日益凸显,Web3 平台的数据安全和保护机制变得尤为重要。本文将深入探讨 Web3 平台的数据安全和保护机制&#xff0…...

基于ssh密钥访问远程Linux

1、在本地机器上生成密钥对(默认保存在 ~/.ssh/) ssh-keygen -t ed25519 或使用 RSA(兼容性更好): ssh-keygen -t rsa -b 4096 2、 将公钥上传到远程主机 方法一:使用 ssh-copy-id ssh-copy-id -i ~/.ssh/id_ed25519.pub us…...

《基于神经网络实现手写数字分类》

《基于神经网络实现手写数字分类》 一、主要内容: 1、通过B站陈云霁老师的网课,配合书本资料,了解神经网络的基本组成和数学原理。 2、申请云平台搭建实验环境 3、基于5个不同的实验模块逐步理解实验操作步骤,并实现不同模块代码…...

1 cline 提示词工程指南-架构篇

cline 提示词工程指南-架构篇 本篇是 cline 提示词工程指南的学习和扩展,可以参阅: https://docs.cline.bot/improving-your-prompting-skills/prompting 前言 cline 是 vscode 的插件,用来在 vscode 里实现 ai 编程。 它使得你可以接入…...

代理模式简述

目录 一、主要角色 二、类型划分 三、静态代理 示例 缺点 四、动态代理 JDK动态代理 示例 缺点 CGLib动态代理 导入依赖 示例 五、Spring AOP 代理模式是一种结构型设计模式,通过代理对象控制对目标对象的访问,可在不改变目标对象情况下增强…...

Operator 开发入门系列(一):Hello World

背景 我们公司最近计划将产品迁移到 Kubernetes 环境。 为了更好地管理和自动化我们的应用程序,我们决定使用 Kubernetes Operator。 本系列博客将记录我们学习和开发 Operator 的过程,希望能帮助更多的人入门 Operator 开发。 目标读者 对 Kubernete…...

【Docker】运行错误提示 unknown shorthand flag: ‘d‘ in -d ----详细解决方法

使用docker拉取Dify的时候遇到错误 错误提示 unknown shorthand flag: d in -dUsage: docker [OPTIONS] COMMAND [ARG...]错误原因解析 出现 unknown shorthand flag: d in -d 的根本原因是 Docker 命令格式与当前版本不兼容,具体分为以下两种情况: 新…...

【AI插件开发】Notepad++ AI插件开发实践:实现对话窗口功能

引言 之前的文章已经介绍实现了AI对话窗口,但只有个空壳,没有实现功能。本次将集中完成对话窗口的功能,主要内容为: 模型动态切换:支持运行时加载配置的AI模型列表交互式输入处理:实现多行文本输入与Ctrl…...

在激烈竞争下B端HMI设计怎样打造独特用户体验?

在当今数字化高度发展的时代,B 端市场竞争愈发激烈。对于 B 端 HMI(人机界面)设计而言,打造独特的用户体验已成为在竞争中脱颖而出的关键因素。B 端用户在复杂的工作场景中,对 HMI 设计有着独特的需求和期望&#xff0…...

【Netty篇】Handler Pipeline 详解

目录 一、 Handler & Pipeline——流水线上的“特种部队”与“生产线”1、 ChannelHandler —— 流水线上的“特种兵”👮‍♂️2、 ChannelPipeline —— 生产线上的“接力赛跑”🏃‍♀️🏃‍♂️ 二、 代码实例1、 服务端代码示例2、 客…...

计算机网络 - UDP协议

通过一些问题来讨论 UDP 协议 什么是 UDP?举几个应用了 UDP 协议的例子UDP 与 TCP 有啥区别?(PS:介绍三四个就可以了,不用说太多)具体 UDP 是不可靠的,那你觉得如何实现一个可靠的 UDP &#x…...

16-算法打卡-哈希表-两个数组的交集-leetcode(349)-第十六天

1 题目地址 349. 两个数组的交集 - 力扣(LeetCode)349. 两个数组的交集 - 给定两个数组 nums1 和 nums2 ,返回 它们的 交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 示例 1:输入:nu…...

java + spring boot + mybatis 通过时间段进行查询

前端传来的只有日期内容&#xff0c;如&#xff1a;2025-04-17 需要在日期内容的基础上补充时间部分&#xff0c;代码示例&#xff1a; /*** 日志查询&#xff08;分页查询&#xff09;* param recordLogQueryDTO 查询参数对象* return 日志列表*/Overridepublic PageBean<…...

AI与物联网的深度融合:开启智能生活新时代

在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;和物联网&#xff08;IoT&#xff09;作为两大前沿技术&#xff0c;正在加速融合&#xff0c;为我们的生活和工作带来前所未有的变革。这种融合不仅提升了设备的智能化水平&#xff0c;还为各行各业带来了新的机…...

浔川AI翻译v7.0更新预告

亲爱的浔川AI翻译用户&#xff1a; 感谢您一直以来的支持&#xff01;浔川AI翻译自推出以来&#xff0c;已迭代6个版本&#xff0c;其中**v2.0和v4.0因技术问题&#xff08;翻译结果显示异常、注册失败、密码找回功能失效等&#xff09;**被迫下架。我们深知这些问题影响了您…...

helm账号密码加密

1、安装工具 sudo apt update sudo apt install gnupg -y wget https://github.com/getsops/sops/releases/download/v3.10.2/sops-v3.10.2.linux.amd64 mv sops-v3.10.2.linux.amd64 /usr/local/bin/sops chmod x /usr/local/bin/sops2、生成加密文件 gpg --full-generate-…...

Flink 编程基础:Scala 版 DataStream API 入门

大家好&#xff01;我是心海 流处理技术在大数据时代正变得越来越重要&#xff0c;而 Apache Flink 作为领先的流处理引擎&#xff0c;凭借其高性能、低延迟和丰富的 API 受到了广泛关注。本文将以 Scala 语言为例&#xff0c;详细讲解 Flink DataStream API 的基本编程模型&am…...

实战|使用环信Flutter SDK构建鸿蒙HarmonyOS应用及推送配置

本文为大家介绍如何在 Flutter 环境创建 Harmony 项目并集成环信即时通讯IM以及环信 Flutter Harmony 推送配置。 已经基于环信的 Flutter 项目也可以参考本文适配鸿蒙端。 一、开发环境要求 前置条件 1.安装DevEco-Studio 2.安装模拟器 DevEco-Studio 下载与操作指导&…...

HTML5好看的水果蔬菜在线商城网站源码系列模板5

文章目录 1.设计来源1.1 主界面1.2 关于我们1.3 商品服务1.4 果蔬展示1.5 联系我们1.6 商品具体信息1.7 登录注册 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作者&#xff1a;xcLeigh 文章地址&#…...

宜搭与金蝶互通——连接器建立

一、 进入连接器工厂 图1 连接器入口 二、 新建连接器 图2 新建连接器第一步 1、 连接器显示名,如图2中①所示; 2、 图2中②域名,是金蝶系统API接口里面的“完整服务地址”com之前的信息,不含“https”,如图3中①所示; 3、 Base Url通常为“/”,如图2…...

SP7733:HPYNOS - Happy Numbers I(参考我之前的文章,哈希)

题目大意 我们定义“破坏”整数的过程是对其每一位上的数字的平方求和成为一个新数&#xff0c;如果一个数在经过若干次“破坏”以后变成了 1&#xff0c;那么这个数就是一个高兴的数字&#xff0c;输出变化次数&#xff0c;否则如果永远不会变成 1&#xff0c;输出 −1。 例如…...

《Java 泛型的作用与常见用法详解》

大家好呀&#xff01;&#x1f44b; 今天我们要聊的是Java中一个超级重要但又让很多初学者头疼的概念——泛型(Generics)。带你彻底搞懂它&#xff01;&#x1f4aa; 准备好你的小本本&#xff0c;我们开始啦&#xff5e;&#x1f4dd; 一、为什么需要泛型&#xff1f;&#x…...

【JavaWeb】详细讲解 HTTP 协议

文章目录 一、HTTP简介1.1 概念1.2 特点 二、协议2.1 HTTP-请求协议&#xff08;1&#xff09;GET方式&#xff08;2&#xff09;POST方式&#xff08;3&#xff09;GET和POST的区别&#xff1a; 2.2 HTTP-响应协议&#xff08;1&#xff09;格式&#xff08;2&#xff09;响应…...

【android bluetooth 框架分析 02】【Module详解 4】【Btaa 模块介绍】

1. 背景 我们在上一篇文章中介绍 HciHal 模块时&#xff0c;有如下代码 // system/gd/hal/hci_hal_android_hidl.ccvoid ListDependencies(ModuleList* list) const {list->add<SnoopLogger>();if (common::init_flags::btaa_hci_is_enabled()) {list->add<ac…...

“星睿O6” AI PC开发套件评测 - Windows on Arm 安装指南和性能测评

引言 Radxa联合此芯科技和安谋科技推出全新的"星睿O6"迷你 ITX 主板。该系统搭载了 CIX P1&#xff08;CD8180&#xff09;12 核 Armv9 处理器&#xff0c;拥有高达30T算力的NPU和高性能的GPU&#xff0c;最高配备64GB LPDDR内存&#xff0c;并提供了如 5GbE、HDMI …...

Python 调用 YOLOv11 ONNX

Python 调用 YOLO ONNX 1 下载ONNX文件2 Python代码 1 下载ONNX文件 ONNX下载地址 2 Python代码 import cv2 from ultralytics import YOLOdef check(yolo:str, path:str):# 加载 YOLOv11model YOLO(yolo)# 读取图片img cv2.imread(path)# 推理&#xff08;可以传文件路径…...

数据通信学习笔记之OSPF路由汇总

区域间路由汇总 路由汇总又被称为路由聚合&#xff0c;即是将一组前缀相同的路由汇聚成一条路由&#xff0c;从而达到减小路由表规模以及优化设备资源利用率的目的&#xff0c;我们把汇聚之前的这组路由称为精细路由或明细路由&#xff0c;把汇聚之后的这条路由称为汇总路由或…...

ASP.NET Core Web API 配置系统集成

文章目录 前言一、配置源与默认设置二、使用步骤1&#xff09;创建项目并添加配置2&#xff09;配置文件3&#xff09;强类型配置类4&#xff09;配置Program.cs5&#xff09;控制器中使用配置6&#xff09;配置优先级测试7&#xff09;动态重载配置测试8&#xff09;运行结果示…...

如何判断单片机性能极限?

目录 1、CPU 负载 2、内存使用情况 3、实时性能 4、外设带宽 5、功耗与温度 在嵌入式系统设计中&#xff0c;当系统变得复杂、功能增加时&#xff0c;单片机可能会逐渐逼近其性能极限。及时识别这些极限点对于保证产品质量、稳定性和用户体验至关重要。 当你的嵌入式系统…...