java后端开发(二):web开发历史解读

前言

  为什么要说发展历史呢?了解发展历史,能够更好的拥有全局视野,也能对当前使用的技术有更深的了解。
  我认为web发展历史有两个分水岭,一个是从静态页面转变为动态页面,一个是从传统的动态web开发模式转为前后端分离模式。技术都围绕着这两个分水岭来发展演变。下面就从这两个方面加以说明。

从静态页面到动态页面

静态

  文章(一)中说明了浏览器就是网站的运行环境,浏览器解析网站的代码,然后给用户呈现出代码设计者想要体现的界面。这里的代码可以简单认为是 HTML 这种语言,设计者通过 HTML 来告诉浏览器该页面的结构是什么、内容是什么。所以服务器上存放包含 HTML 语言的文件即可。然后浏览器从服务器端请求到该文件后,即可解析并展现。因为文件内容是确定的,所以只能展示静态页面,就和一幅图片一样。所以每个用户打开网站看到的内容一模一样

动态

  那么如何使网站内容可变化呢?这就引出了动态页面的发展过程。其实分析一下就知道,总共两块可以下手:一是服务器根据不同的情况返回不同的页面;二是浏览器打开的页面根据不同的请求结果修改对应的地方。

从服务器返回不同的页面

  为什么要返回不同的页面呢?因为要想引入用户系统等,必须有数据库的配合,也就是前面几篇文章写过的。不同用户登录上来看到的个人信息肯定是不同的。而且也是大势所趋,动态网站更受用户的欢迎,功能也更加丰富。

CGI

  CGI是一种通用标准,它定义了作为一个中间层所需要实现的功能。这个中间层的作用是:接收服务器的请求,去和数据库/文件系统等进行交互,然后将得到的数据写在页面中并进行返回。所以服务器相当在浏览器与中间层之间进行转发操作。所有具有标准输入输出功能的语言都可以按照 CGI 标准来开发中间层,当时编程语言的发展,可以实现CGI接口的一般有perl,C,shell等。

servlet

  CGI固然能够实现动态页面的需求,但是CGI有许多不足,不安全并且效率低下。而当时基于 JAVA 语言的 servlet 的出现改善了CGI的不足,servlet 工作原理和CGI基本类似,但是更加高性能可靠。

JSP

  但是servlet开发起来太复杂。此时借鉴 ASP 等技术又开发了 JSP 这种技术。JSP 是能够在静态HTML页面中嵌入动态JAVA代码的技术。虽然JSP 能实现的 servlet 也都能实现,但是利用 JSP 编写静态页面更加方便,而不必在程序中输出静态的 HTML 。更加关键的是,JSP 使得静态页面和动态内容分离,也为以后的 MVC 思想做了准备。
  实际上浏览器访问服务器的 .jsp 页面时(页面中包括了HTML代码和JAVA代码),服务器端会首先将 JSP 页面编译成servlet ,由 servlet 把最终生成的页面内容返回给服务器,从而返回到浏览器中。

servlet升级

  直接将java 代码嵌入到 HTML 中容易造成混乱。所以 servlet 升级后倡导 MVC 的思想:将某些java代码封装在JSP标签中,然后JSP页面作为 V (view)层,只负责网站视图的处理;servlet 作为 C (Controller)层来负责一部分业务逻辑和控制;M (model) 作为数据层来负责组织数据。具体 MVC 思想可以自行搜索查阅。

浏览器根据请求结果修改部分页面

  浏览器之所以能够修改部分页面,是因为 Ajax (Asynchronous JavaScript and XML)技术的出现,这种技术能够动态改变局部页面的内容。
  请求结果又有两种情况,一种是返回部分页面的 html 代码,一种是不返回界面代码,而是返回结构化数据。

请求结果是html

  基于 Ajax 技术,服务端可以只返回部分 HTMl ,即可动态刷新页面内容。

请求结果是结构化数据

  随着智能手机的出现,开发一款产品需要APP版本和web版本,那么服务器再返回html页面就不合适了。
  因为 Ajax 的普及,所以 javascript (js)这门语言也用的越来越多,而且 js 天然支持 JSON 这种结构化数据,JSON 也足够轻量方便,所以越来越多的应用变成了服务器响应不再是 html ,客户端和服务器交互都是通过 JSON 这种格式来进行交互。

从传统模式到前后端分离

  我们这里说的传统模式是在动态web开发中的传统模式。即前后端代码一般在同一个工程下面,前端开发界面时还需要把整个工程导入进来,部署麻烦,开发麻烦。
  并且,由于 JSON 格式的流行,前后端之间的交互有很多都采用 JSON ,大家自然而然的想要将前后端分离开来。前后端单独部署,并行开发,互不影响。所以 前后端分离RESTful 风格的API就流行起来。
  前端负责页面的设计、路由、展示等等,后端对外提供(类)RESTful 风格的API,以供前端程序调用。前后端之间采用HTTP协议进行通信,协议的内容格式采用 JSON 这种格式,API的设计风格采用 RESTful 风格。
  简单情况下,前端部署在 nginx 上,后端部署在 tomcat 上,前后端分别开发,互不影响。前端可以利用 mock 工具进行假数据测试,来模拟后端的API响应。而后端采用 postman 这种HTTP客户端来模拟前端的调用。独立开发,独立测试。双方职责更加清晰。

动静分离和前后端分离

  二者不是同一种概念。动静分离指的是将 html, css , js 等这种静态的资源放在 web服务器中 (比如nginx),而将和数据库交互的后端程序放在 web应用服务器 中(比如tomcat)。这样子做的原因是提高后端服务器的性能,同时也提高静态资源的响应能力等。不论是否是前后端分离,都可以照这样子去部署。

总结

  而我们现在采用的就是基本的前后端分离模式,前端采用 Vue 技术栈开发,后端采用 Spring 技术栈开发。了解了什么是web开发,以及web开发的历史后,相信你心中已经有了深刻的影响。下面就进入真正的后端开发系列–从框架说起

推荐阅读

  可自行搜索 前后端分离动静分离JSON 等文中提到的技术点

  • 11
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

oatlmy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值