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

[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
    在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Call OpenAI API with Python requests is missing a model parameter
  • Stable Diffusion 使用详解(11)--- 场景ICON制作
  • (十六)、把镜像推送到私有化 Docker 仓库
  • 2024华为杯研赛E题保姆级教程思路分析
  • 打造民国风格炫酷个人网页:用HTML和CSS3传递民国风韵
  • 如何在Windows上安装Docker
  • 业务资源管理模式语言17
  • 如何通过蜂巢(容器安全)管理内部部署数据安全产品与云数据安全产品?
  • 浅谈计算机视觉新手的学习路径
  • AIoT智能工控板
  • Linux常用指令
  • [SDX35]SDX35硬件使用512MB内存,实际只初始化256MB问题分析及解决方案
  • 【STM32】esp8266连接wifi
  • 进阶SpringBoot之异步任务、邮件任务和定时执行任务
  • 高级I/O知识分享【5种IO模型 || select || poll】
  • Angular Elements 及其运作原理
  • cookie和session
  • gulp 教程
  • iOS 系统授权开发
  • java8 Stream Pipelines 浅析
  • Mac转Windows的拯救指南
  • python学习笔记 - ThreadLocal
  • Python学习之路16-使用API
  • Python中eval与exec的使用及区别
  • SOFAMosn配置模型
  • vue自定义指令实现v-tap插件
  • 百度小程序遇到的问题
  • 闭包--闭包作用之保存(一)
  • 分享一份非常强势的Android面试题
  • 前端技术周刊 2019-02-11 Serverless
  • 微信公众号开发小记——5.python微信红包
  • 【云吞铺子】性能抖动剖析(二)
  • ​力扣解法汇总946-验证栈序列
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (4) PIVOT 和 UPIVOT 的使用
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (多级缓存)缓存同步
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (回溯) LeetCode 77. 组合
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (三)模仿学习-Action数据的模仿
  • (微服务实战)预付卡平台支付交易系统卡充值业务流程设计
  • (转载)跟我一起学习VIM - The Life Changing Editor
  • .NET Core日志内容详解,详解不同日志级别的区别和有关日志记录的实用工具和第三方库详解与示例
  • .Net FrameWork总结
  • .NET MAUI学习笔记——2.构建第一个程序_初级篇
  • .net 托管代码与非托管代码
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NetCore部署微服务(二)
  • .NET的微型Web框架 Nancy
  • .NET值类型变量“活”在哪?
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • [Algorithm][动态规划][路径问题][不同路径][不同路径Ⅱ][珠宝的最高价值]详细讲解
  • [android学习笔记]学习jni编程
  • [C# WPF] 如何给控件添加边框(Border)?