Spring MVC 处理请求

目录

  • 1、SpringMVC 处理请求
    • 1.1、HTTP 请求报文
    • 1.2、获取 URL 中参数 @PathVariable
    • 1.3、获取请求头数据
      • 1.3.1、传统获取 Header/Cookie
      • 1.3.2、获取 Header—@RequestHeader
      • 1.3.3、获取 Cookie—@CookieValue
      • 1.3.4、Session 的存储和获取—@SessionAttribute
    • 1.4、获取请求数据
      • 1.4.1、请求数据的类型
      • 1.4.2、方法参数不带任何注解
      • 1.4.3、方法参数带@RequestParam
      • 1.4.4、方法参数带@RequestBody
      • 1.4.5、接收文件

1、SpringMVC 处理请求

1.1、HTTP 请求报文

请求方法 请求路径 版本号
请求头
(空行)
请求正文

在这里插入图片描述

1.2、获取 URL 中参数 @PathVariable

url 路径中,某个部分是动态变化的,可以绑定在变量中。
@RequestMapping(”xxx/{路径变量名称}“)
public 数据类型 xxx(@PathVariable 数据类型 路径变量名称)

在这里插入图片描述

在这里插入图片描述

请求路径中的路径变量类型需要满足代码中定义的路径变量类型,例如上述例子的路径变量类型是 Integer,那么在请求路径中只能是整型,否则会出现 400 报错

在这里插入图片描述

1.3、获取请求头数据

1.3.1、传统获取 Header/Cookie

在这里插入图片描述
在这里插入图片描述

1.3.2、获取 Header—@RequestHeader

当客户端发送 HTTP 请求时,通常会发送请求头,可以通过 @RequestHeader 注解获取请求头中某个字段的值。
@RequestHeader(“请求头的字段名”)

在这里插入图片描述
在这里插入图片描述

1.3.3、获取 Cookie—@CookieValue

由于 Cookie 中有多个字段,使用 getCookies 方法获取的是数组,因此可以通过 @CookieValue 注解获取请求头中 Cookie 的某个字段的值。Cookie:字段名=值(可以有多个)

在这里插入图片描述

@CookieValue(“Cookie的字段名”)

在这里插入图片描述

在这里插入图片描述

1.3.4、Session 的存储和获取—@SessionAttribute

模拟登录,登录的用户叫 abc

在这里插入图片描述
在这里插入图片描述

获取 session 中的用户,@SessionAttribute(”Session 字段名“)(也可以利用 session.getAttribute(字段名)获取)

在这里插入图片描述
在这里插入图片描述

1.4、获取请求数据

获取请求数据,都是在 Controller 请求方法的方法参数来绑定

1.4.1、请求数据的类型

  • url 的 ?后面的 queryString:字段名=值&字段名=值。

在这里插入图片描述

  • urlencoded 格式,又叫form格式,或者是 x-www-form-urlencoded 格式,由键值对组成:字段名=值&字段名=值。

在这里插入图片描述

  • JSON 格式:由两种基本数据结构组成:对象和数组,对象是键值对的集合,数据是有序的值集合。支持字符串、数字、布尔值、数组、对象和空值这几种数据类型。

在这里插入图片描述

  • form-data:多个字段,每个字段都可以是任意格式,在上传文件时非常适用。

在这里插入图片描述

1.4.2、方法参数不带任何注解

在这里插入图片描述

1.4.3、方法参数带@RequestParam

@RequestParam :用于将指定的请求参数赋值给方法中的形参。有以下三个属性

  • value:请求参数名(必须配置),必须和前端传递的参数名一致
  • required:是否必需,默认为 true,即必须存在该字段
  • defaultValue:默认值,如果设置了默认值,required 无论是否配置值均为 false

在这里插入图片描述
只能使用简单类型。

1.4.4、方法参数带@RequestBody

接受 JSON 格式的数据。如果接收的是 JSON 对象,是把 JSON 每个字段,设置到对象属性,如果没有这个字段,就不设置。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.4.5、接收文件

接受文件使用 SpringMVC 的文件上传类 MultipartFile,有三种方法接收:

  1. 可以不带注解,此时文件是可选字段

在这里插入图片描述

  1. @RequestParam 注解,默认必须存在该字段

在这里插入图片描述

在这里插入图片描述

  1. @RequestPart 注解,默认必须存在该字段

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

OpenAI 最后一代非推理模型:OpenAI 发布 GPT-4.5预览版

最后一代非推理大模型 在人工智能领域,OpenAI 一直以其创新的技术和卓越的产品引领着行业的发展。近期,OpenAI 正式发布了 GPT-4.5 研究预览版。不仅如此,官方还宣称 GPT-4.5 被定位为 “最后一代非推理模型”,这一消息再次引起了…

什么是JTAG、SWD?

一、什么是JTAG? JTAG(Joint Test Action Group,联合测试行动小组)是一种国际标准测试协议,常用于芯片内部测试及对系统进行调试、编程等操作。以下从其起源、工作原理、接口标准、应用场景等方面详细介绍&#xff1a…

知识周汇|SAP脚本自动化-淋过雨的人更懂得伞的价值

目录 摘要 1 知识概览 1.1SAP GUI脚本 1.2Tracker工具 2 实践案例 2.1步骤1:SAP启动并进入系统(文本关键) 2.1.1手动操作:鼠标双击SAP,并点击所需要系统 2.1.2代码实现 2.2步骤2:通过tracker完善后…

【GPU使用】如何在物理机和Docker中指定GPU进行推理和训练

我的机器上有4张H100卡,我现在只想用某一张卡跑程序,该如何设置。 代码里面设置 import os # 记住要写在impot torch前 os.environ[CUDA_VISIBLE_DEVICES] "0, 1"命令行设置 export CUDA_VISIBLE_DEVICES0,2 # Linux 环境 python test.py …

【无标题】ABP更换MySql数据库

原因:ABP默认使用的数据库是sqlServer,本地没有安装sqlServer,安装的是mysql,需要更换数据库 ABP版本:9.0 此处以官网TodoApp项目为例 打开EntityFrameworkCore程序集,可以看到默认使用的是sqlServer&…

【网络编程】之TCP实现客户端远程控制服务器端及断线重连

【网络编程】之TCP实现客户端远程控制服务器端及断线重连 TCP网络通信实现客户端简单远程控制主机基本功能演示通信过程代码实现服务器模块执行命令模块popen系列函数 客户端模块服务器主程序 windows作为客户端与服务器通信#pragma comment介绍 客户端使用状态机断线重连代码实…

Git快速入门

文章目录 Git简介准备工作常用的Linux命令git配置 git工作原理git项目创建和克隆git基本操作命令git忽略文件配置ssh远程连接 IDEA集成Gitgit分支(多人开发)公司中用到的(很清楚) Git 简介 Git就是版本控制的工具 下面这个叫手动…

Redis 的几个热点知识

前言 Redis 是一款内存级的数据库,凭借其卓越的性能,几乎成为每位开发者的标配工具。 虽然 Redis 包含大量需要掌握的知识,但其中的热点知识并不多。今天,『知行』就和大家分享一些 Redis 中的热点知识。 Redis 数据结构 Redis…

深入解析Java虚拟机(JVM)的核心组成

深入解析Java虚拟机(JVM)的核心组成 Java虚拟机(JVM)作为Java语言跨平台的核心实现,其架构设计精妙而复杂。理解JVM的组成部分,是掌握Java内存管理、性能调优和问题排查的关键。本文将从四大核心模块剖析J…

GIT工具学习【2】:分支

1.什么是分支 新建一个分支,可以认为把当前项目copy了一份,不太严谨,没毛病,里面虽然文件内容和名字相同,其实互相没有关系。 2.什么是合并分支 就是把两个分支(项目文件夹)合并在一起 git m…

40岁开始学Java:Java中单例模式(Singleton Pattern),适用场景有哪些?

在Java中,单例模式(Singleton Pattern)用于确保一个类只有一个实例,并提供全局访问点。以下是详细的实现方式、适用场景及注意事项: 一、单例模式的实现方式 1. 饿汉式(Eager Initialization) …

Linux常见基本指令(一)

目录 前言 1、ls指令 2、用户相关指令 3、pwd指令 4、cd指令 相对路径与绝对路径 5、创建、删除文件和目录相关的指令 创建相关的指令 删除相关的指令 6、拷贝、移动和重命名 cp指令 mv指令 前言 学习Linux的过程中一定要多自己动手,Linux的指令繁多&a…

测试金蝶云的OpenAPI

如何使用Postman测试K3Cloud的OpenAPI 1. 引言 在本篇博客中,我将带你逐步了解如何使用Postman测试和使用K3Cloud的OpenAPI。内容包括下载所需的SDK文件、配置文件、API调用及测试等步骤。让我们开始吧! 2. 下载所需的SDK文件 2.1 获取SDK 首先&…

Tomcat

1.Tomcat是什么? Tomcat 是一个开源的、轻量级的 Servlet 容器,也被称为 Web 服务器,由 Apache 软件基金会的 Jakarta 项目开发,在 Java Web 开发领域应用广泛。 1)Servlet 容器:Servlet 是 Java 语言编写…

【windows driver】 开发环境简明安装教程

一、下载路径 https://learn.microsoft.com/en-us/windows-hardware/drivers/other-wdk-downloads 二、安装步骤: 1、安装Visual Studio IDE 笔者建议安装最新版本,可以向下兼容。发文截止到目前,VS2022是首选,当前笔者由于项…

长时间目标跟踪算法(3)-GlobalTrack:A Simple and Strong Baseline for Long-termTracking

GlobalTrack的原始论文和源码均已开源,下载地址。 目录 背景与概述 1.1 长期视觉跟踪的挑战 1.2 现有方法的局限性 1.3 GlobalTrack的核心思想 算法原理与架构 2.1 全局实例搜索框架 2.2 Query-Guided RPN(QG-RPN) 2.3 Query-Guided RCNN&a…

使用mermaid查看cursor程序生成的流程图

一、得到cursor生成的流程图文本 cursor写的程序正常运行后,在对话框输入框中输入诸如“请生成扫雷的代码流程图”,然后cursor就把流程图给生成了,但是看到的还是文本的样子,保留这部分内容待用 二、注册一个Mermaid绘图账号 …

MacOS本地部署Deepseek,不联网也可以使用AI,保护隐私

苹果笔记本本地部署deepseek主要用到Ollama与open-webui 1. 安装Ollama “Ollama” 是一个轻量级的 AI 模型运行时环境(runtime),旨在简化在本地部署和使用大语言模型(LLM)的过程。它由 Vicarious 公司开发&#xff…

unity学习62,尝试做第一个小游戏项目:flappy bird

目录 学习参考 1 创建1个unity 2D项目 1.1 2D项目模板选择 1.1.1 2D(built-in-Render pipeline) 1.1.2 universe 2D 1.1.3 这次选择 2D(built-in-Render pipeline) 1.2 创建项目 1.2.1 注意点 1.2.2 如果想修改项目名 2 导入美术资源包 2.1 下载一个flappy bird的…

基于Matlab的多目标粒子群优化

在复杂系统的设计、决策与优化问题中,常常需要同时兼顾多个相互冲突的目标,多目标粒子群优化(MOPSO)算法应运而生,作为群体智能优化算法家族中的重要成员,它为解决此类棘手难题提供了高效且富有创新性的解决…