笔记摘要:

作为web开发的前奏,这里介绍了什么是HTTP协议,HTTP请求与HTTP响应信息的介绍

一、什么是HTTP协议

客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式。

HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程。

HTTP协议是学习JavaWEB开发的基石,不深入了解HTTP协议,就不能说掌握了WEB开发,更无法管理和维护一些复杂的WEB站点。

二、HTTP协议简介

HTTP使用请求-响应的方式进行传输,一个请求对应一个响应,并且请求只能是由客户端发起的。

HTTP协议的版本:HTTP/1.0、HTTP/1.1

在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源。
HTTP1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源。

三、HTTP请求

客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求。一个完整的HTTP请求包括如下内容:

一个请求行、若干请求头、以及实体内容,如下所示 :

HTTP请求行

(1)请求行:GET /books/java.html HTTP/1.1(请求方式  请求资源   所用协议)

(2)请求方式:GET、POST,默认情况下浏览器都是get方式的请求,只用表单的method设置为POST才是post请求

请求方式详细介绍

请求行中的GET称之为请求方式,请求方式有:
     POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT

常用的有: GET、 POST

用户如没有设置,默认情况下浏览器向服务器发送的都是GET请求,例如在浏览器直接输地址访问,点超链接访问等都是GET,用户如想把请求方式改为POST,可通过更改表单的提交方式实现。

不管POST或GET,都用于向服务器请求某个WEB资源,这两种方式的区别主要表现在数据传递上:

如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,

例如:GET /mail/1.html?name=abc&password=xyz HTTP/1.1

Get和post方式的区别:

Get:会将提交的数据显示在地址栏上。

Post:不会将数据显示在地址栏上

Get:提交数据的体积受地址栏的限制。

Post:可以提交大体积的数据

Get:对于敏感信息不安全。

Post:对于敏感信息安全

Get:会将提交信息封装在请求行,也就是http消息头之前

Post:会将提交信息封装在数据体中,也就是http消息头之后的空行后

对于服务端而言:

表单提交尽量用post,因为涉及到编码问题,因为tomcat服务端默认的解码是ISO8859-1

对于post提交的中文,在服务端可以直接使用setCharacterEncoding(”gbk”)就可以解决

对于get提交的中文,在服务端只能通过IOS8859-1将数据解码一次,再通过指定的码表GBK解码

HTTP请求的细节——常见请求头

Accept: text/html,image/*    可以接受的数据格式
Accept-Charset: ISO-8859-1可以接受的字符集编码
Accept-Encoding: gzip,compress可以接受的压缩格式
Accept-Language: en-us,zh-cn 浏览器的语言环境
Host: www.it315.org:80所要访问的虚拟主机名
If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT   配合Last-Modified判断资源是否更新过
Referer: http://www.it315.org/index.jsp 表示当前请求来自哪个页面,防盗链用。
User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0) 浏览器所在环境信息
Cookie
Connection: close/Keep-Alive   是否保持连接
Date: Tue, 11 Jul 2000 18:23:51 GMT日期时间

五、HTTP响应

HTTP响应分为:状态行、若干响应头、一个空行、实体内容

一个HTTP响应代表服务器向客户端回送的数据,它包括:

一个状态行、若干响应头(消息头)、以及实体内容

HTTP响应的细节——状态行

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

1)状态行

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

举例:HTTP/1.1 200 OK

HTTP/1.1 200 OK (需用协议版本 状态码 原因描述)

常用状态码

200 成功

302 请求重定向,配合Location头使用

304、307 使用缓存资源

404 请求资源未找到

500 服务器端错误

(2)常用响应头

Location: http://www.it315.org/index.jsp  配合302使用,重定向的地址

Server:apache tomcat服务器信息

Content-Encoding: gzip 传输数据所用的压缩格式

Content-Length: 80 数据长度

Content-Language: zh-cn 语言环境

Content-Type: text/html; charset=GB2312 传输数据的类型

Last-Modified: Tue, 11 Jul 2000 18:23:51 GMT配合If-Modified-Since使用判断资源是否更新过

Refresh: 1;url=http://www.it315.org定时刷新,第一个参数表示隔多长时间刷新,第二个参数表明刷新到哪个URL,如果没有第二个参数就刷新当前页面

Content-Disposition: attachment;filename=aaa.zip下载相关头

Transfer-Encoding: chunked  传输数据的方式

Set-Cookie:SS=Q0=5Lb_nQ; path=/search

ETag: W/"83794-1208174400000"配合If-None-Match使用判断资源是否有过修改

Expires: -1 设置缓存时间,可以被设置为一个时间值,指定资源缓存到何时,如果设置为0或-1,则不缓存

Cache-Control: no-cache  设置不缓存

Pragma: no-cache   设置不缓存

* 以上三个头都是用来控制缓存的,是由于历史原因导致不同浏览器使用不同头,我们一般同时使用这三个。

Connection: close/Keep-Alive   是否保持连接

Date: Tue, 11 Jul 2000 18:23:51 GMT 日期时间

转载于:https://www.cnblogs.com/xushuai123/archive/2013/03/17/2978018.html

javaWeb -- HTTP协议相关推荐

  1. Java-Web HTTP协议

    一.HTTP概述 HTTP(hypertext transport protocol),即超文本传输协议.这个协议详细规定了浏览器和万维网服务器之间互相通信的规则. HTTP就是一个通信规则,通信规则 ...

  2. JavaWeb | HTTP 协议请求与响应格式

    一.HTTP 是什么 计算机网络核心概念:网络协议 网络协议种类非常多,其中一些耳熟能详的,IP,TCP,UD- 其中还有一个应用非常广泛的协议HTTP,HTTP 协议大概率是咱们日后开发中用的最多的 ...

  3. 大专java方向校招面试找工作知识点技术栈以及实习感受分享-简历分享

    大专java方向校招面试找工作知识点技术栈以及实习感受分享 专科生的Java学习以及校招面试 先说一下我的编程历程 开始求职之路 第一次求职 网上海投 第二次面试 第三次面试 学校招聘会 第四次面试 ...

  4. Java之神:技能树(Skill Tree)

    ■■ 卷一:Java - 工程师修炼 ■□ Stage01:JavaSE ■ 零.Java预热 ● 计算机发展历史 ● 编程语言概况与分类 ● DOS常用命令 ● 学习方法与学习笔记及笔记工具 ● J ...

  5. javaweb学习总结(四)——Http协议

    javaweb学习总结(四)--Http协议 一.什么是HTTP协议 HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用 ...

  6. TCP/IP面试常问合集,JavaWeb内容及HTTP协议

    1. TCP/IP 1.1 传统的OSI(Open System Interconnection)参考模型是7层:应用层.表示层.会话层.传输层.网络层.数据链路层.物理层.而TCP/IP是5层参考模 ...

  7. 认识JavaWeb,servlet, JSP, Tomcat, http协议,Web服务器

    JavaWeb通常指服务器端的Java应用开发. 一般来说,服务器是在网络通信条件下工作的,这就离不开http协议. HTTP协议,是为服务器和客户端通信提供的规范,其中规定了信息的格式,符合规范格式 ...

  8. JavaWeb --第三章 HTTP协议详解

    JavaWeb --第三章 HTTP协议详解 Http 什么是HTTP HTTP: 超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常 ...

  9. JavaWeb:tomcat服务器安装总结及Http协议

    JavaWeb:tomcat服务器安装总结 目录 JavaWeb:tomcat服务器安装总结 一:服务器端概述: 二:Tomcat下载: 三:安装: 四:HTTP问题: 五:深入了解tomcat服务器 ...

最新文章

  1. “百度”(baidu.com)的由来
  2. 分计算iv值_S71200PLC模拟量编程方法与计算原理
  3. webstorm最新破解方法
  4. 数据镜像备份工具rsync
  5. 6421B Lab5 路由和远程访问的配置与故障排除
  6. MySQL 字符串转in/double类型——CAST/CONVERT函数的用法
  7. Linux的文件系统及文件缓存知识点整理
  8. excel打开空白不显示内容 没有隐藏_这些Excel快捷键你都会吗?
  9. python实现杨辉三角
  10. 惠普HP ProDesk 400 G2 加装BCM94352HMB网卡
  11. MATLAB符号计算相关函数
  12. python实现微信付款码支付(刷卡支付)(纯python)
  13. 韩信点兵python源代码_Python实现“韩信点兵”
  14. 虚拟主机管理器WHM的详细介绍
  15. Java 字符集编解码及乱码示例
  16. 中国移动新动作,员工福利有调整
  17. Mysql8.0 忘记密码怎么办
  18. python爬虫爬取车标网所有车标Logo
  19. 利用二维数组编程输出九九乘法表 ← C语言
  20. UiPath安装教程

热门文章

  1. linux printk 时间戳,linux – kern.log中“00:00:00”时间戳的含义是什么?
  2. java 编码过滤器_Java编码过滤器
  3. pythontype函数使用_基础教程:python isinstance与type函数用法
  4. centos下mysql常用的三种备份方法_centos下mysql自动备份(全量)
  5. 对象特性--构造函数调用规则
  6. 准确度判断 语义分割_Mask R-CNN(目标检测语义分割)测试
  7. 设置VSCode刷新资源管理器快捷键Ctrl+Shift+R
  8. IDEA Maven项目引入本地外部jar包
  9. 在CentOS 6.3 64bit上安装ActiveMQ 5.15.9实录
  10. libcurl选项CURLOPT_WRITEDATA中的“坑”