5.2.2 JSP工作原理

5.2.2 JSP工作原理

1.技术架构

由JSP技术开发的程序的网络应用体系架构都是B/S的3层结构,如图5-1所示。

(1)客户端浏览器

数据显示层位于客户端浏览器上,负责用户数据的输入和显示界面。

(2)Web应用服务器

逻辑计算层位于Web应用服务器上,负责接收客户请求进行数据计算,并把结果返回给客户。

Web应用服务器是专用于部署Web应用的中间层系统软件,由JSP引擎、Servlet引擎和Web服务器组成。

Web服务器是一种请求-响应模式的服务器,提供Web信息浏览服务,处理HTTP请求。客户端向服务器发送请求,服务器收到请求后进行相应的处理,并将结果返回客户端。它们之间的通信协议是HTTP。

JSP引擎和Servlet引擎是可以提供JSP和Servlet运行支持并对其生存周期进行管理的系统级实体,为Web应用服务器提供服务。引擎也被称为容器。JSP引擎的功能是当JSP页面请求到达服务器时,将JSP页面转换编译为字节码文件并保存。而Servlet引擎负责为Servlet提供运行时环境,对JSP页面转换编译的结果进行管理,并将其载入Java虚拟机运行,以处理客户端的请求,并将结果返回。JSP引擎通常架构在Servlet引擎之上,其本身就是个Servlet程序。

(3)数据库服务器

数据处理层则位于数据库服务器上,负责数据库处理。常见的数据库服务器包括SQL(Structured Query Language)Server、MySQL和Oracle。

2.处理流程

当浏览器向服务器发出页面请求且该页面是第1次被请求时,由JSP引擎首先截获对JSP页面的请求,将JSP页面转换成一个Servlet程序,再编译生成字节码文件。这一阶段被称作翻译阶段。然后Servlet引擎通过执行该字节码文件处理客户的请求,生成响应。这一阶段被称作请求处理阶段。当这个JSP页面再次被请求执行时,若页面没有进行任何改动,后续请求将直接进入请求处理阶段,引擎将直接执行这个字节码文件来响应客户。如果被请求的页面经过修改,它会在进入请求处理阶段前再次通过翻译阶段,即服务器会重新编译这个文件,然后执行。

JSP的具体处理过程如图5-2所示。

图5-1 JSP技术支持的架构

图5-2 JSP的处理流程

3.JSP开发模式

JSP开发模式主要有以下3种。

(1)单纯的JSP页面编程

单纯的JSP页面编程模式通过应用JSP中的脚本元素,直接在JSP页面中实现各种功能。但这会使大部分的程序代码与HTML元素混淆在一起,给程序的维护和调试带来困难,整个程序的逻辑结构也显得非常混乱。这样的模式是无法应用到实际的大型、中型甚至小型的Web应用程序开发中的。

(2)JSP+JavaBean编程

这种模式利用JavaBean技术封装了常用的业务逻辑,如对数据库的操作、用户登录等,再在JSP页面中通过动作元素来调用这些组件,执行业务逻辑。依此模式编出的JSP页面具有较清晰的程序结构:JSP负责部分流程的控制和页面的显示,JavaBean用于业务逻辑的处理。该模式是JSP程序开发的经典模式之一,适合小型或中型网站的开发。

该模式对客户端请求进行处理的过程如下。用户通过客户端浏览器向Web应用服务器发送请求,服务器接收用户请求后调用相应的JSP页面。JSP页面中的JavaBean组件被调用执行,一些JavaBean组件用于对数据库的访问,还有一些JavaBean组件处理其他业务逻辑。然后执行的结果将被返回,最后由服务器将最终的结果返回给客户端浏览器进行显示,如图5-3所示。

图5-3 JSP+JavaBean编程过程

(3)JSP+Servlet+JavaBean编程

这一模式遵循了模型-视图-控制器(MVC,Model-View-Controller)设计模式。MVC是一个抽象的设计概念,将待开发的应用程序分解为3个独立的部分:模型(Model)、视图(View)和控制器(Controller)。这种编程模式在原有的JSP+JavaBean设计模式的基础上加入Servlet负责程序的流程控制,JavaBean组件实现业务逻辑,JSP仅用于页面的显示。这样可以避免JSP+JavaBean模式中JSP既要负责流程控制,又要负责页面显示的情况,使程序中的层次关系更清晰,各组件的分工也更为明确。