HTTP请求UML时序图--(POST)图和(GET)图源码分析及代码分析和MIME 介绍--常用的状态码说明

news2024/11/18 5:30:42

目录

WEB 开发通信协议-HTTP

什么是 HTTP 协议

介绍

http 请求 hi.html 的 UML时序图

HTTP 请求包分析

1. HTTP 请求包分析(GET)图, 说明 可以通过浏览器抓包分析

代码说明

HTML部分

JAVA部分

web.xml部分

3) 完成测试,并抓包分析

HTTP 请求包分析(POST)

(POST)图

GET 请求 POST 请求分别有哪些?

● GET 请求有哪些

代码演示

● POST 请求有

● HTTP 请求中怎样选择 Get 和 Post

传输的数据大小区别

什么情况下使用 post 请求

什么情况下使用 get 方式呢

建议:

常用的状态码说明

演示 302 状态码使用

演示 304 状态码使用

MIME 类型

MIME 介绍

常见的 MIME 类型

WEB 开发通信协议-HTTP

什么是 HTTP 协议

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用广泛的一种网络协议。

是工作在 tcp/ip 协议基础上的,所有的 WWW 文件都遵守这个标准。

介绍

http1.0 短连接 http1.1 长连接

http 是 TCP/IP 协议的一个应用层协议,http 也是我们 web 开发的基础.

http 请求 hi.html 的 UML时序图

 

HTTP 请求包分析

1. HTTP 请求包分析(GET)图, 说明 可以通过浏览器抓包分析

  1. 请求行
  2. 请求头

 

 

 

2. 说明:HTTP 请求(GET)-有数据提交情况

代码说明

HTML部分

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>用户登录</title>
</head>

<body>
    <h1>用户登录</h1>
    <form action="http://localhost:8080/http/login" method="get">
        u: <input type="text" name="username" /><br />
        p: <input type="password" name="pwd" /><br />
        <input type="submit" value="用户登录"> <input type="reset" value="清空">
    </form>
</body>

</html>

JAVA部分

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class LoginServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter writer = response.getWriter();
        writer.print("<h1>登录成功~</h1>");
        writer.flush();
        writer.close();
    }
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws
            ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        PrintWriter writer = response.getWriter();
        writer.print("<h1>登录成功~</h1>");
        writer.flush();
        writer.close();
    }

}

web.xml部分

<servlet>
    <servlet-name>LoginServlet</servlet-name>
    <servlet-class>com.http.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>

3) 完成测试,并抓包分析

 

HTTP 请求包分析(POST)

● HTTP POST 请求方式案例

1. 修改 上面的html, 将GET换成POST

(POST)图

 

GET 请求 POST 请求分别有哪些?

● GET 请求有哪些

1. form 标签 method=get [指定]

2. a 标签

3. link 标签引入 css [以get方式来获取资源]

4. Script 标签引入 js 文件 [以get方式来获取资源]

5. img 标签引入图片 [以get请求来获取图片]

6. iframe 引入 html 页面 [不演示]

7. 在浏览器地址栏中输入地址后敲回车[用的比较多]

代码演示

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">

    <!--通过 get 请求获取 my.css-->
    <link rel="stylesheet" href="css/my.css">

    <!--通过 get 请求获取 my.js-->
    <script type="text/javascript" src="js/my.js"></script>
    <title>用户登录</title>
</head>

<body>
    <h1>用户登录</h1>
    
    <!-- 给我们的 LoginServlet 发出 Get 请求提交表单, method=post 表示发出 post 请求
-->
    <form action="http://localhost:8080/http/login" method="post">
        u: <input type="text" name="username" /><br />
        p: <input type="password" name="pwd" /><br />
        <input type="submit" value="用户登录"> <input type="reset" value="清空">
    </form>

    <h1>GET 请求演示</h1>
    <a href="http://www.baidu.com">goto 百度</a><br />
    <!-- 是 get 请求 -->
    <img src="imgs/1.png" width="400px" />
</body>

</html>

● POST 请求有

1. form 标签 method=pos

● HTTP 请求中怎样选择 Get 和 Post

传输的数据大小区别

        1) get 传送的数据量较小。不能大于 2KB(不同浏览器不一样)。

        2) post 传送的数据量较大。一般默认不受限制

什么情况下使用 post 请求

1) post 请求是会在浏览器上隐藏參数部分的,在安全要求的部分都会使用到 POST 请求。

如用户登录。数据增上改等等。都会把參数隐藏起来,这样就不会通过你的请求暴露你的參数格式。        比方:del?id=1,别人就能够用 del?=3 来删除你其它数据。

2)         在向 server 传递数据较大的时候id。使用 POST,

            get 是有限制的, 比如发帖, 上传文件

 

什么情况下使用 get 方式呢

1) 在前台页面展示,比如分页内容等,可以保留传递参数, 可用来非常好的分享和传播, POST 中链接地址是不变化的。

建议:

1) get 方式的安全性较 Post 方式要差些。包括机密信息的话。建议用 Post 数据提交方式;

2)   在做数据查询时。建议用 Get 方式;

      而在做数据加入、改动或删除时,建议用 Post方式

 

常用的状态码说明

状态行

1. 格式: HTTP版本号 状态码 原因叙述<CRLF>

2. 举例:HTTP/1.1 200 OK

状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数。响应状态码分为5类,如下所示:

 

 

演示 302 状态码使用

1. 举例说明 302 状态码的使用

1) 浏览器请求 T1Servelt

2) T1Servlet 返回 302 的状态码, 并且指定浏览器重定向到 hi.html

3) 浏览器发出第二次请求 hi.htm

 

演示 304 状态码使用

1. 演示 304 状态码

当我们请求资源的时,服务器会返回该资源的最近修改时间

Last-Modified: Mon, 21 Feb 2022 04:51:31 GMT

如果浏览器禁用缓存, 这个 Last-Modified: 信息就没有使用, 浏览器就每次要求返回该资源

1.如果浏览器没有禁用缓存,

        浏览器在请求时,就会 If-Modified-Since: Mon, 21 Feb 2022 04:51:31 GMT, 含义

(1)告诉服务器我有该资源

(2) 该资源的最近修改时间是 Mon, 21 Feb 2022 04:51:31GM

2.这时服务器就会比较时间, 

        如果服务器的资源更新, 就会返回该资源 , 如果发现没有修改,就返回

304 状态码(但是不会返回该资源) http 请求机制

MIME 类型

MIME 介绍

1. MIME 是 HTTP 协议中数据类型。

MIME 的英文全称是"Multipurpose Internet Mail Extensions" 多功能 Internet 邮件扩充服务。MIME 类型的格式是"大类型/小类型",并与某一种文件的扩展名相对应

2. 在响应包的Content-Type 就有指定, 如图

 

常见的 MIME 类型

 

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

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

相关文章

汽车车身钣金—车身连接方式

摘要&#xff1a; 当汽车车身构件遭受严重损伤失去维修意义时,汽车维修厂商一般采用更换部件或总成的方法进行修复。 车身连接方式 当汽车车身构件遭受严重损伤失去维修意义时,汽车维修厂商一般采用更换部件或总成的方法进行修复。 车身外部覆盖件大多由相对独立的板件相互…

场效应管(MOS)基础知识

MOSFET管是常用的半导体器件&#xff0c;又称为开关管、场效应管、英文名称&#xff08;MOSFET),简称MOS管 按元件封装工艺可分为两大类:插件类、贴片类。大部分MOSFET管的外观极其类似&#xff0c;常见的封装种类有T0-252&#xff0c;T0-251&#xff0c;T0-220&#xff0c;T0—…

清华发布工具学习框架,让ChatGPT操控地图、股票查询,贾维斯已来?

文&#xff5c;小戏 首先来考大家一道初中历史题&#xff1a;人区别于动物的根本标志是什么›&#xff1f;书上的标准答案是人会制造与使用工具。那么再来一道思考题&#xff0c;如果 AI 会使用甚至会制造工具了以后&#xff0c;会发生什么呢&#xff1f;是像贾维斯一样的 AI 私…

【Java基础】day16

day16 一、switch-case 和 if-else 谁更快&#xff1f; switch-case 在 switch-case 中&#xff0c;case 的值是连续的话&#xff0c;会生成一个 TableSwitch 来进行优化&#xff0c;这样的情况下&#xff0c;只需要在表中进行判断即可。 这里使用 0-4 的连续值来进行测试 如…

UE4: Niagara系统实现雨天效果,并跟随人物移动

目录 创建雨丝Niagara系统雨丝跟随人物移动 创建雨丝Niagara系统 1.创建一个Niagara系统 选择Fountain选项&#xff0c;点一下加号&#xff0c;再点完成&#xff1a; 命名一下打开&#xff1a; 先从粒子生成的方向入手&#xff0c;在Niagara的界面中删掉“Add Velocity in…

springboot+vue小区物业管理系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的小区物业管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风…

C11新特性之Lambda表达式

一.lambda语法 优点&#xff1a; 1.可以定义简短的函数。 2.使用lambda表达式使代码更紧凑&#xff0c;可读性更好。 语法&#xff1a; []表示不捕获任何变量[this]表示值传递方式捕捉当前的this指针 [&]表示引用传递方式捕捉所有父作用域的变量&#xff08;包括this&…

[架构之路-170]-《软考-系统分析师》-5-数据库系统-1-数据库模式、数据模型、数据库访问的标准接口

在当今的知识经济时代&#xff0c;信息是经济发展的战略资源&#xff0c;信息技术已经成为社会生产力中重要的组成部分。人们充分认识到&#xff0c;数据库是信息化社会中信息资源管理与开发利用的基础&#xff0c;当今的计算机信息系统也都以数据库技术为基础。对于一个国家来…

Linux DNS服务

DNS 作用 DNS是 域名系统 的英文缩写&#xff0c;作为将域名与IP地址相互映射的一个分布式数据库&#xff0c;让人可以通过域名访问互联网 正向解析 将域名解析为IP反向解析 根据IP查找对应域名 域名结构 http://www.sina.com.cn./ http://主机名.子域.二级域.顶级域.根域 / 每…

【Linux学习】信号——预备知识 | 信号产生 | 核心转储

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《Linux学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 信号 &#x1f514;信号&#x1f3b5;预备知识&#x1f3b5;信号处理方法的注册 &#x1f514;信…

C/C++每日一练(20230421)

目录 1. 位1的个数 &#x1f31f; 2. 递归和非递归求和 ※ 3. 俄罗斯套娃信封问题 &#x1f31f;&#x1f31f;&#x1f31f; &#x1f31f; 每日一练刷题专栏 &#x1f31f; Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. 位1的…

大数据技术之Kafka——Kafka入门

目录 一、概述 1.1 为什么要有Kafka ​编辑 1.2 定义 1.3 消息队列 1&#xff09;消息队列的应用场景 2&#xff09;消息队列的两种模式 1.4 基础架构 二、Producer生产者 2.1 生产者消息发送流程 2.1.1 发送原理 2.2 异步发送API 2.2.1 普通异步发送 2.2.2 带回调…

第八章_Redis复制(replica)

是什么 官网地址 一句话 就是主从复制&#xff0c;master以写为主&#xff0c;Slave以读为主 当master数据变化的时候&#xff0c;自动将新的数据异步同步到其它slave数据库 能做什么 读写分离容灾恢复数据备份水平扩容支撑高并发 怎么使用 配从(库)不配主(库) 权限细节&am…

YOLOv8 更换主干网络之 MobileNeXt

《重新思考瓶颈结构以实现高效移动网络设计》 倒置残差块成为了移动网络架构设计的主流。它通过引入学习倒置残差和使用线性瓶颈的两个设计规则,改变了经典的残差瓶颈。在本文中,我们重新思考了这种设计改变的必要性,并发现它可能会带来信息丢失和梯度混淆的风险。因此,我们…

助力工业物联网,工业大数据之ODS层构建:代码结构及修改【九】

文章目录 01&#xff1a;ODS层构建&#xff1a;代码结构及修改02&#xff1a;ODS层构建&#xff1a;连接代码及测试03&#xff1a;ODS层构建&#xff1a;建库代码及测试04&#xff1a;ODS层构建&#xff1a;建表代码及测试 01&#xff1a;ODS层构建&#xff1a;代码结构及修改 …

漏扫常见(可验证)漏洞复现方法

SSL/TLS协议信息泄露漏洞(CVE-2016-2183) 检测到目标服务支持SSL弱加密算法 检测到目标服务支持SSL中等强度加密算法 nmap -sV -p 端口 --script ssl-enum-ciphers 目标ipSSH支持弱加密算法 nmap -sV -p 端口 --script ssh2-enum-algos 目标ipApache Tomcat示例脚本信息泄露…

YOLOv8 更换主干网络之 ShuffleNetv2

《ShuffleNet V2: Practical Guidelines for Efficient CNN Architecture Design》 目前,神经网络架构设计多以计算复杂度的间接度量——FLOPs为指导。然而,直接的度量,如速度,也取决于其他因素,如内存访问成本和平台特性。因此,这项工作建议评估目标平台上的直接度量,而…

Vue 表单

文章目录 Vue 表单输入框复选框单选按钮select 列表修饰符.lazy.number.trim Vue 表单 这节为大家介绍 Vue.js 表单上的应用。 你可以用 v-model 指令在表单控件元素上创建双向数据绑定。 输入框 v-model 会根据控件类型自动选取正确的方法来更新元素。 输入框 实例中演示…

Maven(二)高级操作

目录 一、分模块开发与涉及&#xff08;重点&#xff09;1.工程模块划分2.modules_common拆分3.modules_pojo拆分4.modules_dao拆分5.modules_service拆分6.modules_controller拆分7.总结 二、聚合&#xff08;重点&#xff09;1.多模块构建维护2.聚合 三、继承&#xff08;重点…

HTML5 <param> 标签、HTML5 <progress> 标签

HTML5 <param> 标签 实例 HTML5 <param>标签为<object>标签提供嵌入内容的运行时参数的name与value对。请参考下述示例&#xff1a; 设置参数 "autoplay" 为 "true"&#xff0c;音频载入后会自动播放&#xff1a; <object data&qu…