Http协议详解

Servlet03.Http协议详解

一、概述

HTTP协议:超文本传输协议
Hyper:超越;Text:文本;Transfer:传输;Protocal:协议

注意:

I.HTTP协议不是传输层协议,是应用层协议(应用层:为应用程序服务的网络层)。

II.HTTP底层的传输数据仍然使用的是TCP协议(TCP协议分为长连接和短连接)。

III.HTTP1.1以上都是使用TCP长连接:前端和后端连接后不断开;目前使用的HTTP版本默认是TCP长连接。

总结:

1.HTTP是互联网的核心协议(应用程序直接使用的 协议),TCP协议是互联网的基础协议;几乎所有的互联网数据交互的应用层使用的都是HTTP协议。

2.HTTP协议可以传输的数据类型:文本、图片等二进制数据、JSON字符串

3.HTTP是一个无状态协议:无状态指的是HTTP默认不记录请求中的数据,一次访问结束,数据丢失(无缓存);但开发人员可以通过会话技术(Cookie+Session)记录请求中的数据。

4.HTTP请求分为两个阶段:HTTP请求会和服务器建立Socket,HTTP协议执行的两个阶段也就是Socket执行的过程。

I.请求阶段:前端请求(请求中包含数据)进入服务器:对应的Java对象是HttpServletRequest

II.响应阶段:服务器向前端响应即服务器发送数据给前端:对应的Java对象是HttpServletResponse

二、HttpServletRequest

1.HttpServletRequest对象的生命周期:

生:请求进入tomcat时,由tomcat创建并传入Servlet的service()中

活:一个请求处理过程中:请求处理阶段

死:一个请求处理结束:进入响应阶段

一个请求对应一个HttpServletRequest再次向服务器发送请求,Tomcat创建新的HttpServletRequest对象;

2.HTTP协议的请求阶段:

Http协议详解

 

2.1请求行:  请求地址(URL)+状态码(Status Code)+请求类型(Method)

Http协议详解

 

 

 Http协议详解

2.2请求头:

Http协议详解

 

 Http协议详解

 

 2.3请求体:

Http协议详解

 

Http协议详解

 三、get请求和post请求

1.区别:

I.GET请求的请求数据在请求行中;可以在地址栏中直接看见数据;因此Get请求一般适用于向服务器发送少量数据。

POST请求的请求参数在请求体中而不在请求行中;因此地址栏无法直接查看请求数据;并且可以向服务器发送大量数据。

II.GET请求的Payload为Http协议详解而POST请求的Payload为Http协议详解

2.获取数据的方式:

I.get请求可以使用request.getQueryString(),但很不方便。

II.两者都可以使用request.getParamter("请求参数名")返回值为String和request.getParameterValues(“请求参数名”)返回值为String[]。

getParameterValues("请求参数名"):前端未选择数据---后端是null;

getParamater("请求参数名"):前端未输入数据---后端是" ";

III.一次性获取所有请求参数名和请求参数值 

把请求参数名和请求参数值看作为一个Map<String,String[]> 

Map<String, String[]> parameterMap = request.getParameterMap();

把一次性获取的Map<String,String[]>自动转换为JavaBean:

第一步:添加commons-beanutils的jar包

Http协议详解

 第二步:创建实体类对象,调用工具类的populate方法

Http协议详解

注意:commons-beanutils不能把字符串数据转换为Date类型数据:把JavaBean的日期属性修改为String类型;

SpringMVC等框架可以半自动进行转换:手动编写Converter/@Dateformat。

3.获取所有的请求参数名,但无值:

Http协议详解

 四、HttpServletRequest实现文件上传

文件是一种特殊的请求数据:二进制

文件上传步骤:
1.前端的表单需要添加enctype="multipart/form-data":告知服务器表单中有二进制数据(文件);前端发送的数据默认是String类型

2.

I.  Servlet3.0之前不提供文件上传功能:需要添加第三方jar包:commons-fileupload.jar

II.Servlet3.0之后加入了对文件上传的支持,但需要使用Servlet注解。

代码:

Http协议详解

 

 

 Http协议详解

上一篇:tomcat 启动SpringMVC报错 无法访问javax.servlet.ServletException


下一篇:OA系统05-在内存中创建图像