热门标签 | 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…


推荐阅读
  • 文章目录简介HTTP请求过程HTTP状态码含义HTTP头部信息Cookie状态管理HTTP请求方式简介HTTP协议(超文本传输协议)是用于从WWW服务 ... [详细]
  • 博主使用代理IP来自于网上免费提供高匿IP的这个网站用到的库frombs4importBeautifulSoupimportrandomimporturllib.re ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了正则表达式python相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 点击上方[全栈开发者社区]→右上角[]→[设为星标⭐]前言年前准备换工作,总结了一波面试最频繁的面试问题跟大家交流。此文章是关于浏览器的常见问题, ... [详细]
  • 电信网为不能访问联通服务器的网站_老板说网站慢,我们总结了三大阶段提升性能...
    作者:李平来源:https:www.cnblogs.comleefreemanp3998757.html前言在前一篇随笔《大型网站系统架构的演化》中&# ... [详细]
  • 最近在学Python,看了不少资料、视频,对爬虫比较感兴趣,爬过了网页文字、图片、视频。文字就不说了直接从网页上去根据标签分离出来就好了。图片和视频则需要在获取到相应的链接之后取做下载。以下是图片和视 ... [详细]
  • Scrapy 爬取图片
    1.创建Scrapy项目scrapystartprojectCrawlMeiziTuscrapygenspiderMeiziTuSpiderhttps:movie.douban.c ... [详细]
  • 目录爬虫06scrapy框架1.scrapy概述安装2.基本使用3.全栈数据的爬取4.五大核心组件对象5.适当提升scrapy爬取数据的效率6.请求传参爬虫06scrapy框架1. ... [详细]
  • 发现一个好看的手机壁纸网站,撸代码的手已经饥渴难耐了
    本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。最近有同学的爬虫代码出了bug,给问我怎么改于 ... [详细]
  • Skywalking系列博客1安装单机版 Skywalking的快速安装方法
    本文介绍了如何快速安装单机版的Skywalking,包括下载、环境需求和端口检查等步骤。同时提供了百度盘下载地址和查询端口是否被占用的命令。 ... [详细]
  • 深入理解CSS中的margin属性及其应用场景
    本文主要介绍了CSS中的margin属性及其应用场景,包括垂直外边距合并、padding的使用时机、行内替换元素与费替换元素的区别、margin的基线、盒子的物理大小、显示大小、逻辑大小等知识点。通过深入理解这些概念,读者可以更好地掌握margin的用法和原理。同时,文中提供了一些相关的文档和规范供读者参考。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 本文介绍了网页播放视频的三种实现方式,分别是使用html5的video标签、使用flash来播放以及使用object标签。其中,推荐使用html5的video标签来简单播放视频,但有些老的浏览器不支持html5。另外,还可以使用flash来播放视频,需要使用object标签。 ... [详细]
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • 安卓编年史(4):Android
    安卓0.9显示着横屏的主屏幕——后续一些版本无法实现的一个特性[RonAmadeo供图]尽管从功能上很难将模拟器和操作系统区分开,但安卓0.9是第一个支持横屏显示的版本。更让人惊讶 ... [详细]
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社区 版权所有