Java EE 网络原理之HTTP 响应详解

news2024/11/16 18:35:38

文章目录

  • 1. 认识"状态码"(status code)
  • 2. 通过 form 表单构造 HTTP 请求
  • 3. 通过 ajax 构造 HTTP 请求

1. 认识"状态码"(status code)

表示了这次请求对应的响应,是什么样的状态
(成功,失败,其他的情况,对应的原因…)

在这里插入图片描述
这里的状态码非常多,我们需要了解里面常见的状态码


2XX 都表示 成功

  • 200 最常见
    在这里插入图片描述

3xx 表示 重定向
请求中访问的是 A 这样的地址,响应返回了一个重定向报文,告诉你应该要访问 B 地址
很多时候,页面跳转,就可以通过重定向来实现
还有的时候,摸个网站,服务器迁移了(IP/域名改变了)
就可以给旧的地址挂一个重定向响应,访问旧地址的用户就自定跳转到新的地址

重定向的响应报文中,会带有 Location 字段
描述出当前要跳到哪个新的地址

  • 301:永久重定向
  • 302:临时重定向

4xx 表示请求错误

  • 404 Not Found
    请求中访问的资源,在服务器上不存在
    在这里插入图片描述
    404 这个状态码表示的是资源不存在
    同时在 body 中也是可以返回一个指定的错误页面的
    很多网站会把这个错误页面做的很丰富
  • 403 Fobidden
    表示访问的资源没有权限
  • 418 I am a teapot(杯具)
    418 状态码是 HTTP RFC 文档中专门规定的一个状态码
    这个状态码没有实际的意义,只是“开个玩笑”,称为彩蛋
    不过在以后尽量不要搞

2. 通过 form 表单构造 HTTP 请求

如何让客户端构造一个 HTTP 请求?

  1. 直接在浏览器 地址输入 url,此时构造了一个 GET 请求
  2. html 中,一些特殊的 html 标签,可能会触发 GET 请求
    (img,a,link,script)
  3. 通过 form 表单来触发 GET/POST 请求
    form 本质也是一个 HTML 标签
<html>
    <head>
        
    </head>
    <body>
        hello world
    </body>
</html>
  • 为开始标签
  • 为结束标签
  • 中为标签的内容(还可以嵌套其他结构)
  • 放的是页面显示的内容

浏览器会与 html 来书有一定的鲁棒性
即使给出了一个错误的(不规范)的 html 代码,也是可以进行解析并显示的(浏览器会尽可能的进行显示)

直接输入 ! + table 就可以生成基本的 html 代码模版
在这里插入图片描述


form 表单如何编写

用到form 标签
在这里插入图片描述
开始标签中,可以写属性,属性是一些“键值对”
可以有多个属性,多个键值对之间使用 空格 来分割,键 和 值之间使用 = 分割
键不需要有引号,值需要有双引号


action 后面表示要访问请求的 url 路径是什么
method 属性描述了当前要构造的请求是 get 还是 post
from 只支持 get 和 pose,不支持其他的 http 方法
在这里插入图片描述


输入框中的内容就会被构造成 http 请求的 query string
(query string 还键值对,其中 key 就是 input 输入框的 name 属性,value 就是输入框用户输入的内容)

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


submit 是按钮
这里 value 里面的内容就是按钮上显示的文本
在这里插入图片描述

在这里插入图片描述


在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
这里 input 输入框中的内容已经展示了出来
但是点击之后会出现 404,要是先要有一个正确的响应,往往需要服务器这边的代码配合


在这里插入图片描述

在这里插入图片描述
将里面的 get 改成 post 之后
我们可以看最后一行:
对于 GET 来说,这几个键值对,是在 url 中
对于 POST 来说,这几个键值对,在 body 中

3. 通过 ajax 构造 HTTP 请求

由于,form 有一些缺陷,只支持 GET 和 POST,不支持其他方法,而且 form 会触发页面跳转(有的时候不想跳转)
这个时候我们就引入了 ajax
ajax,通过 js 提供的 api 来构造 http 请求,同样可以使用 js 灵活处理,想要怎么处理都行,或者想跳转不跳转也都行
这样就给前端代码,带来了很多的可操作空间
现在的网站,主体都是通过 ajax 的方式来进行交互

浏览器原生提供了 ajax 的 api,原生的 api 不好用
所以这里我们使用第三方库,jquery

(1)引入 jquery 库(第三方库,是需要额外下载引入的)
前端引入第三方库非常简单,只要在代码中写一个库的地址就可以

先搜索 jquery cdn
在这里插入图片描述
然后点开,复制链接就可以了
在这里插入图片描述
js 和 java 之间有一定差别的,但是差别不大
差别主要体现在类型系统上
基本的 变量电仪,运算符,表达式,条件…(这些的差别不大)
js 的数组和 java 差异比较大了(也是和类型系统有关)

(2)编写代码
在这里插入图片描述
$ 是一个变量名(全局变量,在 jquery 定义的)
通过这个变量来调用一些方法,使用 jquery 中的 api


js 中 { } 表示对象
{ } 里面是使用 键值对 方式来表述“属性名” 和 “属性值”
对象属性的值,也可以是一个函数
这个函数,是一个匿名函数,也就相当于 lambda 表达式
在这里插入图片描述

这里 success 这个函数,不是立即执行的
而是服务器返回 200 这样的响应的时候,才会执行到 success
服务器什么时候返回 200
可能是 10ms 之后,也可能是 1s 之后,也可能永远也不返回
什么时候返回 200 了,什么时候执行 success
success 执行时机不是程序员自己能控制的
而是在合适的时候自动被调用的

像这样的函数 就是“回调函数”

  1. C 进阶,指针进阶 => 函数指针 =>重要用途就是作为回调函数
  2. Java 数据结构 Comparable 和 Comparator compareTo compare 比较方法
  3. 线程,run 方法,也是回调函数

这个写法就是定义变量
不需要写类型,不管什么类型,都是 let
变量具体类型是根据 = 后面的值的类型来确定的
此处 ‘1’ 是一个字符串,value 1 变量类型也就是字符串了
在这里插入图片描述


使用 JSON.stringify(body) 就可以把 js 对象转成 json 格式的字符串了
在这里插入图片描述
这个代码格式如此,但是当前直接给搜狗发这个,还不太行
搜狗这里的这个路径不一定能支持 ajax 的 post
在这里插入图片描述
在后面自己写服务器,就可以完成前后端的配合了


这里我们也可以使用 postman 来创建图形化界面
在这里插入图片描述
在这里插入图片描述
也可以使用 postman 直接生成 ajax 代码
在这里插入图片描述

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

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

相关文章

Vue学习之第一、二章——Vue核心与组件化编程

第一章. Vue核心 1.1 Vue简介 1.1.1 官网 英文官网: https://vuejs.org/中文官网: https://cn.vuejs.org/ 1.1.2 Vue特点 遵循 MVVM 模式编码简洁, 体积小, 运行效率高, 适合移动/PC 端开发它本身只关注 UI, 也可以引入其它第三方库开发项目 1.2 初始Vue 这里可以参考&a…

Kali Linux如何启动SSH并在Windows系统远程连接

文章目录 1. 启动kali ssh 服务2. kali 安装cpolar 内网穿透3. 配置kali ssh公网地址4. 远程连接5. 固定连接SSH公网地址6. SSH固定地址连接测试 简单几步通过[cpolar 内网穿透](cpolar官网-安全的内网穿透工具 | 无需公网ip | 远程访问 | 搭建网站)软件实现ssh 远程连接kali! …

Java 基础学习第一弹

1. equels和的区别 equals方法用于比较对象的内容是否相等&#xff0c;可以根据自定义的逻辑来定义相等的条件&#xff0c;而操作符用于比较对象的引用是否相等&#xff0c;即它们是否指向同一块内存地址。equals方法是一个 实例方法&#xff0c;可以被所有的Java对象调用&…

文章解读与完整程序——《考虑“源-荷-储”协同互动的主动配电网优化调度研究》

摘要&#xff1a;伴随智能电网的建设和清洁能源的开发利用,配电网中的负荷类型呈现多元化发展,分布式电源、可控负荷、储能等资源的增加让单向潮流的传统配电网逐渐向双向潮流的主动配电网结构转变。在能源结构转变的同时,清洁能源自身的随机性和波动性给配电网带来了更大的调峰…

再获认可!棱镜七彩荣获ISC2023数字安全创新能力百强

12月27日&#xff0c;由北京经济和信息化局、通州区政府指导&#xff0c;中关村科技园区通州园管理委员会、ISC 平台主办&#xff0c;北京通州发展集团有限公司、赛迪顾问协办的数字安全技术创新论坛暨ISC 2023数字安全创新能力百强颁奖典礼在北京阳光国际会议中心成功举办&…

YOLOv8可视化:引入多种可视化CAM方法,为科研保驾护航

💡💡💡本文内容:调用pytorch下的CAM可视化库,支持十多种可视化方法,打开“黑盒”,让YOLOv8变得相对可解释性 收录 YOLOv8原创自研 https://blog.csdn.net/m0_63774211/category_12511737.html?spm=1001.2014.3001.5482 💡💡💡全网独家首发创新(原创),适…

实习知识整理10: 渲染默认地址以及实现渲染并选择其他地址

1. 渲染默认地址思路分析 &#xff08;1&#xff09;如果我们需要获取到默认地址可以通过userId从地址表中查找&#xff0c;因为从商品详情页点击购买按钮时&#xff0c;只传递商品的相关信息&#xff0c;所以我们就需要从session中获取用户的信息userId &#xff08;2&#…

INS量测更新

基础知识 1、ZK H X V 2、V ZK -HX 3、K Pk/k-1HT/(HPk/k-1HT R) 主要更新以下两个方程 4、Xk/k Xk/k-1 KV &#xff08;&#xff09; 5、Pk/k Pk/k-1 - KHPk/k-1 (I -KH)Pk/k-1; 剖析4和5两个方程&#xff0c;Xk/k-1,Pk/k-1时间更新已经更新完了&#x…

【软件工程大题】PAD图

常见题型:流程图转换为PAD图,伪代码转换为PAD图 PAD图基本要素 图解: (1) 选择分支,在P1和P2的左边标记 T or F (2) 如果只有if 没有else 省略即可(如不画P2),其余不变 (3) while C 的意思是 C为假的时候,跳出循环 until C 的意思是 C为真的时候,跳出循环 真题实战 题目…

高压放大器的使用方法是什么

高压放大器是一种重要的电子设备&#xff0c;其主要功能是放大输入信号的电压&#xff0c;并输出更高电压的信号。它在各种工业、实验室和研究领域都有着广泛的应用。下面安泰电子官网将详细介绍高压放大器的使用方法以及相关注意事项。 高压放大器是一种专门用于将低电压信号转…

C语言操作符逻辑与,逻辑或面试真题(2)

各位少年&#xff1a; 今天给大家分享几个代码示例&#xff0c;希望能帮助能从学习的方面&#xff0c;帮助大家。 #include<stdio.h> int main() { int i0,a0,b2,c3,d4; ia&&b&&d; printf("a%d\n b%d\n c%d\nd%d",a,b,c,d); return 0; } 大…

经验分享:构建知识库管理系统只需要这几步

导语&#xff1a; 在当今信息爆炸的时代&#xff0c;构建一个高效的知识库管理系统对于企业来说至关重要。一个好的知识库管理系统可以帮助企业集中管理和共享知识和信息&#xff0c;提高团队的协作效率和创新能力。本文将分享构建知识库管理系统的几个关键步骤&#xff0c;帮…

Spring之提前编译:AOT

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

git将分支代码传到Master上

先把更改的代码commit、push到github自己的分支上&#xff0c;在github上Heart&#xff08;自己&#xff09;分支上能看到提交后再进行下面操作。git checkout Master &#xff0c;切换到Master主干道git pull ,把Master上最新代码pull下来git merge Heart&#xff0c;合并到自…

【小黑嵌入式系统第十三课】PSoC 5LP第二个实验——中断控制实验

上一课&#xff1a; 【小黑嵌入式系统第十二课】μC/OS-III程序设计基础&#xff08;二&#xff09;——系统函数使用场合、时间管理、临界区管理、使用规则、互斥信号量 文章目录 1 实验目的2 实验要求3 实验设备4 实验原理4.1 中断(1) 中断机制概述(2) 中断源(3) 中断系统的功…

[Ray Tracing: The Next Week] 笔记

前言 本篇博客参照自《Ray Tracing: The Next Week》教程&#xff0c;地址为&#xff1a;https://raytracing.github.io/books/RayTracingTheNextWeek.html 该教程在ray tracing in one weekend的基础上&#xff0c;增加了运动模糊、BVH树、Texture映射、柏林噪声、光照、体积…

前端文件在虚拟机,后端在本机,两个如何通信

前端文件在虚拟机&#xff0c;后端在本机&#xff0c;两个如何通信 如果前端的文件放在虚拟机里面&#xff0c;但是调用接口的后端在本地调试&#xff0c;如何做到在虚拟机中也能访问到本地的接口内容。 其实这个问题很简单&#xff0c;只要讲本地的IP和虚拟机中的IP结合就可…

在wps里导入Mathtype、改变字体

1 在wps里导入Mathtype 开发工具--加载项 2. 在“模板和加载项”窗口中再点击“添加” 3.找到mathtype安装路径下面的“OfficeSupprot”&#xff0c;这时会看到有“32”和“64”两个文件夹&#xff0c;分别对应WPS软件的系统&#xff08;任务管理器可以直接查看wps版本&#x…

k8s搭建(二、k8s组件安装)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

MySQL日期查询 今天、明天、本月、下月、星期、本周第一天、本周最后一天、本周七天日期

文章目录 今天日期明天日期本月第一天本月最后一天下个月第一天当前月已过几天当前月天数当前月所有日期获取星期本周第一天本周最后一天获取本周的七天日期 今天日期 select curdate()明天日期 select DATE_SUB(curdate(),INTERVAL -1 DAY) AS tomorrow本月第一天 select d…