JavaWeb发展史(一)

前言

作为一个java小白,学web方向十分痛苦,知识点很多,很杂,比如前端有html、css、JavaScript、JQuery,前端框架bootstrap等,后端的Servlet、jsp、EL、JSTL,数据库方向有JDBC、MySQL,框架有MyBatis、spring、springmvc、springboot...光是这些五花八门的名称就搞得我心态爆炸,如果不写篇文章来梳理梳理就被这东西搞疯了。

我们可以按照web开发的历史进程,来回顾和web大哥一起发展的帮派小弟JavaWeb。

古代时期--静态页面时代

互联网刚刚发展的时候,就像人类文明诞生前夕一样,刀耕火种

那时的网站都相当简陋,功能简单。网站都是静态的。即事先编辑好,只能浏览页面,没有人机交互,不能动态上传删除,只能程序员手动添加。

近代时期--CGI时代

新的技术CGI诞生,结束了只有静态网页的时代。

问题产生:怎么把静态网页变成动态网页?

我们都知道,动画其实就是25幅页面,连续播放,利用人眼的视觉暂留效应,将一幅幅图片组合成动画。
同理,动态页面也是如此,如果服务器能对浏览器发来的请求在服务器端一一处理,并返回给浏览器,那么网页就动起来了!

什么是CGI?

CGI全称是通用网关接口(Common Gateway Interface),是一个可执行的程序或者可运行的脚本,几乎所有的语言都能写CGI,像Python、C。

CGI工作原理:

浏览器发送一个CGI请求后,服务器会启动一个进程运行CGI程序或脚本,由CGI来处理数据,并将结果返回给服务器,服务器再将结果返回给浏览器

CGI的特点

1.由Http Server唤起。常见的Http Server如Apache,Lighttpd,nginx都支持CGI
2.CGI单独启动进程,并且每次调用都会重新启动进程
3.可以用任何语言编写,只要该语言支持标准输入、输出和环境变量

CGI的缺点

1.消耗资源多:每个请求都会启动一个CGI进行,进程消耗资源15M内存的话,同时到达100个请求的话,就会占用1.5G内存。如果请求更多,资源消耗是不可想象的。
2.慢:启动进程本身就慢。每次启动进程都需要重新初始化数据结构等,会变得更慢。

现代时期-Servlet时代

在CGI繁荣发展的时代,Java还没有发展起来。当Java开始参与历史,引领潮流的时候,也必然会借鉴和改进之前的技术和思想。

鉴于CGI的一些缺点,Java Web在开始设计的时候就想出了一种解决方案 -- Servlet

什么是Servlet?

本质上是一段无法独立运行的Java程序,必须运行在服务器中,由服务器调用执行。作用是对服务器接收过来的请求进行处理,并对浏览器返回结果。

Servlet的工作原理:

Servlet的特点

  1. CGI每个请求启动一个进程,而Servlet是更轻量的线程。
  2. CGI每个进程都需要初始化,Servlet只初始化一次实例就行。
  3. Servlet依托于Java语言,具有很好的跨平台型。CGI根据语言的不同,跨平台型不同。
  4. CGI与数据库连接需要重连,Servlet可以使用数据库连接池。
  5. Java有丰富的、各种各样的库函数。

Servlet的缺点

不难发现,html代码是写在Java代码中,对于前端人员,难以开发和修改,此时,JSP粉墨登场

Servlet的好兄弟JSP

Servlet其实是在java代码中写HTML代码,换个思路,我们也可以在HTML代码中写Java代码,这就是JSP的特性。

什么是JSP?

JSP,全称Java Server Pages,功能就是能在Html中写Java代码,其本质上是一个Servlet程序。

JSP的工作原理

  1. 您的浏览器发送一个HTTP请求给服务器。
  2. Web服务器识别出这是一个对JSP网页的请求,并且将该请求传递给JSP引擎。通过使用URL或者.jsp文件来完成。
  3. JSP引擎从磁盘中载入JSP文件,然后将它们转化为servlet。这种转化只是简单地将所有模板文本改用println()语句,并且将所有的JSP元素转化成Java代码。
  4. JSP引擎将servlet编译成可执行类,并且将原始请求传递给servlet引擎。
  5. Web服务器的某组件将会调用servlet引擎,然后载入并执行servlet类。在执行过程中,servlet产生HTML格式的输出并将其内嵌于HTTP response中上交给Web服务器。
  6. Web服务器以静态HTML网页的形式将HTTP response返回到您的浏览器中。
  7. 最终,Web浏览器接收HTTP response中动态产生的静态HTML网页,由静到动最终实现。

用一句话来讲:每个JSP都最终会变成对应的Servlet执行

JSP的缺点

在HTML代码中写Java代码,方便了前端人员,但是苦了后端人员。因此,单纯使用JSP,开发效率依旧不高。

我们结合Servlet和JS的功能来看,发现无论是JSP还是Servlet,其中都能书写Html和Java代码。这样功能岂不是重复了吗?

从功能的角度看,两者的功能是重复了,但是从两者的特性看,Servlet非常适合逻辑处理(因为它是Java代码),而JSP非常适合页面展示,(因为主要是html代码)
结合两者的优缺点,诞生了Web开发中最重要的架构设计模式:MVC

当代时期-MVC模式

MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller):

  1. Controller——负责转发请求,对请求进行处理
  2. View——负责界面显示
  3. Model——业务功能编写(例如算法实现)、数据库设计以及数据存取操作实现

工作原理:

  1. 请求发来后,会首先经过Controller层处理
  2. 根据请求进行处理,返回的结果封装成对象Model
  3. 将Model传递给JSP,然后JSP负责取出数据展示就够了

因此,后端开发人员只负责编写Servlet,前端人员负责JSP,极大提升了开发效率。

你可能感兴趣的:(java,前端,后端)