java web的业务流程_JavaWeb(1)请求过程

本文介绍了B/S架构的概念及其优势,详细阐述了用户从输入URL到获取响应的整个请求过程,包括DNS解析、HTTP请求、服务器处理、负载均衡、数据存储以及静态资源加载等环节。同时,讨论了网络架构的基本原则和HTTP请求头、响应头的关键作用,以及常见的HTTP状态码。
摘要由CSDN通过智能技术生成

现在互联网的网络架构已经慢慢从传统的C/S架构转变为了更加便捷的B/S架构,从而大大简化了用户使用网络应用的难度。

B/S架构的两个好处:

1、客户端使用统一的浏览器(Browser)。有效的屏蔽了不同服务商提供给用户使用服务的差异性。

2、服务端(Server)基于统一的Http协议。由于使用统一的Http协议,所以基于Http的服务器就有很多,如:Apache、IIs、Nginx、Tomcat、JBoss等,这些服务器不用服务开发者单独来进行开发,可以直接拿来使用。服务开发者只需要关注提供服务的应用逻辑,其他一切平台和框架都可以直接拿来使用。所以也同样简化了服务提供者的开发。

B/S架构的介绍:

Http采用的是无状态的短连接的通信方式,通常情况下,一次请求就完成了一次数据的交互,通常也对应一个业务逻辑,然后这次通信就断开了。采用这种方式是为了能够同时服务更多的用户。

当前互联网应用每天都要处理上亿的用户请求,所以不可能每个用户访问一次之后就一直保持这个连接。

由于现在的架构设计,既要满足海量用户的访问请求,又要保持用户请求的快速响应,所以架构也就变的越来越复杂。主要的还是采用下图的架构设计。

dd9d7d0cf299

B/S架构设计图

请求大概过程:当一个用户在浏览器输入:www.taobao.com这个URL(统一资源定位器)时,首先请求DNS(域名服务器)将这个域名解析成对应的IP地址,然后根据IP找到对应的服务器,向这个服务器发送一个GET请求,由这个服务器决定返回默认的数据资源给访问的用户。

在服务器端实际上还有一套很复杂的业务逻辑:服务器可能有很多台,到底指定哪台服务器来处理请求,这时就需要一个负载均衡设备来平均分配所有用户的请求。

还有请求的数据时存储在分布式缓存中,还是一个静态文件中,或者是在数据库中。

当数据返回浏览器时,浏览器解析数据发现还有一些静态资源(如:CSS、JS、IMG)时,又会发起另外的HTTP请求,而这些请求很可能会在CDN上,那么CDN服务器又会处理这些HTTP请求。

大体上一个用户请求会涉及这些基本的流程,每一个都会影响这些请求最终是否会成功。

网络架构的基本原则:

1、互联网上所有的资源都要用到一个URL表示。如果你要发布一个服务或者一个资源到互联网,让别人能够访问到,那么你首先必须要有一个在世界上独一无二的URL。

2、必须基于HTTP与服务端交互。

3、数据展示必须在浏览器中进行。

如何发起一个请求?

发起一个HTTP连接其实本质上就是建立一个Socket连接的过程。

其中,outputStream.write写的二进制字节数据格式要符合HTTP。浏览器在建立Socket连接之前,必须根据地址栏输入的URL的域名DNS解析程IP地址,再根据这个IP地址和默认的80端口与远程服务器之间建立Socket连接,然后浏览器根据这个URL组装程一个GET类型的HTTP请求头,通过outputStream.write发送到目标服务器,服务器等待inputStream.read返回数据,最后断开这个连接。

HTTP Header

HTTP Header控制着互联网成千上万的用户的数据的传输。最关键的是,它控制着用户浏览器的渲染行为和服务器的执行逻辑。

常见的HTTP请求头

Accept-Charset:用于指定客户端接收的字符集;

Accept-Encoding:用于指定可接受的内容编码,如:Accept-Encoding:gzip.deflate

Accept-Language:用于指定一种自然语言,如:Accept-Language:zh-cn

Host:用于指定被请求资源的Internet主机和端口号

User-Agent:客户端将它的操作系统、浏览器和其他属性告诉服务器

Connection:当前连接是否保持,如:Connection:Keep-Alive

常见的HTTP响应头

Server:使用的服务器名称,如Server:Apache/1.3.6(Unix)

Content-Type:用来指明发送给接收者的实体正文的媒体类型,如:Content-Type:text/html;charset=GBK

Content-Encoding:与请求报头Accept-Encoding对应,告诉浏览器服务端采用的是什么压缩编码

Content-Language:描述了资源所用的自然语音,与Accept-Language对应

Content-Length:指明了实体正文的长度,用以字节方式存储的十进制数字来表示

Keep-Alive:保持连接的时间,如Keep-Alive:timeout=5,max=120

常见的HTTP状态码

200:客户端请求成功

302:临时跳转,跳转的地址通过Location指定

400:客户端请求有语法错误,不能被服务器识别

403:服务器收到请求,但是拒绝提供服务

404:请求的资源不存在

500:服务器发生不可预期的错误

浏览器一般可以通过F12调出开发人员工具来查看HTTP信息。

题外话:看了一会宋朝小谈,五代十国不是真的只有十国,十只不过是一个代数,而五代分别是梁、唐、晋、汉、周。

北方的游牧民族,在各个时代都有不同的种族也可以是不同的称呼:春秋战国时期叫戎狄、秦汉时叫匈奴、唐朝时叫突厥、五代十国开始叫契丹。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值