热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Http笔记

HTTPHTTP协议特点请求消息请求消息格式Request与Responserequest继承体系结构Request功能response继承体系结构响应消息格式HTTP协议特点


HTTP

  • HTTP协议
    • 特点
    • 请求消息
      • 请求消息格式
      • Request与Response
        • request继承体系结构
        • Request功能
        • response继承体系结构
    • 响应消息格式


HTTP协议


特点


  1. 基于TCP/IP的高级协议
  2. 默认端口号:80
  3. 基于请求/响应模型 即一次请求对应一次响应
  4. 无状态的:每次请求之间相互独立,不能交互数据

请求消息


请求消息格式


  1. 请求行

请求方式、请求url、请求协议/版本


GET /abc/demo1 HTTP/1.1

  1. 请求头

请求头名称:请求头值


Host: localhost:8888
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36 Edg/86.0.622.56
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Sec-Fetch-Site: none
Sec-Fetch-Mode: navigate
Sec-Fetch-User: ?1
Sec-Fetch-Dest: document
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
COOKIE: Idea-efd34b6e=c9ab810a-fa9a-4b0d-897d-5e7640aa74b1

常见:


  • Connection
  • Referer 告知服务器当前请求从哪里来,也就是说,发出此请求的网址。
    • 防盗链
    • 统计工作

  1. 请求空行

空行




  1. 请求体(正文)

  • 封装post请求信息的请求体的参数,get没有请求体。



Request与Response


  • 由服务器自动生成(大部分服务器都支持Servlet服务),直接使用。

  1. tomcat服务器会根据请求url中的资源路径,创建对应的处理请求的Servlet对象。
  2. tomcat服务器,会创建response和request对象,request对象封装请求消息数据。
  3. tomcat将request和response两个对象传递给service方法。
  4. 通过service方法中操作request对象并设置响应的消息数据 封装在response中,
  5. 服务器将response中的响应消息放入到响应数据包返回给浏览器。

request继承体系结构

ServletRequest – 接口
| 继承
HttpServletRequest – 接口
| 实现
org.apache.catalina.connector.RequestFacade 类


Request功能


  1. 获取请求行消息数据

String getMethod()
String getcontextPath() 获取虚拟目录
String getservletPath() 获取servlet路径
String getQuerrystring() 获取get请求方式请求参数:name = 张三
String getRequestURI() 获取请求URI
String getRequestURL() 获取请求URL
String getProtocol() 获取请求协议及其版本
String getRemoteAddr() 获取客服机IP



  1. 获取请求头数据

String getHeader(String name ) 通过请求投的名称获取请求头的值
Enumeration getHeaderNames() 获取所有的请求头名称



  1. 获取请求体数据
    只有post方法才有

步骤


  1. 获取流对象

> BufferReader getReader() 获取字符输入流
> SerevletInputStream getInputStream() 获取字节输入流

  1. 再从流对象中获取数据

  2. 其他功能


  • 获取请求参数(无论post get都可以用)

    String getParameter(String name) 根据参数获取参数值
    . String getParameterValues(String name) 根据参数获取参数值 的数组 多用于复选框
    Enumeration getParameterNames() 后去所有请求的参数名称
    Map getParameterMap() 获取所有参数的map集合

  • 请求转发

  • 共享数据

  • 获取ServletContext




response继承体系结构


响应消息格式



updating…


推荐阅读
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • php更新数据库字段的函数是,php更新数据库字段的函数是 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 在Ubuntu系统中安装Android SDK的详细步骤及解决“Failed to fetch URL https://dlssl.google.com/”错误的方法
    在Ubuntu 11.10 x64系统中安装Android SDK的详细步骤,包括配置环境变量和解决“Failed to fetch URL https://dlssl.google.com/”错误的方法。本文详细介绍了如何在该系统上顺利安装并配置Android SDK,确保开发环境的稳定性和高效性。此外,还提供了解决网络连接问题的实用技巧,帮助用户克服常见的安装障碍。 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • 本文详细探讨了Zebra路由软件中的线程机制及其实际应用。通过对Zebra线程模型的深入分析,揭示了其在高效处理网络路由任务中的关键作用。文章还介绍了线程同步与通信机制,以及如何通过优化线程管理提升系统性能。此外,结合具体应用场景,展示了Zebra线程机制在复杂网络环境下的优势和灵活性。 ... [详细]
  • 近期,微信公众平台上的HTML5游戏引起了广泛讨论,预示着HTML5游戏将迎来新的发展机遇。磊友科技的赵霏,作为一名HTML5技术的倡导者,分享了他在微信平台上开发HTML5游戏的经验和见解。 ... [详细]
  • 原文网址:https:www.cnblogs.comysoceanp7476379.html目录1、AOP什么?2、需求3、解决办法1:使用静态代理4 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • 本文深入解析了通过JDBC实现ActiveMQ消息持久化的机制。JDBC能够将消息可靠地存储在多种关系型数据库中,如MySQL、SQL Server、Oracle和DB2等。采用JDBC持久化方式时,数据库会自动生成三个关键表:`activemq_msgs`、`activemq_lock`和`activemq_ACKS`,分别用于存储消息数据、锁定信息和确认状态。这种机制不仅提高了消息的可靠性,还增强了系统的可扩展性和容错能力。 ... [详细]
  • 本文详细介绍了使用 Python 进行 MySQL 和 Redis 数据库操作的实战技巧。首先,针对 MySQL 数据库,通过 `pymysql` 模块展示了如何连接和操作数据库,包括建立连接、执行查询和更新等常见操作。接着,文章深入探讨了 Redis 的基本命令和高级功能,如键值存储、列表操作和事务处理。此外,还提供了多个实际案例,帮助读者更好地理解和应用这些技术。 ... [详细]
author-avatar
Yuki_沐1824355667
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有