Web:简述Web开发的发展历程

Web:简述Web开发的发展历程


一、第一阶段 CGI进程响应

这一阶段,服务器比较弱,请求也很简单,就是用户发一个请求,服务器接收后新建进程,然后返回结果。
449064-20171011185917262-1255285153.png
这种方式一看代价就很大,每次都新建进程,很麻烦。

二、第二阶段 Servlet线程级别响应

这一阶段跟上面差不多,只不过每次都只是新建一个线程,这样代价就小很多了。

整体的流程是这样的:

  1. 客户端发送请求,Tomcat服务器接收请求后,封装HttpRequest对象和HttpResponse对象;
  2. 根据配置文件xml去查找匹配的servlet-name,并加载对应的servlet;
  3. 如果之前没有加载过,那么加载并进行实例化和初始化;如果加载过,则直接调用service方法处理;
  4. 把处理的结果封装到HttpResponse中返回。

Servlet的生命周期有四个阶段:

  1. 加载和实例化:启动Tomcat这种Servlet容器,容器会根据配置文件加载Servlet类,并通过new方法进行实例化。
  2. 初始化:然后调用init()方法初始化,每个Servlet只会初始化一次,可以理解为单例模式。
  3. 请求处理:当服务器接收请求后,接收请求的线程找到对应的Servlet,调用service()方法响应。因此会存在多个线程同时掉用一个Servlet实例的情况,因此这里会有线程安全问题的!
  4. 销毁:Tomcat关闭时,调用destroy()销毁容器。

Serlet本身是无状态的,如果没有在里面自己新增类似于count++的操作,就不会存在线程安全问题。如果想要避免线程安全问题,可以采用下面的思路:

  1. 避免使用实例变量;
  2. 避免使用非线程安全的集合;
  3. 访问外部可写文件需要加锁。

总结来说,这里只要注意Servlet的生命周期以及线程安全问题即可。

三、第三阶段 JSP+Model

这一阶段引入了JSP技术,即Java Server Page,它是一种把HTML和Java混合在一起的技术语言。
在这里插入图片描述
这种方式也引入了一种前后端分离开发的合作模式,即会有专门的开发静态页面的人,开发完后把页面交给后段程序员,增量的开发Java相关的后端处理和数据展现相关的功能。

整体的流程是这样的:

  1. 用户发送请求给服务器,服务器对应的JSP页面接收到请求。
  2. JSP会被编译成Servlet,模式就跟之前一样了。
  3. 最后填充数据,返回即可。也就是说,它其实就是把之前页面视图的部分和Servlet的部分融合到一起而已。

四、第四阶段 前后端分离+Spring MVC

这种模式主要的关键是控制器,它负责任务的分发请求,以及数据的返回。
449064-20171011190238215-1442802421.png
架构模型就如上面所示,不过在SpringMVC中,控制器有两种,一种是前端控制器,一种是应用控制器。
449064-20171011190243777-57419134.png
整体的流程是这样的:

  1. 用户发送请求,前端控制器统一接收;
  2. 然后根据不同的规则分发到对应的应用控制器,比如根据URL;
  3. 应用控制器在调用逻辑代码处理;
  4. 最后层层返回。

目前一般的公司,都是采用前后端分离的技术结构。

  1. 前端是Vue.js或者AngularJS再或者是JQuery,通过Http的方式发送到后端。
  2. 后端接收请求后按照一定的业务规则处理,然后把数据返回给前端。
  3. 前端通过JavaScript代码进行解析,浏览器渲染展现。

五、第五阶段 待完善


参考:https://yq.aliyun.com/articles/326529?utm_content=m_38755

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王小二(海阔天空)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值