第2章 《操作系统》课程网站技术概述
本章将对开发本网站系统要用到的技术进行深入的分析,阐述Java,Servlet,JSP,CSS等技术的含义、特点、优势及其开发的关键技术。
2.1 Java理论基础
Java是一种简单的、面向对象的、分布式的、健壮的、安全的、结构中立的、可移植的、性能很优异的、多线程的、动态的语言。
(1)简单
Java的风格类似于C++,并且摒弃了C++中容易引发程序错误的地方,如指针和内存管理。 此外Java提供了丰富的类库。
(2)面向对象
面向对象可以说是Java最重要的特性。Java语言的设计完全是面向对象的。Java支持静态和动态风格的代码继承及重用。
(3)分布式
Java包括一个支持HTTP和FTP等基于TCP/IP协议的子库。因此,Java应用程序可凭借URL打开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。
(4)健壮
Java致力于检查程序在编译和运行时的错误。Java自己操纵内存减少了内存出错的可能性。Java提供Null指针检测数组边界、检测异常出口、字节代码校验。
(5)安全
Java的安全性可从两个方面得到保证。一方面,在Java语言里,像指针和释放内存等C++功能被删除,避免了非法内存操作。另一方面,当Java用来创建浏览器时,语言功能和浏览器本身提供的功能结合起来,使它更安全。
(6)结构中立
为了建立Java作为网络的一个整体,Java将它的程序编译成一种结构中立的中间文件格式。只要有Java运行系统的机器都能执行这种中间代码。Java源程序被编译成一种高层次的与机器无关的byte-code格式语言,这种语言被设计在虚拟机上运行,由机器相关的运行调试器实现执行。
(7)可移植的
Java的可移植性一直是Java程序设计师们的精神指标,也是Java之所以能够受到程
4
序设计师们喜爱的原因之一,最大的功臣就是JVM的技术。Java编译器产生的目标代码是针对一种并不存在的CPU--JAVA虚拟机(Java Virtual Machine),而不是某一实际的CPU。Java虚拟机能掩盖不同CPU之间的差别,使J-Code能运行于任何具有JAVA虚拟机的机器上。
(8)高性能
Java可以在运行时直接将目标代码翻译成机器指令。Sun用直接解释器一秒钟内可调用300,000个过程。翻译目标代码的速度与C/C++的性能没什么区别。
(9)多线程
Java支持多线程,多线程功能使得在一个程序里可同时执行多个小任务。线程,有时也称小进程,是一个大进程里分出来的小的独立的进程。
(10)动态
Java的动态特性是其面向对象设计方法的发展。它允许程序动态地装入运行过程中所需要的类,这是C++语言进行面向对象程序设计所无法实现的。Java编译器不是将对实例变量和成员函数的引用编译为数值引用,而是将符号引用信息在字节码中保存下传递给解释器,再由解释器在完成动态连接类后,将符号引用信息转换为数值偏移量。
2.2 Servlet简介
2.2.1 什么是Servlet
Servlet是一种独立于平台和协议的服务器端的Java应用程序,可以生成动态的Web页面。 它担当Web浏览器或其他HTTP客户程序发出请求,与HTTP服务器上的数据库或应用程序之间的中间层。Servlet是位于Web 服务器内部的服务器端的Java应用程序,与传统的从命令行启动的Java应用程序不同,Servlet由Web服务器进行加载,该Web服务器必须包含支持Servlet的Java虚拟机。 2.2.2 Servlet技术的特点
Servlet带给开发人员的最大好处是它可以处理客户端传来的HTTP请求,并返回一个响应。Servlet是一个Java的类,Java语言能实现的功能,Servlet基本上都能实现。Servlet有以下优势。
(1) 可移植性 (2) 功能强大 (3) 安全
5
(4) 简洁 (5) 集成 (6) 模块化
(7) 扩展性和灵活性 (8) 高效耐久 2.2.3 Servlet的生命周期
Servlet生命周期定义了一个Servlet如何被加载,初始化,以及它怎样接收请求,
响应请求,提供服务,Servlet生命周期如图2-1所示。
不存在Servlet实例 结束Servlet对应的destory()方法 容器开始装载Servlet 存在Servlet实例 初始化Servlet对应init()方法 调用Servlet对应的service()方法 图2-1 Servlet的生命周期
2.3 JSP技术简介
2.3.1 JSP的含义
JSP的全称是Java Server Page,JSP是由Sun Microsystems公司倡导,许多公司参与一起建立的一种动态网页技术标准。是结合markup(HTML或XML)和Java代码来处理的一种动态页面。第一页第一次被调用的时候,通过JSP引擎自动编译成Servlet。然后执行,以后每次调用时,执行编译过的Servlet。Java是JSP技术的基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成。JSP具备了Java技术的简单易用,完全面向对象,具有平台无关性且安全可靠,主要面向Internet的所有特点。Web应用的功能可以分为多个明确定义公共接口的组件,通过JSP将它们结合再一起。在选择本系统的开发语言时,作了非常全面的思考。
6
2.3.2 JSP的特点
(1)将内容的生成和显示进行分离
用JSP技术,Web页面开发人员可以使用HTML标识来设计和格式化最终页面,并使用JSP标识或者小脚本来生成页面上的动态内容(内容是根据请求变化的,比如说请求用户信息或者特定的属性值的变化等)。生成内容的逻辑被封装在标识和JavaBeans组件中,并且捆绑在脚本中,所有的脚本在服务器端运行。由于核心逻辑被封装在标识和JavaBeans中,所以Web管理人员和页面设计者,能够编辑和使用JSP页面,而不影响内容的生成。在服务器端,JSP引擎解释JSP标识和脚本,生成所请求的内容(例如,通过访问JavaBeans组件,使用JDBC技术访问数据库或者包含文件),并且将结果以HTML页面的形式发送回浏览器。这既有助于作者保护自己的代码,又能保证任何基于HTML的Web浏览器的完全可用性。
(2)可重用组件
绝大多数JSP页面依赖于可重用的、跨平台的组件来执行应用程序所要求的复杂的处理。开发人员能够共享和交换执行普通操作的组件,或者使得这些组件为更多的使用者和客户团体所使用。基于组件的方法加速了总体开发过程,并且使得各种组织在他们现有的技能和优化结果的开发努力中得到平衡。
(3)采用标识
Web页面开发人员不会都是熟悉脚本语言的编程人员。JSP技术封装了许多功能,这些功能是在易用的、与JSP相关的XML标识中进行动态内容生成所需要的。标准的JSP标识能够访问和实例化JavaBeans组件,设置或者检索组件属性,下载Applet,以及执行用其他方法更难于编码和耗时的功能。
(4)适应平台
几乎所有平台都支持Java,JSP和JavaBeans几乎可以在所有平台下通行无阻。从一个平台移植到另外一个平台,JSP和JavaBeans甚至不用重新编译,因为Java字节码都是标准的与平台无关的。
(5)数据库连接
Java中连接数据库的技术是JDBC,Java程序通过JDBC驱动程序与数据库相连,执行查询、提取数据等操作。Sun公司还开发了JDBC-ODBC bridge,利用此技术Java程序可以访问带有ODBC驱动程序的数据库,目前大多数数据库系统都带有ODBC驱动程序,所以Java程序能访问诸如Oracle、Sybase、MS SQL Server和MS Access等数据库。
7
(6)JSP的扩展性
通过开发标识库,JSP技术可以进一步扩展。第三方开发人员和其他员可以为常用功能创建自己的标识库。这使得Web页面开发人员能够使用熟悉的工和如同标识一样的执行特定功能的构件来进行工作。
(7)JSP技术的整合性
JSP技术很容易整合到多种应用体系结构中,以利用现存的工具和技巧并且能扩展到支持企业级的分布式应用中。作为采用Java技术家族的一部分,以及Java EE(企业版体系结构)的一个组成部分,JSP技术能够支持高度复杂的基于Web的应用。由于JSP页面的内置脚本语言是基于Java的,而且所有的JSP页面都被编译成为Java Servlet,所以JSP页面具有Java技术的所有好处,包括健壮的存储管理和安全性。作为Java平台的一部分,JSP拥有Java编程语言“一次编写,各处运行”的特点。
(8)JSP的应用模型
利用JSP技术,动态信息由JSP页面来表现,JSP页面由安装在Web服务器或者使用JSP的应用服务器上的JSP引擎执行。JSP引擎接受客户端对JSP页面的请求,并且生成JSP页面作为对客户端的响应。
(9)Java的扩展
JSP页面通常被编译成为Java Servlet,这是一个标准的Java扩展。页面开发人员能够访问全部的Java应用环境,以利用Java技术的扩展性和可移植性。当JSP页面第一次被调用时,如果它还不存在,就会被编译成为一个Java Servlet类,并且存储在服务器的内存中。
(10)JSP的灵活性
JSP页面可以包含在多种不同的应用体系结构或者模型中,可以用于由于同协议、组件和格式所组成的联合体中。基于JSP的动态信息发布技术是一个开放的、可扩展的建立动态Web页面的标准。 2.3.3 JSP运行机制
所有的JSP程序在首次载入时都被翻译成Servlet文件,然后在运行,这个工作主要有JSP引擎来完成。当第一次运行一个JSP页面时,JSP引擎会完成以下操作: 将JSP文件翻译成Servlet文件(以.Java为后缀),它是一个完整的Java应用程序。 JSP引擎调用Java编译器编译Servlet文件得到可执行的代码文件(以.class为后缀)。 JSP引擎调用Java虚拟机解释执行class文件,并将运行结果返回给客户端浏览器。
8