HTTP协议(1)入门-协议介绍

来源:互联网 发布:如何恢复电脑网络设置 编辑:程序博客网 时间:2024/05/29 14:38

【1 协议介绍:】


设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。随着内容的不断多元化,http协议的内容变得丰富。
HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从服务器传输超文本到本地浏览器的传输协议。它是客户端和服务器端的一种沟通的方式。 

在互联网中,我们通过浏览器访问其他的网站,默认都会使用http协议。定义了客户端和服务器之间进行交互的规则。


【http协议:】

超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。
设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。它是互联网交互的一种规则
 
【http的特点:】
默认端口是80(如果端口号是80,可以省略不写)
例如访问tomcat时,如果tomcat的端口号是80,那么以下两种写法效果相同:
http://localhost:80
http:/localhost
http协议永远是客户端(浏览器或者手机等)发送请求,服务器回送响应
客户端访问服务端称为客户端的请求,服务器给浏览器回送数据称为服务器的响应。


http协议是基于TCP协议,基于应用层的。
 
查看http协议内容的方式?
ie:安装httpwatch
chrome(谷歌):内置 f12(推荐)

firefox(火狐):安装firebug


【2 区分get请求和post请求】


根据HTTP标准,HTTP请求可以使用多种请求方法。 
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。 
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。


常用方法:
Http get 方法: 主要用于向指定的URL(URI)请求资源(资源文件或是数据均可), 可以带参数也可以不带参数, 带参数时,参数是明文传递,你可以在浏览器的地址栏中看到参数名及参数值,get安全性不高,所以常用于安全性要求低的场合, 比如登录后请求数据。
Http post方法:主要是向指定的URL(URI)提交数据, 通常用于表单发送,post所传递的数据或参数不是已明文形式存在的,而是封装后的,因此相对安全系数高,像注册、登录、提交表单都是用该方法实现的。 


常用的请求类型: get请求 和 post请求。

post请求:
1、<form method="post">


get请求:
1、地址栏直接输入
2、<form method="get"...>
3、超链接 <a href="....">xx</a>
4、<img src=”…..”>


【3 HTTP协议中的请求信息】


通过请求信息可以知道,浏览器向服务器发送了什么,发送的请求类型以及其他的一些信息。

在http协议的请求信息中大致可以分成三个组成部分:
1、请求行
2、请求头
3、请求体


【示例】
编写2个html页面,1个Servlet
分别通过form表单发送get请求和post请求,
从而演示get请求和post请求的区别
1:一个get.html用于发送get请求

<form action="/servlet/request" method="get">用户名:<input type="text" name="username"/>密码:<input type="text" name="password"/><input type="submit" value="提交"/></form>

2:一个post.html用于发送post请求。

<form action="/servlet/request" method="post">用户名:<input type="text" name="username"/>密码:<input type="text" name="password"/><input type="submit" value="提交"/></form>


3:创建一个RequestServlet.java

完整java代码如下

package com.flying.servlet;import java.io.IOException;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class RequestServlet extends HttpServlet {protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {response.setContentType("text/html;charset=utf-8");response.getWriter().print("这是 get/post方法");}protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

注意查看web.xml

是否如下

主要是:<url-pattern>/request</url-pattern>对应访问地址:http://localhost:8080/servlet/get.html或者http://localhost:8080/servlet/post.html

  <servlet>    <description></description>    <display-name>RequestServlet</display-name>    <servlet-name>RequestServlet</servlet-name>    <servlet-class>com.flying.servlet.RequestServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>RequestServlet</servlet-name>    <url-pattern>/request</url-pattern>  </servlet-mapping>

4:分别使用get.html和post.html发送请求

get请求:

http://localhost:8080/servlet/get.html

通过IE自带的抓包工具查看get.html发送请求:
注意如果不能使用localhost:8080/servlet/get.html,
那就使用127.0.0.1:8080/servlet/get.html,
使用IE浏览器如果用localhost发送请求可能会跳转到其他页面。


请求信息:
有请求行和请求头,但是请求体(即请求正文)为空

post请求:

http://localhost:8080/servlet/post.html


【总结】

介绍HTTP协议中规定的客户端请求服务器数据时的请求协议格式:
http规定:请求的数据必须分成三部分:
1、请求行
2、请求头
3、请求体
如果使用IE自带的抓包工具来查看的话,可以更加明显看到get方式的发送信息中没有请求体
get请求和post请求的区别:
1、get没有请求体,post有
2、get请求提交的参数在请求行中,post的参数在请求体中
3、get请求的参数会显示在地址栏,不安全,post请求的参数不会显示在地址栏,相对安全
4、地址栏的长度有限制(各个浏览器的限制都不同,但都很长)


注意:在请求中,只有post请求方式,才会有请求体;get方式的请求,请求数据中是没有请求体的。