[Spring]Spring MVC 请求和响应及用到的注解

文章目录

  • 一. Maven
  • 二. SpringBoot
  • 三. Spring MVC
  • 四. MVC注解
    • 1. @RequestMapping
    • 2. @RequestParam
    • 3. @PathVariable
    • 4. @RequestPart
    • 5. @CookieValue
    • 6. @SessionAttribute
    • 7. @RequestHeader
    • 8. @RestController
    • 9. @ResponseBody
  • 五. 请求
  • 六. 响应

一. Maven

Maven是⼀个项⽬管理⼯具。基于POM(Project Object Model,项⽬对象模型)的概念,Maven可以通
过⼀⼩段描述信息来管理项⽬的构建,报告和⽂档的项⽬管理⼯具软件。
⼤⽩话: Maven是⼀个项⽬管理⼯具, 通过pom.xml⽂件的配置获取jar包,⽽不⽤⼿动去添加jar包

二. SpringBoot

Spring Boot 是为了快速开发 Spring ⽽诞⽣的, Spring Boot 具备:
• Spring Boot 提供了启动添加依赖的功能, 可以快速集成框架.
• 内置web服务器,⽆需配置 Tomcat 等 Web服务器,直接运⾏和部署程序.
• 可以完全抛弃繁琐的 XML,使⽤注解和配置的⽅式进⾏开发.
• ⽀持更多的监控的指标,可以更好的了解项⽬的运⾏情况等特点

三. Spring MVC

Spring Web MVC 是基于 Servlet API 构建的原始 Web 框架,从⼀开始就包含在 Spring 框架中。它的
正式名称“Spring Web MVC”来⾃其源模块的名称(Spring-webmvc),但它通常被称为"Spring
MVC".

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

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

Spring MVC 是⼀个实现了 MVC 模式的 Web 框架
Spring Boot 只是实现Spring MVC的其中⼀种⽅式⽽已

四. MVC注解

1. @RequestMapping

用于路由映射
是类注解也是方法注解
在这里插入图片描述
前端可以通过…/request/param1 来访问, 传递参数或者接收返回的参数
可以指定前端传递数据的方法:
在这里插入图片描述

2. @RequestParam

用于前端和后端的映射
前端传参的数据名和后端接收的数据名不匹配
并且可以指定是否是必传项, 不传会报错
在这里插入图片描述
将前端的userName映射到后端的name上

3. @PathVariable

@PathVariable 翻译:路径变量 获取URL中的路径articleId作为参数传递
在这里插入图片描述

4. @RequestPart

用于映射文件
在这里插入图片描述

5. @CookieValue

获取cookie中的某个值
在这里插入图片描述

6. @SessionAttribute

获取session中的某个值
在这里插入图片描述

7. @RequestHeader

获取header中的某个值
在这里插入图片描述

8. @RestController

响应的类型是数据
是类注解, 也是方法注解, 修饰类时, 表示类中所有方法都返回的是数据
@RestController = @Controller + @ResponseBody
(@Controller后续介绍)

9. @ResponseBody

方法注解, 表示此方法, 返回的是数据

五. 请求

  1. 传递数据
    前端传递数据时, 最好使用包装类来接收
    如果前端没有传递数据, 会默认为null, 而不会报错
    在这里插入图片描述
    如果传入的数据的名字和参数名字不匹配, 使用@RequestParam

  2. 传递对象
    在这里插入图片描述
    直接通过url或者body的方式传递和对象中对应属性的名字的内容即可

  3. 传递数组
    在这里插入图片描述
    传递的名字用数组名即可, 传多条相同名字的数据

  4. 传递集合
    在这里插入图片描述
    传多条相同名字的数据, 默认为数组, 接收不到集合, 需要用@RequestParam

  5. 接收url路径作为参数
    在这里插入图片描述
    需要搭配@PathVariable 翻译:路径变量 获取URL中的路径articleId作为参数传递
    在这里插入图片描述

  6. 传递文件
    在这里插入图片描述
    MultipartFile是Spring框架提供的一个接口,用于处理HTTP请求中的文件上传
    MultipartFile提供transferTo方法, 将MultipartFile转成File
    需要搭配@RequestPart方法 用于映射文件

  7. 获取Cookie
    方法一: 使用HttpServletRequest
    HttpServletRequest 这个类可以获取到请求中的所有东西
    在这里插入图片描述
    方法二:使用@CookieValue
    在这里插入图片描述

  8. 创建session
    方法一:使用HttpSerletRequest
    在这里插入图片描述
    方法二: 使用HttpSession
    在这里插入图片描述

  9. 获取session
    方法一: 使用HttpSerletRequest
    在这里插入图片描述
    方法二: 使用HttpSession
    在这里插入图片描述
    方法三: 使用@SessionAttribute
    在这里插入图片描述

  10. 获取header
    方法一: 使用HttpServletRequest
    在这里插入图片描述
    方法二: 使用@RequestHeader
    在这里插入图片描述

六. 响应

类使用@Controller修饰, 默认返回的是视图
如果使用@RestController修饰, 那么返回数据
@RestController = @Controller + @ResponseBody

  1. 响应html视图
    在这里插入图片描述
  2. 响应数据
    类使用@Controller修饰
    在这里插入图片描述
  3. 响应html数据
    在这里插入图片描述
  4. 响应JSON数据
    返回对象即可, Spring会转成json
    在这里插入图片描述
  5. 设置响应状态码
    使用HttpServletResponse
    在这里插入图片描述

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

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

相关文章

JavaScript发送邮件:实现前端触发的教程?

JavaScript发送邮件的方式?怎么使用JavaScript发信? 无论是用户反馈、联系表单还是自动通知,前端触发的邮件发送功能都能极大地提升用户体验。AokSend将详细介绍如何通过JavaScript发送邮件,实现前端触发的邮件发送功能。 JavaS…

力扣 438找到字符串中所有字母异位词

https://leetcode.cn/problems/find-all-anagrams-in-a-string/ 题目描述 题目分析 异位词所表示的空间 P \text{P} P 即一字符串的所有排列,记 s i \bold{s_i} si​为以 s [ i ] s[i] s[i]开头的长度为 plen \text{plen} plen的 s s s子串 故本题可理解为求解 A n s Ans Ans…

LabVIEW提高开发效率技巧----采用并行任务提高性能

在复杂的LabVIEW开发项目中,合理利用并行任务可以显著提高系统的整体性能和响应速度。并行编程是一种强大的技术手段,尤其适用于实时控制、数据采集以及多任务处理等场景。LabVIEW的数据流编程模型天然支持并行任务的执行,结合多核处理器的硬…

Toon Dinosaurs 2 可爱卡通恐龙怪物模型带动画

剑龙、甲龙、厚头龙、副龙、二龙和腕龙使用(根运动)动画文件绘制人物。 动画: 空闲+随机空闲动画跳跃(跳跃、跌倒、落地)。 3攻击 2个被击中,1个死亡和1个起床动画。 咆哮 左转和右转。跑,跑,转身。 最近添加:向前走,转身走。 查看视频以观看动画! 近似三角形计数:…

读构建可扩展分布式系统:方法与实践10最终一致性

1. 最终一致性 1.1. 在一些应用领域,通常谈论的是银行和金融行业,最终一致性根本不合适 1.2. 事实上,最终一致性在银行业已经使用了很多年 1.2.1. 支票需要几天时间才能在你的账户上进行核对,而且你可以轻松地开出比账户余额多的…

网络基础,协议,OSI分层,TCP/IP模型

网络的产生是数据交流的必然趋势,计算机之间的独立的个体,想要进行数据交互,一开始是使用磁盘进行数据拷贝,可是这样的数据拷贝效率很低,于是网络交互便出现了; 1.网络是什么 网络,顾名思义是…

oracle数据库启动

文章目录 背景一、步骤1.登录oracle用户2.启动监听服务3.启动数据库 背景 oracle数据库启动 一、步骤 1.登录oracle用户 代码如下(示例): su - oracle2.启动监听服务 代码如下(示例): lsnrctl start成…

生信初学者教程(四):软件

文章目录 RRstudioLinux系统其他软件本书是使用R语言编写的教程,用户需要下载R和RStudio软件用于进行分析。 版权归生信学习者所有,禁止商业和盗版使用,侵权必究 R R语言是一种免费的统计计算和图形化编程语言,是一种用于数据分析和统计建模的强大工具。它具有丰富的统计…

C++11——lambda

lambda lambda的介绍lambda的使用lambda的细节->捕捉列表 lambda的介绍 lambda是匿名函数,再适合的场景去使用可以提高代码的可读性。 场景: 假设有一个Goods类需要进行按照价格、数量排序 class Goods {string name;size_t _price;//价格int num;/…

【IoTDB 线上小课 07】多类写入接口,快速易懂的“说明书”!

【IoTDB 视频小课】稳定更新中!第七期来啦~ 关于 IoTDB,关于物联网,关于时序数据库,关于开源... 一个问题重点,3-5 分钟,我们讲给你听: 一条视频了解写入接口 了解我们的友友们,应该…

我的AI工具箱Tauri版-VideoClipMixingCut视频批量混剪

本教程基于自研的AI工具箱Tauri版进行VideoClipMixingCut视频批量混剪。 VideoClipMixingCut视频批量混剪 是自研AI工具箱Tauri版中的一款强大工具,专为自动化视频批量混剪设计。该模块通过将预设的解说文稿与视频素材进行自动拼接生成混剪视频,适合需要…

关于http的206状态码和416状态码的意义、断点续传以及CORS使用Access-Control-Allow-Origin来允许跨域请求

一、关于http的206状态码和416状态码的意义及断点续传 HTTP 2xx范围内的状态码表明客户端发送的请求已经被服务器接受并且被成功处理了,HTTP/1.1 206状态码表示客户端通过发送范围请求头Range抓取到了资源的部分数据,一般用来解决大文件下载问题,一般CDN…

小小扑克牌算法

1.定义一个扑克牌类Card: package democard; public class Card {public String suit;//表示花色public int rank;//表示牌点数Overridepublic String toString() {return "{"suit rank"}";}//实例方法,初始化牌的点数和花色public…

Xinstall助力App推广,下载自动绑定提升转化率

在App推广和运营的过程中,我们经常会遇到一些痛点。比如,用户下载App后需要手动进行一系列繁琐的操作才能完成注册和绑定,这不仅影响了用户体验,还降低了转化率。那么,有没有一种方法能够简化这个过程,提升…

Vue使用axios实现Ajax请求

1、什么是 axios 在实际开发过程中,浏览器通常需要和服务器端进行数据交互。而 Vue.js 并未提供与服务器端通信的接口。从 Vue.js 2.0 版本之后,官方推荐使用 axios 来实现 Ajax 请求。axios 是一个基于 promise 的 HTTP 客户端。 关于 promise 的介绍…

开源 AI 智能名片小程序:开启内容营销新境界

摘要:本文深入探讨了在当今数字化时代,内容营销的重要性以及如何实现让用户主动找你的最佳效果。通过引入开源 AI 智能名片小程序这一创新工具,阐述了其在明确目标用户群体、迎合用户需求痛点和打造风格特色方面的独特优势,为企业…

达梦数据库踩坑

提示:第一次接触达梦,是真的不好用,各种报错不提示详细信息,吐槽归吐槽,还是需要学习使用的。 前言 题主刚接触达梦数据库时,本来是想下载官网的连接工具进行数据库连接的,但是谁曾想&#xff…

sql中的union与union all区别

sql中的union与union all区别 1、 区别2、效率3、使用建议 💖The Begin💖点点关注,收藏不迷路💖 1、 区别 union: 功能:合并多个查询结果集,并自动去除重复行。特点:结果集中不包含重…

linux如何对c++进行内存分析

linux如何对c进行内存分析 背景分析方法以及原理原理分析结果以及重点关注 背景 在工作中,我遇到一个问题,需要将c写的进程部署到MCU上。由于MCU上可用的RAM 非常有限,所以在部署时就需要考虑到使用内存大小。所以为了搞清楚,内存…

计算机网络29——Linux基本命令vim,gcc编译命令

1、创建新用户 2、给用户设置密码 3、切换到新用户 切换到root用户 4、删除用户 5、查看ip 6、ping 查看物理上两台主机是否联通 7、netstatus 8、nslookup 查看网址的地址 9、负载均衡与容灾备份 负载均衡:指将负载(工作任务)进行平衡、分…