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

复习HTML(进阶)

前言

上一篇的最后我介绍了在表单中,上传文件需要使用到 method属性 和enctype属性。本篇博客主要是详细的介绍这些知识

   <form  action="http://localhost:8080/test" method="post"  enctype="multipart/form-data">

method属性

method请求方式有

1 get(默认的请求方式):数据跟在资源路径下(也就是我们在后端使用@RequestMapping, @GetMapping 映射下的初始路径)

如图所示:test? +请求数据(查询参数)

  @RequestMapping("/test")public String ff(User user ,MultipartFile file) {System.out.println("user="+user);System.out.println("file="+file.getSize());return "收到数据";}

2 post : 发送的数据在请求体(requestbody)

补充:我们常使用@RequestBody注解 在请求体中招发送的数据

注意:enctype属性 常常和post 搭配使用

举个例:我们上传文件时需要使用enctype属性,是向服务器发送数据

3 get 请求和post请求的区别

1 发送数据位置不同

原因:

上面介绍的。get:数据是跟在路径下的。也就是我们后面要了解的请求行中;post:数据是在请求体中

2 应用场景不同

原因:

1 get:主要是从服务器中,获得数据。;post:主要是向服务器中提交数据。

3 后端接收方式不同

原因:

1 发送get请求时,需要使用@GetMapping注解映射

2 发送post请求时,需要使用@PostMapping注解 映射

4 安全性不同

原因:

1 发送get请求时,请求数据是直接呈现地址栏上,容易被捕捉,安全性方面较弱。

如下图所示:我标红的就是csdn网址中请求数据(该数据使用键值对的方式:k=v)

2  发送post请求时,请求的数据是在request body请求体中,不会在地址栏上显示,安全性比较高然而,需要注意的是,即使使用POST请求,如果不使用HTTPS加密,报文正文仍然是明文传输,可能仍然面临被截获和读取的风险。

enctype属性

作用

在post请求时,指定请求体的数据格式

常见的数据格式如下图所示:

 数据格式

含义:发送请求时,数据需要遵循的规则如编码要求等

重点:当我们上传文件时指定数据格式为: multipart/form-data

重点:表单只支持以application/x-www-form-urlencoded 和 multipart/form-data格式发送数据

1 application/x-www-form-urlencoded

注意:

1 get 和post都是默认使用application/x-www-form-urlencoded数据格式

2 编码使用 url编码 

url编码:utf-8 +16进制

什么意思呢

如果遇到特殊字符如汉字 

步骤

1 先转换成utf-8编码

2 最后使用16进制替换

2 multipart/form-data

注意:

1 使用boundary =123作为分隔符,把多个内容分隔开

2 多个编码形式根据有多少个内容决定

3 application/json

含义

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有简洁、清晰、易于阅读和编写的特点,同时易于机器解析和生成。JSON的应用场景非常广泛,

注意:

1 当我们使用json 数据格式时,向服务器发送请求,并传递数据,必须先通过@RequestBody 从请求体中找到对应的数据,并转化成可以被JavaBean识别的形式。

2 当我们需要返回数据时,需要通过@ResponseBody注解方式重新转成json数据格式被前端接受或作用于其他。

特点:使用utf-8 编码,数据采用键值对的方式

典型的应用场景:

  1. Web应用

    • 在前后端分离架构中,服务器端通过HTTP响应将数据以JSON格式发送给客户端(如浏览器)。
    • 客户端的JavaScript代码可以解析JSON并动态更新网页内容,例如从服务器获取用户信息、商品列表、新闻文章等。
  2. AJAX异步请求

    • 浏览器使用AJAX技术发起异步请求,服务器返回JSON数据。
    • 无需刷新整个页面即可实现局部内容的动态加载和更新。
  3. RESTful API

    • JSON是现代API设计的标准数据格式之一,用于规定请求参数和响应数据结构。
    • API使用者通过发送JSON请求到服务器,并接收JSON格式的响应结果。
  4. 数据库

    • 某些NoSQL数据库(如MongoDB)直接支持JSON作为存储格式。
    • 在关系型数据库中,也常将JSON字符串化后存入特定字段,便于存储半结构化或松散结构的数据。
    • JSON字段在数据库中适用于数据结构动态变化、存储复杂数据类型、存储非关系型数据、减少数据库查询次数、存储元数据以及实现灵活的查询方式等场景。
  5. 本地存储

    • 浏览器提供的localStorage或IndexedDB等API允许以JSON格式存储用户数据、应用设置等。
    • 便于离线访问或持久化状态。
  6. 应用程序配置

    • 在软件开发中,JSON常用于编写配置文件。
    • 其清晰的结构和易读性便于开发者管理应用程序的各项设置和参数。
  7. 跨服务通信

    • 在微服务架构中,JSON常用作RPC调用的数据交换格式。
    • 使得不同服务间能以统一、标准的方式传递复杂数据结构。
  8. 原生/混合移动应用

    • 通过HTTP请求从服务器获取JSON数据,用于填充移动端界面。
    • 如新闻阅读、社交媒体、电商应用等。

json对象格式:{“ 属性名”:属性值}

补充:属性值可以是:字符串/数字/true/false/null

HTTP请求

HTTP请求组成

1 请求行 2 请求头 3 请求体

以下是get请求示例 和post请求示例

从中,我们可以发现 :

1 get请求数据位于请求行中;post 请求数据位于请求体

2 Content-Type ,Content-Length 表示请求体的数据格式 和请求体的长度

3 在HTTP请求中 请求行和请求头是必须要有的,至于请求体都可以(可有,可不有)

session 原理

含义:session作为一个短暂的存储器

理解:

每当客户端(也就是运行前端代码时)发送请求,使用session对象 记录我们向服务器传递的数据。

同时 当session对象存储我们发送的数据后,也会返回一个特殊的标识(相当于门牌号)JSESSIONID,当我们需要二次使用时,我们可以根据标识来找到我们之前发送的数据。

相关文章:

复习HTML(进阶)

前言 上一篇的最后我介绍了在表单中&#xff0c;上传文件需要使用到 method属性 和enctype属性。本篇博客主要是详细的介绍这些知识 <form action"http://localhost:8080/test" method"post" enctype"multipart/form-data"> method属性…...

Qt 每日面试题 -7

61、如何安全的在另外一个线程中调用QObject对象的接口 QObject被设计成在一个单线程中创建与使用&#xff0c;因此&#xff0c;在一个线程中创建一个对象&#xff0c;而在另外的线程中调用它的函数&#xff0c;这样的行为不能保证工作良好。使用信号槽的队列连接或者QT的反射…...

《计算机原理与系统结构》学习系列——计算机的算数运算(下)

系列文章目录 目录 浮点数的表示和运算浮点数的表示浮点数的规格化浮点数标准IEEE754浮点数表示范围浮点数的转换浮点数的运算浮点数加法浮点数加法的硬件实现 精度浮点乘法浮点运算硬件 MIPS中的浮点指令 浮点数的表示和运算 浮点数的表示 表达非整型的数 可以表达很小和很大…...

二叉树进阶学习——从前序和中序遍历序列构造二叉树

1.题目解析 题目来源&#xff1a;105.从前序与中序遍历序列构造二叉树——力扣 测试用例 2.算法原理 首先要了解一个概念 前序遍历&#xff1a;按照 根节点->左子树->右子树的顺序遍历二叉树 中序遍历&#xff1a;按照 左子树->根节点->右子树的顺序遍历二叉树 题目…...

【数据分享】2000—2023年我国省市县三级逐年植被覆盖度(FVC)数据(Shp/Excel格式)

之前我们分享过2000—2023年逐月植被覆盖度&#xff08;FVC&#xff09;栅格数据&#xff08;可查看之前的文章获悉详情&#xff09;和Excel和Shp格式的省市县三级逐月FVC数据&#xff08;可查看之前的文章获悉详情&#xff09;&#xff0c;原始的逐月栅格数据来源于高吉喜学者…...

【Python】Streamlit:为数据科学与机器学习打造的简易应用框架

Streamlit 是一个开源的 Python 库&#xff0c;专为数据科学家和机器学习开发者设计&#xff0c;旨在快速构建数据应用。通过简单的 Python 脚本&#xff0c;开发者无需掌握前端技术&#xff0c;即可将数据分析和模型结果转化为直观、交互式的 Web 应用。其简洁的 API 设计使得…...

OpenJudge | 置换选择排序

总时间限制: 1000ms 内存限制: 65536kB 描述 给定初始整数顺串&#xff0c;以及大小固定并且初始元素已知的二叉最小堆&#xff08;为完全二叉树或类似完全二叉树&#xff0c;且父元素键值总小于等于任何一个子结点的键值&#xff09;&#xff0c;要求利用堆实现置换选择排序&a…...

如何提取b站的视频字幕,下载视频

打开视频地址 按F12打开—开发者工具 在开发者工具打开Network 过滤器关键字&#xff1a; 自动生成字幕&#xff1a;ai_subtitle 自制&#xff1a;json 打开/关闭字幕 刷新页面 找到字幕 点选字幕的respond 将方框中的内容复制&#xff1b; 复制到&#xff1a;https://www.drea…...

Vue中使用ECharts实现热力图的详细教程

在数据可视化领域&#xff0c;热力图是一种非常直观的表现形式&#xff0c;它通过颜色深浅来展示数据分布情况。在Vue项目中&#xff0c;我们可以使用ECharts这一强大的图表库来实现热力图。下面我将详细介绍如何在Vue中使用ECharts实现热力图。效果如下图&#xff1a; 一、准备…...

Arduino UNO R3自学笔记13 之 Arduino使用LM35如何测量温度?

注意&#xff1a;学习和写作过程中&#xff0c;部分资料搜集于互联网&#xff0c;如有侵权请联系删除。 前言&#xff1a;学习使用传感器测温。 1.LM35介绍 一般来讲当知道需求&#xff0c;就可以 通过既定要求的条件来筛选需要的器件&#xff0c;多方面的因素最终选定了器件…...

蓝桥杯【物联网】零基础到国奖之路:十六. 扩展模块之矩阵按键

蓝桥杯【物联网】零基础到国奖之路:十六. 扩展模块之矩阵按键 第一节 硬件解读第二节 CubeMX配置第三节 MDK代码 第一节 硬件解读 扩展模块和ADC模块是一摸一样的&#xff0c;插在主板上。 引脚对应关系&#xff1a; PB6-ROW1 PB7-ROW2 PB1-COLUMN1 PB0-COLUMN2 PA8-COLUMN3 …...

Apollo9.0 Planning2.0决策规划算法代码详细解析 (4): PlanningComponent::Proc()

&#x1f31f; 面向自动驾驶规划算法工程师的专属指南 &#x1f31f; 欢迎来到《Apollo9.0 Planning2.0决策规划算法代码详细解析》专栏&#xff01;本专栏专为自动驾驶规划算法工程师量身打造&#xff0c;旨在通过深入剖析Apollo9.0开源自动驾驶软件栈中的Planning2.0模块&am…...

AAA Redis的过期删除策略+缓存雪崩+缓存一致性问题

目录 一、三种删除策略比较 二、缓存雪崩缓存击穿缓存穿透 三、缓存一致性 Redis学习笔记 一、三种删除策略比较 内存占用CPU占用特征定时删除节约内存&#xff0c;无占用不分时段占用CPU资源&#xff0c;频度高时间换空间惰性删除内存占用严重延时执行&#xff0c;CPU利用…...

成都跃享未来教育咨询有限公司抖音小店:引领教育咨询新风尚

在数字化浪潮席卷全球的今天&#xff0c;教育咨询行业正经历着前所未有的变革。成都跃享未来教育咨询有限公司&#xff0c;作为教育行业的一颗璀璨新星&#xff0c;凭借其前瞻性的教育理念与创新的运营模式&#xff0c;在抖音平台上开设了小店&#xff0c;不仅为广大学子及家长…...

【堆排】为何使用向下调整法建堆比向上调整法建堆更好呢?

文章目录 前言一、堆排代码一、计算使用向上调整法建堆的时间复杂度二、计算使用向下调整法插入的时间复杂度总结 前言 在博主的上一篇博客堆排(链接在这里点击即可)的总结中提出啦使用向下调整法建堆比使用向上调整法建堆更好&#xff0c;是因为使用向上调整法建堆的时间复杂…...

在Stable Diffusion WebUI中安装SadTalker插件时几种错误提示的处理方法

SD中的插件一般安装比较简单&#xff0c;但也有一些插件安装会比较难。比如我在安装SadTalker时&#xff0c;就遇到很多问题&#xff0c;一度放弃了&#xff0c;后来查了一些网上攻略&#xff0c;自己也反复查看日志&#xff0c;终于解决&#xff0c;不吐不快。 一、在Stable …...

使用ffmpeg合并视频和音频

使用ffmpeg合并视频和音频 - 哔哩哔哩 简介 FFmpeg是一套可以用来记录、转换数字音频、视频&#xff0c;并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec&#xff0…...

周末总结(2024/10/05)

工作 人际关系核心实践&#xff1a; 要学会随时回应别人的善意&#xff0c;执行时间控制在5分钟以内 坚持每天早会打招呼 遇到接不住的话题时拉低自己&#xff0c;抬高别人(无阴阳气息) 朋友圈点赞控制在5min以内&#xff0c;职场社交不要放在5min以外 职场的人际关系在面对利…...

在Ubuntu中自动挂载SMB/CIFS共享

文章目录 0. 引言1. 使用credentials文件存储认证信息2. 挂载点的准备3. 必要软件的安装4. 调整挂载参数5. 测试挂载6. 日志调试 0. 引言 本文是自己挂载共享磁盘的实践记录&#xff0c;将详细介绍如何在Linux系统中配置自动挂载SMB/CIFS共享&#xff0c;并提供一些常见问题的…...

pWnOS2.0 靶机渗透( cms 渗透,php+mysql 网站渗透,密码碰撞)

pWnOS2.0 靶机渗透( ) 靶机介绍 vulnhub 靶机 本地搭建 由于靶机特性&#xff0c;靶机网卡位nat模式扫不到&#xff0c;原来需要改 nat 的地址 参考方法 https://blog.csdn.net/Bossfrank/article/details/131415257 作者主页 https://blog.csdn.net/Bossfrank?typeblog P…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

聊聊 Pulsar:Producer 源码解析

一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台&#xff0c;以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中&#xff0c;Producer&#xff08;生产者&#xff09; 是连接客户端应用与消息队列的第一步。生产者…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

Element Plus 表单(el-form)中关于正整数输入的校验规则

目录 1 单个正整数输入1.1 模板1.2 校验规则 2 两个正整数输入&#xff08;联动&#xff09;2.1 模板2.2 校验规则2.3 CSS 1 单个正整数输入 1.1 模板 <el-formref"formRef":model"formData":rules"formRules"label-width"150px"…...

MySQL 知识小结(一)

一、my.cnf配置详解 我们知道安装MySQL有两种方式来安装咱们的MySQL数据库&#xff0c;分别是二进制安装编译数据库或者使用三方yum来进行安装,第三方yum的安装相对于二进制压缩包的安装更快捷&#xff0c;但是文件存放起来数据比较冗余&#xff0c;用二进制能够更好管理咱们M…...

Go 并发编程基础:通道(Channel)的使用

在 Go 中&#xff0c;Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式&#xff0c;用于在多个 Goroutine 之间传递数据&#xff0c;从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...