javaweb之-----http协议详解

转载 2016年08月29日 12:07:06

公司人都去外面旅游了,本人由于太懒不想动,就只好在家,把之前学的web知识捡起来,由于之前没开始写博客,现在希望把javaweb知识以博客的形式展现出来,也当做是自己复习的机会,今天就讲下http协议,那么第一个问题来了什么是http协议。

一:什么是http协议

对浏览器客户端和服务器端之间数据传输的格式规范,因为我们软件现在都是基于B/S开发的,就是所谓的浏览器/服务器,它是一种数据传输的格式规范,也就是我服务器给的数据,浏览器能看懂且解析显示给用户看,就像我们在地址栏上输入http://www.baidu.com你所看到的网页一样,所谓规范就是二端约定的东西,就像你和后台调接口一样,什么字段表示什么意思.

二:http协议底层使用了什么?

我们知道http协议它是应用层上的协议,因为应用层上的协议关注的是数据格式是否正确,而底层是用了tcp/ip协议,它关心的是数据传输是否成功了,因为tcp/ip协议有一个三次握手,

三:写例子来实际看看http请求有哪些内容都代表什么意思?

我们知道写服务端和javase之前写的桌面程序是不一样的,之前写的Javase程序 然后你run as一样虚拟机就把你写的东西可以在控制台上可以看到,而现在是服务器端程序,你肯定不能这么干了,在这说明下,在你这使用的服务器端的服务器就是tomcat,不要问我为什么使用tomcat,我不会告诉你我没钱,只能用免费的,如果不知道什么是tomcat的话可以去百度下,我有时间会写一篇关于这方面的博客,在这就不细讲了,

现在写了一个常用的用户注册界面,然后教给servlet去处理,你也不要担心servlet是啥东西,后期会讲到,今天说了只关心http协议就够了,

[html] view plain copy
 print?在CODE上查看代码片派生到我的代码片
  1. <form action="/httpDemo/servlet/RegisterServlet" >  
  2.     name:<input type="text" name="user"><br/>  
  3.     password: <input type="password" name="text"><br/>  
  4.    <input type="submit" value="sumbit">  
  5. </form>  

还有就是请求头和响应头分别是如图:

请求头:



响应头:


这些都是请求和响应的一部分并不是全部,比如cookie,因为我们这次请求并没有使用到,后面的会话管理会讲cookie和session突然发现火狐浏览器这个不是太好,因为它这个请求给的格式不好我继续往下面讲,改用360浏览器吧,发现360浏览器也是这样子,就这样讲吧,按到底是这样的如图:


这是我自己在word上写的 ,这个才很好讲,从中我们可以看出一个http请求包含四部分

a:请求行

b:请求头

c:一个空行

d:请求实体 请求实体为什么说是可选的,因为get请求是没有请求实体的,只有post请求有请求实体,这个很好验证,刚才我的1.html

<form action="/httpDemo/servlet/RegisterServlet" >
name:<input type="text" name="user"><br/>
password: <input type="password" name="text"><br/>
<input type="submit" value="sumbit">
</form>  

表单中没有写method这个属性,所以它默认就是get请求,现在我们来看看当点击submit后地址栏会有什么变化,

地址栏请求前:


我填写了用户名和密码后点击sumbit后变化:


认真看下地址栏发生了什么,是不是多了这个字符串?username=123&password=zsc,说明get请求是把参数携带在url后面,这样肯定是不对的,谁那么菜做登录或者注册用get请求,万一你在网吧登录别人在后面把你密码记住了,这不是完蛋,在这就是演示下请求实体内容get是没有这东西的,这个时候再看它的请求头就知道了 如图:


现在把表单请求改为post请求看下:


这是Google浏览器打印出来的,我记得我刚学web开发好像不是这么的,现在分开写了,完整的post请求头是这样的

POST /httpDemo/1.html HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Referer: http://localhost:8080/httpDemo/1.html
Connection: keep-alive

username=eric&password=123456 


这个才是完整的http请求头,这是post请求才有请求实体:我们看到请求头是这样的Host:localhost:8080是不是有点像我们map集合key_value形式,其实是差不多的,我们获取只要获取对应的name就能获取到对应的value值

上面说到get和post请求,在这对这二个请求方式做一个总结


get和post请求区别

1):get请求地址栏(URI)会跟上参数数据。以?开头,多个参数之间以&分割。

   post参数不会跟着URI后面。参数而是跟在请求的实体内容中。没有?开头,多个参数之间以&

2):GET提交参数数据有限制,不超过1KB

  POST提交的参数数据没有限制

3):GET方式不适合提交敏感密码(因为它会把请求参数直接放在地址栏上)而POST方式提交敏感数据

4):浏览器直接访问的请求,默认提交方式是GET方式


现在一步步来讲一个请求包含请求头 请求行 空行 请求实体(post)请求才有,现在讲下

请求行

POST /httpDemo/1.html HTTP/1.1 这是我们的请求头:

1):Post表示请求方式

2):HTTP/1.1表示请求的http协议版本号

3):/httpDemo/1.html 表示请求的统一资源定位符,它是省略了http://localhost:8080这个,这个叫URL,表示互联网上一个网址,而http://localhost:8080是http(协议)+localhost(域名或者ip也就是公司在运营商那里注册的ip,你才可以访问到你的服务器)+8080找到你8080端口对应的是哪个地址,因为一台服务器可能会有多个应用,我们知道自己本金的静态ip是127.0.0.1那么为什么不写这个ip还要写localhost呢?在你C盘的目录:C:\Windows\System32\drivers\etc有个host文件 你打开这个host文件会看到这个127.0.0.1   localhost 这就是一个ip对应一个域名这二个就是同一个意思,为什么我们写localhost一样能访问,就是这个原因,还有一个叫URI 这个是统一资源标记符。/httpDemo/1.html。用于标记任何源以是本地文件系统,局域网的资源(//192.168.14.10/myweb/index.html可以是互联网

URL是URI的子类


请求头:

下面列举的是常见的请求头

Accept: text/html,image/*      -- 浏览器接受的数据类型

Accept-Charset: ISO-8859-1     -- 浏览器接受的编码格式

Accept-Encoding: gzip,compress  --浏览器接受的数据压缩格式

Accept-Language: en-us,zh-       --浏览器接受的语言

Host: www.baidu.com:80          --(必须的)当前请求访问的目标地址(主机:端口)

If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT  --浏览器最后的缓存时间

Referer: http://www.baidu.com/index.jsp      -- 当前请求来自于哪里

User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)  --浏览器类型

Cookie:name=eric                     -- 浏览器保存的cookie信息

Connection: close/Keep-Alive            -- 浏览器跟服务器连接状态。close: 连接关闭  keep-alive:保存连接。

Date: Tue, 11 Jul 2000 18:23:51 GMT      -- 请求发出的时间

相关文章推荐

javaweb开发篇——HTTP协议请求和响应详解(上)

HTTP协议请求和响应详解(上) 1,什么是HTTP协议以及特点 HTTP协议是超文本传输协议,它是TCP/IP协议的一个应用层面向对象协议,用于定义web浏览器与web服务器之间交换数据的过程。 H...

javaweb开发篇——HTTP协议请求和响应详解(下)

HTTP协议请求和响应详解(下) HTTP请求和响应详细解析 1,HTTP请求详解 在客户端和web服务器连接后,客户端请求服务器上的资源,称为发送了一次http请求。http请求格式:一个请求行、...

javaweb中Http协议详解

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

javaweb HTTP协议

  • 2012-08-20 12:35
  • 2.92MB
  • 下载

JavaWeb - XML,XML的解析,Tomcat,web服务器,http协议

JavaWeb - XML,XML的解析,Tomcat,web服务器,http协议

[30天轻松掌握JavaWeb视频]HTTP协议

一.HTTP请求 1.一个请求行,若干个请求头,一个空行组成。 2.请求方式 get(默认) ,post(提交表单),head,options,delete,trace,put.GET 携带的数据...

day08-JavaWeb之http协议request-response

一、http协议 (一)作用 浏览器与服务器通信基于tcp协议,tcp只解决可以传输数据了,但是没有解决传输数据的格式和内容。http协议就规定了传输数据的格式与传输的数据...

javaweb的http协议的一些讲解的复习

http的讲解的复习 客户机与服务器的交互一般分为四个步骤:1、建立链接 2、客户机发送请求 3、服务机回应相应信息 4、关闭连接  在web浏览器和web服务器之间还有一个代理服务器,这...

Javaweb学习笔记2—Tomcat和http协议

今天来讲javaweb的第二个阶段学习。 老规矩,首先先用一张思维导图来展现今天的博客内容。 ps:我的思维是用的xMind画的,如果你对我的思维导图感兴趣并且想看到你们跟详细的备注信息,请点击下...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)