javaEE(2)_http协议
一、HTTP协议简介
1、客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式.dos环境下可直接通过telnet命令连上web服务器,使用HTTP协议发送请求获取某个页面.
2、HTTP是超文本传输协议,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的过程,HTTP协议是学习JavaWEB开发的基石,不深入了解HTTP协议,就不能说掌握了WEB开发,更无法管理和维护一些复杂的WEB站点.
3、HTTP协议的版本有HTTP/1.0、HTTP/1.1,在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源,HTTP1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源.可以使用telnet验证,目前都使用http1.1.
4、一个web页面中,使用img标签引用了三幅图片,当客户端访问服务器中的这个web页面时,客户端总共会访问几次服务器,即向服务器发送了几次HTTP请求.如下的一个页面:
<head>
<script type="text/javascript" src="..." />
<link rel="stylesheet" type="text/css" href="css/reset.css">
</head>
<body>
<img alt="a" src="a.png">
<img alt="b" src="b.png"/>
</body>
</html>
客户端访问这个页面时总共会向服务器发送5次请求,因为浏览器可以解析这些js,css,图片等资源,解析到这些相应在服务器上的资源时,则又会向服务器发送请求.所以将这些东西合并,减少服务器访问次数,可一定程度上减轻服务器的压力.访问新浪首页时会向服务器发送上百次请求.
二、HTTP请求
1、客户端连上服务器后,向服务器请求某个web资源,称之为客户端向服务器发送了一个HTTP请求.一个完整的HTTP请求包括如下内容:一个请求行、若干消息头、以及实体内容,请求头和实体内容之间有一个空行,如下所示 :

2、HTTP请求的细节——请求行
请求行中的GET称之为请求方式,请求方式目前主要有GET、 POST,用户如没有设置,默认情况下浏览器向服务器发送的都是get请求,例如在浏览器直接输地址访问,点超链接访问等都是get,用户如想把请求方式改为post,可通过更改表单的提交方式或ajax实现.不管POST或GET,都用于向服务器请求某个WEB资源,这两种方式的区别主要表现在数据传递上:如请求方式为GET方式,则可以在请求的URL地址后以?的形式带上交给服务器的数据,多个数据之间以&进行分隔,例如:GET /mail/1.html?name=abc&password=xyz HTTP/1.1,GET方式的特点:在URL地址后附带的参数是有限制的,其数据容量通常不能超过1K.如请求方式为POST方式,则可以在请求的实体内容中向服务器发送数据,Post方式的特点:传送的数据量无限制.
3、HTTP请求的细节——消息头
例:

主要消息头含义如下:

ps:1.accept */*代表可以接受任何数据.2.if-Modified-Since,服务器接受到这个时间后会和要访问资源的最后跟新时间比较,如果大于资源最后跟新时间就会拿客户端的缓冲而不会去访问服务器,返回状态码304或307,如果小于资源的跟新时间才会访问web资源,返回状态码200.
二、HTTP响应
1、一个HTTP响应代表服务器向客户端回送的数据,它包括:一个状态行、若干消息头、以及实体内容 .
例:

2、HTTP响应的细节——状态行
格式: HTTP版本号 状态码 原因叙述<CRLF>,举例:HTTP/1.1 200 OK,状态码用于表示服务器对请求的处理结果,它是一个三位的十进制数.响应状态码分为5类,如下所示:

ps:100-199一般很少使用,307和304表示请求的资源是从缓冲拿的,404表示访问的web资源不存在,必定是客户端的问题,403表示没有访问资源的权限.
3、HTTP响应细节——常用响应头
服务器通过响应头可以完全控制浏览器行为,例:

含义如下:

HTTP实用头字段-range实现断点续传功能,略.
可编写servlet程序,设置响应头,来具体查看浏览器的行为。
javaEE(2)_http协议的更多相关文章
- Java精选笔记_HTTP协议
HTTP协议 HTTP概述 介绍 HTTP是Hyper Text Transfer Protocol的缩写,即超文本传输协议. HTTP是一种请求/响应式的协议,客户端在与服务器端建立连接后,就可以向 ...
- javaweb基础(4)_http协议
一.什么是HTTP协议 HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的 ...
- 互联网_http协议
一.定义 http协议叫做超文本传输协议,是从web服务器传输超文本到本地浏览器的协议. 二.特征 1.无连接:即每次连接仅处理一个请求,服务器处理完客户的请求,并收到客户端的响应后,即断开连接.采用 ...
- [转】:HTTP请求流程(一)----流程简介
http://www.cnblogs.com/stg609/archive/2008/07/06/1236966.html HTTP请求流程(一)----流程简介 最近一直在研究如何让asp.net实 ...
- [置顶] Java Web开发教程来袭
Java Web,是用Java技术来解决相关web互联网领域的技术总和.web包括:web服务器和web客户端两部分.Java在客户端的应用有java applet不过现在使用的很少,Java在服务器 ...
- JAVA学习之路与大家分享
这是我四年以前总结的JAVA学习之路,希望对初学者或想从事JAVA开发的人有帮助. 本人是软件工程专业出身,先后学过C.C++.JAVA.VB.delphi等等开发语言以及网络相关管理技术.哎,好久不 ...
- Python爬虫视频教程
├─第1章_[第0周]网络爬虫之前奏 │ ├─第1节_"网络爬虫"课程内容导学 │ │ 第1部分_全课程内容导学.mp4 │ │ 第2部分_全课程内容导学(WS00单元)学习资料. ...
- JavaEE 要懂的小事:一、图解Http协议
Writer :BYSocket(泥沙砖瓦浆木匠) 微 博:BYSocket 豆 瓣:BYSocket FaceBook:BYSocket Twitter ...
- [javaEE] HTTP协议总结
OSI网络7层协议 物理层 ==> 数据链路层 ==> 网络层ip ==> 传输层 TCP UDP ==>会话层 ==>表示层 ==> 应用层 HTTP FTP S ...
随机推荐
- unity 在移动平台中,文件操作路径详解
今天,这篇文章其实是个老生常谈的问题咯,在网上类似的文章也比比皆是,在此我只是做个详细总结方便大家能够更好.更快的掌握,当然,如有不足的地方 欢迎指正!!! 相信大家在开发过程中,难免会保存一些文件在 ...
- 着色语言(Shader Language)
摘抄"GPU Programming And Cg Language Primer 1rd Edition" 中文名"GPU编程与CG语言之阳春白雪下里巴人" ...
- linux模拟http请求命令
Http请求指的是客户端向服务器的请求消息,Http请求主要分为get或post两种,在Linux系统下可以用curl和wget命令来模拟Http的请求.下面就来介绍一下Linux系统如何模拟Http ...
- C语言中位运算符异或“∧”的作用
异或运算符∧也称XOR运算符.它的规则是若参加运算的两个二进位同号,则结果为0(假):异号则为1(真).即0∧=,∧=,∧=.如: 即071∧,结果为023(八进制数). “异或”的意思是判断两个相应 ...
- ie img 3px bug
ie img 3px bug 日期:2008-11-22 分类:CSS ie img 有 3px 的缝隙也是 ie 的经典 bug 之一,相信已经不陌生了,但还是先看看效果吧(也许你并没有见过): 效 ...
- nginx 一些配置
worker_processes 4; #工作进程数 events { #epoll是多路复用IO(I/O Multiplexing)中的一种方式, #仅用于linux2.6以上内核,可以大大提高ng ...
- python异常之EOFError: Ran out of input
出现该问题一般是由于你在以写模式打开文件后未关闭的情况下又去以读模式操作该文件时报的错误 # coding = utf-8 import pickle #定义一个boy类 class boy(): d ...
- 2017"百度之星"程序设计大赛 - 初赛(A)今夕何夕
Problem Description 今天是2017年8月6日,农历闰六月十五. 小度独自凭栏,望着一轮圆月,发出了“今夕何夕,见此良人”的寂寞感慨. 为了排遣郁结,它决定思考一个数学问题:接下来最 ...
- JavaScript特点、优缺点及常用框架
参考来源: http://www.cnblogs.com/SanMaoSpace/archive/2013/06/14/3136774.html
- centos6.7版本下配置ssh密钥登录
需要提前说明的是我使用的系统是centos6.7的版本. 1.我使用的是Putty登录 #ssh-keygen (生成公钥和私钥的命令) 回车之后会提示密钥要存放的目录,默认的目录是当前目录下的.ss ...