
1.2 JSP简介
JSP技术是一种基于Java语言的动态Web应用开发技术,利用这一技术可以建立安全、跨平台的先进动态网页技术。JSP页面在执行时采用编译方式,编译生成Servlet文件。
1.2.1 JSP的特点与优势
JSP是针对Web开发技术的解决方案,自从JSP推出后,得到众多大公司的支持,如IBM、Oracle、Microsoft公司等,所以JSP迅速成为商业应用的服务器端Web技术。JSP的技术特点与优势主要体现在如下几个方面。
1.一次编写、到处运行
这是一个程序员的梦想,也是从前的程序员的噩梦,为了在不同的平台间运行,许多程序员一行行地重写代码。作为Java平台的一部分,JSP拥有Java编程语言“一次编写、到处运行”的特点。
2.系统的多平台支持
几乎所有平台都支持JSP。Windows NT中的IIS通过一个插件就能支持JSP;Tomcat等服务器都支持JSP。由于Tomcat广泛应用在Windows NT、UNIX和Linux上,因此,JSP有更广泛的运行平台。从一个平台移植到另一个平台,JSP甚至不用重新编译。
3.内容和显示分离
作为一种基于文本的、以显示为中心的开发技术,JSP以Java Servlet为基础,具备了Java Servlet的所有优点,并且在与一个JavaBean结合在一起时,提供了一种使内容和显示逻辑分开的简单方式。分开内容和显示逻辑使得更新页面外观的人员不必懂得Java代码,而更新JavaBean的人员也不必是网页设计人员,就可以用带有JavaBean的JSP页面来定义Web模板,以建立一个由具有相似外观的页面组成的网站。
4.生成可重用的组件
当今主流的Java Web应用程序开发通常基于MVC模式或者基于MVC模式的Web框架,MVC模式可以使模型、业务和视图很好地分开;JSP页面通过使用可重用的组件(JavaBean)来执行应用程序所要求的更为复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使这些组件为更多的使用者或客户团体使用。
5.健壮的存储管理和安全性
由于JSP页面的内置脚本语言是基于Java语言编写的,并且所有的JSP页面都被编译成Java Servlet,因此,JSP页面具有Java技术的所有优点,包括健壮的存储管理和安全性。
1.2.2 JSP的工作原理
JSP应用程序运行在服务器端。服务器端收到用户通过浏览器提交的请求后进行处理,再以HTML的形式返回给客户端,客户端得到的只是在浏览器中看到的静态网页。JSP的工作原理如图1-1所示。

图1-1 JSP的工作原理
所有的JSP应用程序在首次载入时都被编译成Servlet文件,然后再运行。这个工作主要由JSP引擎来完成。当第一次运行一个JSP页面时,JSP引擎要完成以下操作。
(1)当用户访问一个JSP页面时,JSP页面将被编译成Servlet文件(Java文件)。
(2)JSP引擎调用Java编译器,编译Servlet文件为可执行的代码文件(.class文件)。
(3)用Java虚拟机(JVM)解释执行.class文件,并将执行结果返回给服务器。
(4)服务器将执行结果以HTML格式发送给客户端的浏览器。
由于一个JSP页面在第一次被访问时要经过编译生成Servlet文件、Servlet编译和执行.class文件这几个步骤,所以客户端得到响应所需要的时间比较长。当该页面再次被访问时,它对应的.class文件已经生成,不需要再次翻译和编译,JSP引擎可以直接执行.class文件,因此,JSP页面的访问速度会大大提高。
1.2.3 JSP的两种体系结构
早期,Sun公司提出了两种使用JSP技术开发Web应用程序的方式。
1.JSP Model 1
在JSP Model 1体系中,JSP页面独自响应请求并将处理结果返回客户,如图1-2所示。这里仍然存在显示与内容的分离,因为所有的数据存取都是由JavaBean来完成的。尽管JSP Model 1体系十分适合简单应用的需要,它却不能满足复杂的大型Java Web应用程序需要。不加选择地随意运用JSP Model 1,会导致JSP页内被嵌入大量的脚本片段或Java代码。尽管这对于Java程序员来说可能不是什么大问题,但如果JSP页面是由网页设计人员开发并维护的,这就确实是个问题了。从根本上讲,将导致角色定义不清和职责分配不明,给项目管理带来不必要的麻烦。

图1-2 JSP Model 1模型结构图
2.JSP Model 2
JSP Model 2体系结构是一种把JSP与Servlet联合使用来实现动态内容服务的方法,如图1-3所示。它集成了两种技术各自的优点,用JSP生成表示层(View)的内容,让Servlet完成深层次的处理任务。Servlet充当控制器(Controller)的角色,负责管理对请求的处理,创建JSP页面需要使用的JavaBean和对象,同时根据用户的动作决定把哪个JSP页面传给请求者。在JSP页面内没有处理逻辑,它仅负责检索原先由Servlet创建的对象或者JavaBean,从Servlet中提取动态内容插入静态模板。分离了显示和内容,明确了角色的定义以及实现了开发者与网页设计者的分离。项目越复杂,使用JSP Model 2体系结构的优势就越突出。

图1-3 JSP Model 2模型结构图