【JavaEESpring】Spring Web MVC⼊⻔

Spring Web MVC

  • 1. 什么是 Spring Web MVC
    • 1.1 什么是 MVC ?
    • 1.2 是什么 Spring MVC?
  • 2. 学习 Spring MVC
    • 2.1 建立连接
    • 2.2 请求
    • 2.3 响应
  • 3. 相关代码链接

1. 什么是 Spring Web MVC

官⽅对于 Spring MVC 的描述是这样的:
在这里插入图片描述

1.1 什么是 MVC ?

  • MVC 是 Model View Controller 的缩写
  • 它是软件⼯程中的⼀种软件架构设计模式,它把软件系统分为模型、视图和控制器三个基本部分

在这里插入图片描述

  • View(视图) 指在应用程序中专门用来与浏览器进行交互, 展示数据的资源
  • Model(模型) 是应用程序的主体部分, 用来处理程序中数据逻辑的部分
  • Controller(控制器) 可以理解为一个分发器, 用来决定对于视图发来的请求, 需要用哪一个模型来处理, 以及处理完成后需要跳到哪一个视图; 即用来连接视图和模型

1.2 是什么 Spring MVC?

  • MVC 是⼀种架构设计模式, 也⼀种思想, ⽽ Spring MVC 是对 MVC 思想的具体实现.

  • SpringMVC还是⼀个Web框架.

  • 总结来说,Spring MVC 是⼀个实现了 MVC 模式的 Web 框架.

  • Spring web 和SpringBoot的关系

    • Spring Boot 可以添加很多依赖, 借助这些依赖实现不同的功能. Spring Boot 通过添加Spring Web MVC框架, 来实现web功能.
  • Spring在实现MVC时, 也结合⾃⾝项⽬的特点, 做了⼀些改变, 相对⽽⾔, 下⾯这个图或许更加合适⼀些.
    在这里插入图片描述

2. 学习 Spring MVC

主要学习的方面

  1. 建⽴连接:将⽤⼾(浏览器)和 Java 程序连接起来,也就是访问⼀个地址能够调⽤到我们的 Spring 程序。
  2. 请求: ⽤⼾请求的时候会带⼀些参数,在程序中要想办法获取到参数, 所以请求这块主要是 获取参数的功能.
  3. 响应: 执⾏了业务逻辑之后,要把程序执⾏的结果返回给⽤⼾, 也就是响应.

2.1 建立连接

  • @RequestMapping 来实现 URL 路由映射
  • @RestController 指定 Spring 需要扫描的类, 只有被@RestController 修饰的类, Spring 才会在该类中找到对应的 @RequestMapping 修饰的方法
  • @RequestMapping 即可修饰类,也可以修饰⽅法当修饰类和⽅法时,访问的地址是类路径 + ⽅法路径
  • @RequestMapping 支持各种请求方法

2.2 请求

  • Spring MVC 会根据⽅法的参数名, 找到对应的参数, 赋值给⽅法; 所以请求参数的方法参数只要匹配, 就可以得到对应的值

  • 方法的参数都使用对象来接受, 基本类型使用包装类

  • 传递对象: Spring MVC 会自动解析并进行赋值; 被赋值的对象需要提供getter和setter方法

  • 后端对前端传来的参数名进行重命名

    • @RequestParam在这里插入图片描述
  • Spring MVC 可以⾃动绑定数组参数的赋值

  • 传递集合

    • 默认情况下,请求中参数名相同的多个值,是封装到数组. 如果要封装到集合,要使⽤@RequestParam绑定参数关系
  • 传递 json

    • 接收JSON对象, 需要使⽤ @RequestBody 注解
  • 获取URL中参数 @PathVariable在这里插入图片描述
    在这里插入图片描述

  • 上传⽂件@RequestPart
    在这里插入图片描述

  • 获取Cookie/Session

    • 使用 Servlet 中的接口
    • 注解: @CookieValue
    • 在这里插入图片描述
    • 通过Spring MVC内置对象HttpSession 来获取
  • 获取Header

    • @RequestHeader

2.3 响应

@RestController 和 @Controller的联系和区别

  • @RestController = @Controller + @ResponseBody
  • @Controller : 定义⼀个控制器, Spring 框架启动时加载, 把这个对象交给Spring管理.
  • @ResponseBody : 定义返回的数据格式为⾮视图, 返回⼀个 text/html 信息
  • 所以@RestController返回的是 text/html , 而@Controller返回的是静态页面

返回 JSON 数据

  • 后端⽅法返回结果为对象

3. 相关代码链接

代码获取连接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/136626.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MySQL的一个Bug修复提高了4倍性能

MySQL修复了一个在读取过程中导致额外IO的错误。修复后的读取速度提高了4倍(当存在并发插入时)。 MySQL 8.0.35包括对错误 109595的修复 ,通过该修复,与 MySQL 8.0.34 相比,读写基准步骤上的 QPS 几乎增加了 4 倍。 …

Java算法(六):模拟评委打分案例 方法封装抽离实现 程序的节流处理

Java算法(六) 评委打分 需求: 在编程竞赛中,有 6 个评委为参赛选手打分,分数为 0 - 100 的整数分。 选手的最后得分为:去掉一个最高分和一个最低分后 的 4个评委的平均值。 注意程序的节流 package c…

当前读和快照读

增删改查的实现原理 快照读: 简单的select操作,属于快照读,不加锁。 select * from table where ?; 普通读是通过 undo log MVCC 来实现的。 当前读: 特殊的读操作,读取记录的最新版本 插入/更新/删除操作&#xff…

qt-C++笔记之Qt中的时间与定时器

qt-C笔记之Qt中的时间与定时器 code review! 文章目录 qt-C笔记之Qt中的时间与定时器一.Qt中的日期时间数据1.1.QTime:获取当前时间1.2.QDate:获取当前日期1.3.QDateTime:获取当前日期和时间1.4.QTime类详解1.5.QDate类详解1.6..QDateTime类…

17 Linux 中断

一、Linux 中断简介 1. Linux 中断 API 函数 ① 中断号 每个中断都有一个中断号,通过中断号可以区分出不同的中断。在 Linux 内核中使用一个 int 变量表示中断号。 ② request_irq 函数 在 Linux 中想要使用某个中断是需要申请的,request_irq 函数就是…

Docker 学习路线 13:部署容器

部署容器是使用Docker和容器化管理应用程序更高效、易于扩展和确保跨环境一致性性能的关键步骤。本主题将为您概述如何部署Docker容器以创建和运行应用程序。 概述 Docker容器是轻量级、可移植且自我包含的环境,可以运行应用程序及其依赖项。部署容器涉及启动、管…

sql6(Leetcode1387使用唯一标识码替换员工ID)

1112-2 代码: INNER JOIN 如果表中有至少一个匹配,则返回行 LEFT JOIN 即使右表中没有匹配,也从左表返回所有的行(LEFT为基准 RIGHT JOIN 即使左表中没有匹配,也从右表返回所有的行 # Write your MySQL query st…

【Python】数据分析案例:世界杯数据可视化

文章目录 前期数据准备导入数据 分析:世界杯中各队赢得的比赛数分析:先打或后打的比赛获胜次数分析:世界杯中的抛硬币决策分析:2022年T20世界杯的最高得分者分析:世界杯比赛最佳球员奖分析:最适合先击球或追…

苹果Ios系统app应用程序开发者如何获取IPA文件签名证书时需要注意什么?

今天呢想和大家介绍介绍苹果App开发者如何获取IPA文件签名证书的步骤和注意事项。对于苹果应用程序开发者而言,获取IPA文件签名证书是发布应用程序至App Store的重要步骤之一。签名证书能够确保应用程序的安全性和可信度,并使其能够在设备上正确运行。 …

lightdb UPDATE INDEXES自动分区转换支持全大写索引名

文章目录 背景示例 背景 普通表转分区表,Oracle中的写法习惯索引名会使用大写并用双引号包起来。这导致LightDB 在匹配索引名时提示索引名不存在。 LightDB 23.3.02增量版本对此进行了支持。 示例 准备环境 create database test_oracle with lightdb_syntax_c…

VR全景技术,为养老院宣传推广带来全新变革

现如今,人口老龄化的现象加剧,养老服务行业也如雨后春笋般不断冒头,但是市面上各式的养老院被包装的五花八门,用户实际参访后却差强人意,如何更好的给父母挑选更为舒心的养老环境呢?可以利用720度VR全景技术…

[P7885][Android13] 解决5G信号良好状态栏信号只有两格的问题

文章目录 开发平台基本信息问题描述解决方法 开发平台基本信息 芯片: 展锐P7885 版本: Android 13 kernel: kernel-5.15 问题描述 最近有一款预研设备使用的是展锐 P7885 的5G 智能模组;经过天线厂调试天线后,各项指标都达到了标准,正常待…

iOS代码混淆----自动

先大致解释一下“编译"、"反编译": 编译:就是把千千万万行字符串(也叫代码,或者源文件),变成010101010101(机器码,也叫目标代码) 编译过程:预处理-编译-汇编-链接 我的脚本运行在预处理阶段。 反编…

什么是数据库?数据库有哪些基本分类和主要特点?

数据库是以某种有组织的方式存储的数据集合。本文从数据库的基本概念出发,详细解读了数据库的主要类别和基本特点,并就大模型时代备受瞩目的数据库类型——向量数据库进行了深度剖析,供大家在了解数据库领域的基本概念时起到一点参考作用。 …

讲解机器学习中的 K-均值聚类算法及其优缺点。

K-均值聚类算法是一种无监督学习算法,常用于对数据进行聚类分析。其主要步骤如下: 首先随机选择K个中心点(质心)作为初始聚类中心。 对于每一个样本,计算其与每一个中心点的距离,将其归到距离最近的中心点…

kafka分区数和log.segment.bytes引发的kafka主题数据总字节数的疑问

突然想到一个问题, ①kafka broker的log.segment.bytes配置指定触发日志片段关闭的最大字节总数,当日志片段大小该值时,当前日志片段会被关闭,新的日志片段会被打开。 ②kafka的主题分区数是固定的,一个分区对应一个日…

计算机视觉驾驶行为识别应用简述

一、什么是计算机视觉识别? 计算机视觉识别是一种基于图像处理和机器学习的人工智能应用技术,可以用于多个场景。常见应用场景包括人脸识别、场景识别、OCR识别以及商品识别等。今天以咱们国产系统豌豆云为例,为大家梳理一下在车辆驾驶行为中…

Kafka -- 架构、分区、副本

1、Kafka的架构: 1、producer:消息的生产者 2、consumer:消息的消费者 3、broker:kafka集群的服务者,一个broker就是一个节点,主要是负责处理消息的读、写的请求和存储消息。在kafka cluster中包含很多的br…

什么是Java虚拟机(JVM),它的作用是什么?

什么是Java虚拟机(JVM) Java虚拟机(Java Virtual Machine,JVM)是Java平台的关键组成部分,它是一种在不同操作系统上运行Java程序的虚拟计算机。 JVM的作用是执行Java字节码(Java bytecode&#…

雷达波形之一——LFM线性调频波形

文章目录 前言一、线性调频信号的形式1、原理2、时域表达式3、频域表达式 二、MATLAB 仿真1、涅菲尔积分①、MATLAB 源码②、仿真结果 2、LFM①、MATLAB 源码②、仿真结果1) 典型 LFM 波形,实部2) 典型 LFM 波形,虚部3) LFM 波形的典型谱 前言 线性调频…