JavaEE基础(03):Http请求详解,握手挥手流程简介

HTTP超文本传输协议,是用于从万维网服务器传输超文本到本地浏览器的传送协议,基于TCP/IP通信协议来传递数据:HTML文件、图片、查询数据等。HTTP协议基于客户端-服务端架构模式。浏览器作为HTTP客户端通过URL向服务端即WEB服务器发送请求。Web服务器根据接收到的请求后,处理完请求后向客户端发送响应信息。

JavaEE基础(03):Http请求详解,握手挥手流程简介

2、协议特点

简单快速

请求服务器时,只需传送请求方法和路径。请求类型常用GET、POST。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。

灵活:

HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。

无连接

无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

无状态

HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态则后续处理需要前面的信息,没有则需要重新请求,这样可能导致每次连接传送的数据量增大。

支持客户/服务器模式

二、Http请求详解 1、请求接口 public class ServletOneImpl extends HttpServlet { @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("doGet..."); response.setContentType("text/html;charset=utf-8"); String userName = request.getParameter("userName") ; response.getWriter().print("Hello:"+userName); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("doPost..."); response.setContentType("text/html;charset=utf-8"); String userName = request.getParameter("userName") ; response.getWriter().print("Hello:"+userName); } } 2、请求内容

Get请求

地址::6003/servletOneImpl?userName=cicada

GET /servletOneImpl?userName=cicada HTTP/1.1 Host: localhost:6003 Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 DNT: 1 Referer: :6003/request.jsp Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 Cookie: JSESSIONID=183C0F91B49A025C795FBC3067B37BC8

Post请求

地址::6003/servletOneImpl

POST /servletOneImpl HTTP/1.1 Host: localhost:6003 Connection: keep-alive Content-Length: 15 Cache-Control: max-age=0 Origin: :6003 Upgrade-Insecure-Requests: 1 Content-Type: application/x-www-form-urlencoded User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 DNT: 1 Referer: :6003/request.jsp Accept-Encoding: gzip, deflate, br Accept-Language: zh-CN,zh;q=0.9 Cookie: JSESSIONID=183C0F91B49A025C795FBC3067B37BC8 3、参数说明

Method:常见GET 和 POST,另外还有DELETE、PUT 等 ;

URI:/servletOneImpl,和Host组成请求的URL ;

HTTP/1.1:传输协议Http,版本1.1 ;

Host:请求资源所在的主机和端口 ;

Connection:TCP连接默认不关闭,可以被多个请求复用 ;

Upgrade-Insecure-Requests:浏览器不再显示 https 页面中的 http 请求警报 ;

Content-Length:指示实体主体大小,以字节为单位十进制数,发送到接收方。

Cache-Control:max-age=0使用缓存,但是会立即过期 ;

User-Agent:客户端浏览器类型、版本、操作系统等信息 ;

Content-Type: 请求或响应中,传输资源类型信息 ;

Origin:当前请求出自的站点 ;

Accept:客户端声明自己可以接收的资源格式 ;

DNT: 请求禁用用户追踪 ;

Referer:告诉服务器该网页是从哪个页面链接过来 ;

Accept-Encoding: 声明浏览器支持的编码类型 ;

Accept-Language: 声明浏览器支持的语言类型 ;

Cookie: 辨识存储在客户端的缓存数据,通常会加密 ;

4、GET和POST区别

浏览器端

从浏览器角度看这个两种请求的区别:GET方式读取资源,比如Get到静态页面,即使多次读取不会对访问数据产生影响,也被称为"幂等"操作。POST方式在页面中定义表单,提交表单会把数据提交到服务器,而且多数情况下会产生数据,比如常用的保存数据接口,并非"幂等"操作,不幂等也就意味着不能随意多次执行。

服务接口

这里指用Ajax程序请求服务接口,提交的请求类型。或者其他Http请求工具类,还有情况是微服务中各种Feign接口间的请求。这种情况接口发送请求时,限制相对较少,比如REST风格接口常用GET、POST、PUT、DELETE,几种方式分别获取、创建、更新、删除 资源,

三、Https请求协议 1、Https简介

基础概念

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zwzfgx.html