发新话题
打印

【jsp】JSP高级编程(1)

【jsp】JSP高级编程(1)

第一章概述
1.1 Java技术
Java是一种简单易用、完全面向对象、具有平台无关性且安全可靠的主要面向Internet的开发工具。自从1995年正式问世以来,Java的快速发展已经让整个We b世界发生了翻天覆地的变化。

随着Java Servlet的推出, Java在电子商务方面开始崭露头角,最新的Java Server Page技术的推出,更是让Java成为基于We b的应用程序的首选开发工具。

要学习Java技术中的Java Server Page,Java基础是必不可少的,本书将在第2章为没有Java基础的读者简单讲解Java的基础语法和Java Beans等,它们是在学习JSP之前必须掌握的Java知识。这里,先回顾一下Java的发展历程,然后讲解几个后面将要用到的重要概念。

1.1.1 Java技术的发展
Java技术是由美国Sun公司倡导和推出的, Java技术包括Java语言和Java Media APIs 、
Security APIs、Management APIs、Java Applet、Java RMI 、Java Beans、Java OS、Java Servlet、
JDBC、JNDI、Enterprise JavaBeans等,下面是Java技术的发展简述。
1990年,Sun公司James Gosling领导的小组设计了一种平台独立的语言O a k,主要用于为各
种家用电器编写程序。
1995年1月,Oak 被改名为Java,1995年5月2 3日,S u n公司在Sun World ‘9 5上正式发布
Java和H o t Java浏览器。
1995年8月至1 2月,N e t s c a p e公司、Oracle公司、B o r l a n d公司、S G I公司、A d o b e公司、I B M
公司、AT & T公司、I n t e l公司获得Java许可证。
1996年1月,S u n公司宣布成立新的业务部门─Java S o f t部,以开发、销售并支持基于Java
技术的产品,由Alan Baratz任总裁。同时推出Java开发工具包JDK(Java Development Kit) 1.0,
为开发人员提供编制Java应用软件所需的工具。
1996年2月,S u n发布Java芯片系列,包括p i c o Java、M i c r o Java和U l t r a Java,并推出Java数据
库连接JDBC (Java Database Connectivity)。
1996年3月,S u n公司推出Java Wo r k S h o p。
1996年4月,M a c r o s o f t公司、S C O公司、苹果电脑公司( A p p l e )、N E C公司等获得Java许可证。
S u n公司宣布苹果电脑、H P、日立、I B M、微软、N o v e l l、S G I、S C O、Ta m d e m等公司将把Java
平台嵌入到其操作系统中。
第一部分JSP 入门
1996年5月,H P公司、S y b a s e公司获得Java许可证。北方电讯公司宣布把Java技术和Java微
处理器应用到其下一代电话机中的计划。5月2 9日, S u n公司在旧金山举行第一届Java O n e世界
Java开发者大会,业界人士踊跃参加。S u n公司在大会上推出一系列Java平台新技术。
1996年8月,Java Wo r k S h o p成为S u n通过互联网提供的第一个产品。
1996年9月,A d d i s o n - We s l e y和S u n推出Java虚拟机规范和Java类库。
1996年1 0月,德州仪器等公司获得Java许可证。S u n提前完成Java B e a n s规范并发布。发布第
一个Java JIT(Just-In-Ti m e )编译器,并打算在Java Wo r k S h o p和S o l a r i s操作系统中加入J I T。1 0月
2 9日,S u n发布Java企业计算技术,包括Java S t a t i o n网络计算机、6 5家公司发布的8 5个Java产品
和应用、7个新的Java培训课程和Java咨询服务、基于Java的S o l s t i c e互联网邮件软件、新的Java
开发者支持服务、演示HotJava Vi e w s、Java Tu t o r、完成Java Card API等。S u n宣布完成Java
Card API规范,这是智能卡使用的第一个开放A P I。Java Card规范将把Java能力赋予全世界的亿
万张智能卡。
1996年11月,I B M公司获得Java O S和H o t Java许可证。N o v e l l公司获得Java Wo r k S h o p许可证。
S u n和I B M宣布双方就提供Java化的商业解决方案达成一项广泛协议, I B M同意建立第一个Java
检验中心。
1996年1 2月,X e r o x等公司获得Java或Java O S许可证。S u n发布JDK 1.1、Java商贸工具包、
Java B e a n s开发包及一系列Java APIs。推出一个新的Java Server产品系列,其中包括Java We b
S e r v e r、Java NC Server和Java Server To o l k i t。S u n发布1 0 0 %纯Java计划,得到百家公司的支持。
1 9 9 7年1月,S A S等公司获得Java许可证。S u n交付完善的Java B e a n s开发包,这是在确定其
规范后不到8个月内完成的。
1 9 9 7年2月,S u n和A R M公司宣布同意使Java O S能运行在A R M公司的R I S C处理器架构上。
I n f o r m i x公司宣布在其Universal Server和其他数据库产品上支持JDK 1.1。N e t s c a p e公司宣布其
Netscape Communicator支持所有Java化的应用软件和核心A P I s。
1 9 9 7年3月,H P公司获得Java Wo r k S h o p许可证,用于H P - U X操作系统。西门子A G公司等获
得Java许可证。日立半导体公司、I n f o r m i x公司等获得Java O S许可证。N o v e l l公司获得Java
S t u d i o许可证。S u n发售JavaOS 1.0操作系统,这是一种在微处理器上运行Java环境的最小、最快
的方法,提供给S u n的Java O S许可证持有者使用。S u n发售HotJava Browser 1.0,这是一种Java浏
览环境,可以方便地按剪裁来编制专用的信息应用软件,如客户自助台和打上公司牌号的网络
应用软件。S u n推出JDK 1.1.1。
1 9 9 9年6月,Sun 发布JDK 1.3和Java Web Server 2.0。
1.1.2 JavaBeans
什么是Java B e a n s?Java B e a n s就是Java的可重用组件技术。A S P通过C O M来扩充复杂的功能,
如文件上载、发送e m a i l以及将业务处理或复杂计算分离出来成为独立可重复利用的模块。JSP通
过Java B e a n实现了同样的功能扩充。JSP 对于在Web 应用中集成JavaBean 组件提供了完善的支
持。这种支持不仅能缩短开发时间(可以直接利用经测试和可信任的已有组件,避免了重复开
发),也为JSP 应用带来了更多的可伸缩性。JavaBean 组件可以用来执行复杂的计算任务,或负
2第一部分JSP 入门

责与数据库的交互以及数据提取等。
在实际的JSP开发过程中,读者将会发现,和传统的A S P或PHP页面相比,JSP页面将会是非
常简洁的,由于Java B e a n s开发起来简单,又可以利用Java语言的强大功能,许多动态页面处理
过程实际上被封装到了Java B e a n s中。
1.1.3 JDBC
J D B C是用于执行S Q L语句的Java应用程序接口,由一组用Java语言编写的类与接口组成,
在JSP中将使用J D B C来访问数据库。J D B C是一种规范,它让各数据库厂商为Java程序员提供标
准的数据库访问类和接口,这样就使得独立于D B M S的Java应用程序的开发工具和产品成为可能。
一般的Java开发工具都带有J D B C - O D B C桥驱动程序,这样,只要是能够使用O D B C访问的数据
库系统,也就能够使用J D B C访问了。有趣的是,不同于O D B C是Open Database Connectivity的
简称,J D B C并不是Java Database Connecivity的简称,而是S U N的注册商标,至少官方说法是这
样的。
1.1.4 J2EE
电子商务和信息技术的快速发展以及对它们的需求给应用程序开发人员带来了新的压力。
必须以比以前更少的金钱、更少的资源来更快地设计、开发企业应用程序。
为了降低成本,并加快企业应用程序的设计和开发, J2EE 平台提供了一个基于组件的方法,
来设计、开发、装配及部署企业应用程序。J2EE 平台提供了多层的分布式的应用模型、组件再
用、一致化的安全模型以及灵活的事务控制。您不仅可以用比以前更快的速度向市场推出创造
性的客户解决方案,而且您的平台独立的、基于组件的J2EE 解决方案不会被束缚在任何一个厂
商的产品和API 上。
1. J2EE 规范定义了以下种类的组件
应用客户组件。
Enterprise JavaBeans 组件。
S e r v l e t及JavaServer Pages(JSP 页面)组件(也被称作Web 组件)。
Applet。
一个多层的分布式的应用模型意味着应用逻辑被根据功能划分成组件,并且可以在同一个
服务器或不同的服务器上安装组成J2EE 应用的这些不同的组件。一个应用组件应被安装在什么
地方,取决于该应用组件属于该多层的J2EE 环境中的哪一层。这些层是客户层、We b层、业务
层及企业信息系统层( EIS )等。
(1) 客户层
J2EE 应用可以是基于Web 的,也可以是不基于Web 的。在一个基于Web 的J2EE 应用中,
用户的浏览器在客户层中运行,并从一个We b服务器Web 层中的静态HTML 页面或由JSP
或Servlet 生成的动态HTML 页面。在一个不基于Web 的J2EE 应用程序中,一个独立客户程序不
运行在一个HTML 页面中,而是运行在其他一些基于网络的系统(比如手持设备或汽车电话)
中,Applet 程序,在客户层中运行,并在不经过Web 层的情况下访问Enterprise Beans。这个不
第一章概述3

基于Web 的客户层可能也包括一个JavaBeans 类来管理用户输入,并将该输入发送到在企业层中
运行的Enterprise Beans类来进行处理。根据J2EE 规范,JavaBeans 类不被视为组件。
为J2EE 平台编写的JavaBeans 类有实例变量和用于访问实例变量中的数据的“ get 和set 方
法”。以这种方式使用的JavaBeans 类在设计和实现上通常都是简单的,但是它们必须符合
JavaBeans 规范中列出的命名和设计约定。
(2) Web 层
J2EE Web 组件可以由JSP 页面、基于Web 的A p p l e t以及显示HTML 页面的S e r v l e t组成。调
用S e r v l e t或者JSP 页面的HTML 页面在应用程序组装时与Web 组件打包在一起。就像客户层一
样,Web 层可能包括一个JavaBeans 类来管理用户输入,并将输入发送到在业务层中运行的
Enterprise Beans 类来进行处理。运行在客户层的Web 组件依赖容器来支持诸如客户请求和响应
及Enterprise Bean 查询等。
(3) 业务层
作为解决或满足某个特定业务领域(比如银行、零售或金融业)需要的逻辑的业务代码由
运行在业务层的Enterprise Beans 来执行。一个Enterprise Bean 从客户程序处接收数据,对数据
进行处理(如果需要),再将数据发送到企业信息系统层存储起来。一个Enterprise Beans 还从存
储中检索数据,并将数据送回客户程序。运行在业务层的Enterprise Beans 依赖于容器来为诸如
事务、生命期、状态管理、多线程及资源存储池等提供通常都非常复杂的系统级代码。业务层
经常被称作Enterprise JavaBeans (EJB )层。业务层和Web 层一起构成了3 层J 2 E E应用的中间
层,而其他两层是客户层和企业信息系统层。
(4) 企业信息系统层
企业信息系统层运行企业信息系统软件,这层包括企业基础设施系统,例如企业资源计划
(E R P)、大型机事务处理( mainframe transactionprocessing )、数据库系统及其他遗留信息系统
(legacy informationsystems )。J2EE 应用组件因为某种原因( 例如访问数据库) 可能需要访问企
业信息系统。J2EE 平台的未来版本将支持Connector 架构,该架构是将J2EE 平台连接到企业信
息系统上的一个标准A P I。
(5) 查询服务
因为一个J2EE 应用程序的组件是单独运行的,并且往往在不同的设备上运行,因此,需要
一种能让客户层和Web 层代码查询并引用其他代码和资源的方法。客户层和Web 层代码使用
Java 命名和目录接口(JNDI )来查询用户定义的对象(例如Enterprise Beans )、环境条目(例
如一个数据库驱动器的位置)、企业信息系统层中用于查找资源的JDBC DataSource对象,以及
消息连接。
(6) 安全和事务管理
诸如安全和事务管理这样的应用行为可以在部署时在Web 和Enterprise Beans 组件上进行配
置。这个特征将应用逻辑从可能随装配而变化的配置设定中分开了。
J2EE 安全模型允许配置一个Web 或Enterprise Beans 组件,使系统资源只能由授权的用户访
问。例如,一个Web 组件可以被配置成提示输入用户名和密码。一个Enterprise Beans 组件可以
被配置成只让特定团体中的成员调用其某些方法。或者,一个Servlet 组件可以被配置成让某个
4第一部分JSP 入门

组织中的所有人都能访问其某些方法,同时只让该组织中的某些享有特权的人访问其中一些方
法。同样是该Servlet 组件,可以针对另外一个环境而被配置成让每个人都能访问其所有方法,
或者仅让选定的少数人访问其所有方法。
J2EE 事务模型使得能够在部署时定义构成一个单一事务的方法之间的关系,以使一个事务
中的所有方法被处理成一个单一的单元。这是我们所希望的,因为一个事务是一系列步骤,这
些步骤要么全部完成,要么全部取消。例如,一个Enterprise Beans 可能有一组方法,使我们可
以通过从第一个账户借出并存入第二个账户的方式而将钱从第一个账户转移到第二个账户。我
们希望全部的操作被作为一个单元对待,这样,如果在借出之后存入之前发生了故障,该借出
操作被取消。事务属性是在装配期间定义在一个组件上的。这使得能将来自多个应用组件的方
法归到一个事务中,这说明,我们可以轻易变更一个J2EE 应用程序中的应用组件,并重新指定
事务属性,而不必改变代码或重新编译。在设计应用组件时,要记住,尽管Enterprise Beans 有
一个可使应用组件的容器自动启动多步事务的机制,但是Applet 和应用的客户容器可能并不支
持这一点。然而, Applet 和应用客户容器总是能够调用支持这一点的一个Enterprise Beans。还
应当注意, JSP 页面和Servlet 没有被设计成是事务的,它们通常应当将事务工作交给一个
Enterprise Bean 来完成。然而,如果事务工作在一个JSP 页面或Servlet 中是必须的,那么此种
工作也应当是非常有限的。
(7) 可重用应用组件
J2EE 组件(Applet 、应用的客户、Enterprise Beans 、JSP 页面及Servlet )都被打包成模块,
并以Java Archive (JAR )文件的形式交付。一个模块由相关的组件、相关的文件及描述如何配
置组件的配置描述文件组成。例如,在组装过程中,一个HTML 页面和Servlet 被打包进一个模
块之中,该模块包含H T M L文件、Servlet 组件及相关的配置描述文件,并以一个Web ARchive
(WAR )文件的形式交付,该WAR 文件是一个带.war 扩展名的标准JAR 文件。模块的使用使得
利用相同组件中的某些组件来组装不同的J2EE 应用程序成为可能。例如,一个J2EE 应用程序的
Web 版可能有一个Enterprise Beans 组件,还有一个JSP 页面组件。该Enterprise Beans 组件可以
与一个应用客户组件结合,以生成该应用程序的非Web 版本。这不需要进行额外的编码,只是
一个装配和部署的问题。并且,可重用组件使得将应用开发和部署过程划分成由不同的角色来
完成成为可能,这样,不同的人或者公司就能完成封装和部署过程的不同部分。
2. J2EE 平台定义了如下角色:
(1) J2EE 产品提供商
设计并使J2EE 平台、API 和在J2EE 规范中定义的其他特征能被其他公司或人购得的公司。
(2) 应用组件提供商
创建用于J2EE 应用程序的Web 组件、Enterprise Beans 组件、Applet 或应用客户程序的公司
或个人。在装配过程中,应用组件文件、接口及类被打包进一个JAR 文件中。
(3) 应用程序装配商
从组件提供商获得应用组件JAR 文件,并将它们组装成一个J2EE 应用的Enterprise Archive
(E A R)文件的公司或个人,这种文件是一个带. e a r扩展名的标准文件。应用装配商提供与该应
用程序相关的整体信息,并使用验证工具来检验EAR 文件的内容是正确的。组装和部署信息存
第一章概述5

储在一个基于文本的配置描述文件中,此种文件使用XML 标记来标记该文本。应用装配商可以
使用一个能通过交互式选择来正确添加XML 标记的装配和配置工具来编辑该配置描述文件。
(4) 部署商
部署( d e p l e y)J2EE 应用程序的公司或个人。其职责包括设定事务控制、安全属性,并根
据应用组件提供商提供的指示来标明一个Enterprise Bean 是自己处理自身的存储,还是由一个
容器来处理等。部署涉及配置和安装。在配置过程中,部署商遵循应用组件提供商提供的指示
来解决外部依赖问题,定义安全设定,以及分配事务属性。在安装过程中,部署商将应用组件
安装到服务器上,并生成容器特定的类和接口。
(5) 系统管理员
配置并管理运行J2EE 应用程序的计算环境和网络基础设施,并监督运行环境的人员。
(6) 工具提供商
生产被组件提供商、装配商及部署商使用的用于进行开发、组装和打包的工具的公司或个
人。
(7) 设计用户界面和引擎
在为J2EE 应用程序设计用户界面和后端引擎时,需要决定让该程序是基于We b,还是不基
于We b。在做出这个决定时,我们可能希望考虑平台配置、速度、安全、网络流量和网络服
务。
例如,包含有用户界面并且经常被大量用户访问的一个Applet 可能需要花很长的时间才能
被下来,这让用户沮丧。然而,如果知道该A p p l e t要运行在一个公司的内部网内的受控环境
中,那么,在这种情况下,该Applet 将拥有一个完全可接受的速度。另一个考虑是,繁重
的处理应当在哪里执行。例如,如果客户程序在一个蜂窝电话或呼机中执行,服务器应当完成
尽量多的计算和数据处理,而客户程序只应显示结果就可以了。然而,设计在一个强大的台式
机平台上运行的大型财务分析系统则应当在客户机上完成其复杂计算。应用的客户程序和A p p l e t
用户界面通常都是用Swing API 创建的,该API 可从标准版Java 2平台中获得。Swing API 提供了
一整套GUI 组件(表格、树形结构、按钮等),这些组件可以被用来实现一种比用一个典型的
HTML 页面所能实现的更为交互的体验。Swing 也支持HTML 文本组件,这个组件可以被用来
显示来自一个服务器的响应。客户程序可以直接访问Enterprise Beans 层或企业信息系统层。但
应谨慎实现这种程序。绕过EJB 层的程序可以使用JDBC API 来访问一个关系型数据库,但应被
限制于对数据库表格进行维护等管理任务上。
(8) 设计基于Web 的应用程序
基于Web 的应用程序是基于浏览器的,并且,如果它们运行在Internet上,就可能被全世界
的人访问。当设计一个基于Web 的应用程序时,不仅需要决定用什么来处理内容和应用逻辑
(HTML 、XML 、JSP 页面及S e r v l e t),而且还应当考虑使该应用程序国际化。一个国际化的基
于Web 的应用程序向用户提供了选择一种语言,然后根据该选定语言加载应用的正文的方式。
对被支持的每种语言而言,应用正文都被存储在一个外部文件中,并且与另外一个文件的关键
词相对应。应用代码使用这些关键词及选定的语言来加载正确的文本。国际化API 还提供类来
根据选定的语言格式化日期和金钱。一旦制订了使应用程序国际化的细节,就可以决定用什么
6第一部分JSP 入门

来实现它了。总的来说,一个基于Web 的应用程序使用HTML 来显示数据; 用X M L来定义数据
以使其可被另一个程序读取并处理; 使用JSP 页面或S e r v l e t来管理用户与业务层或存储层之间的
数据流。
可以在J2EE 平台上实现的基于Web 的应用程序有四种。从简单到复杂排列,它们是:
B基本H T M L。
B带基本JSP 页面或Servlet 的H T M L。
B带Java Beans 类的JSP页面。
B将应用逻辑根据功能划分成区域的高度结构化的应用。
当设计一个基于Web 的应用程序时,需要决定用什么来建立它。如果是从建立一个简单的
应用程序开始着手,并且认为以后会给该应用程序添加功能,那么,设计就应当适应今后发展
的需要。
(9) 模型、视图和控制器架构
在基于组件的J2EE 平台充分内置了灵活性的情况下,剩下的问题可能是如何组织应用程序
以实现简单高效的应用程序升级和维护,以及如何让不懂程序代码的人员避开程序数据。答案
就在模型、视图和控制器架构( MVC )的使用之中。MVC 这样的架构是一个描述重现的问题
及其解决方案的设计范式,但每次问题重现时,解决方案都不会完全相同。
MVC 设计范式包括三种对象:模型( model )提供应用业务逻辑( Enterprise Beans 类);
视图( view )则是其在屏幕上的显示( HTML 页面、JSP 页面、Swing GUI ); 控制器则是
Servlet 、JavaBeans 或Session Beans 类,它用于管理用户与视图发生的交互。我们可以将控制
器想像成处在视图和数据之间,对视图如何与模型交互进行管理。通过使视图完全独立于控制
器和模型,就可以轻松替换前端客户程序。并且,通过将控制器和模型代码保持在视图之外,
那些不理解这些代码的人员就不能改变他们不应改变的东西。
将控制器和模型分开就可以在不影响模型的情况下改变控制器,也可以在不影响控制器的
情况下改变模型。例如,如果应用的前端是一个HTML 页面,HTML 专家就可以更新它。如果
使用一个JSP页面,将控制器的代码放到一个JavaBeans 或SessionBeans 类中,或使用动作标记
(action tags ),这样,JSP 页面就仅包含JSP 代码了。
本书将在第二部分中讲解如何使用J 2 E E来建立企业级的We b应用。
1.1.5 EJB
E J B就是前面说的Enterprise JavaBeans。E J B上层的分布式应用程序是基于对象组件模型的,
低层的事务服务使用了A P I技术。E J B技术简化了用J AVA语言编写的企业应用系统的开发、配置
和执行。E J B的体系结构规范由Sun Microsystems公司制定。
E J B技术定义了一组可重用的组件: Enterprise Beans。可以利用这些组件像搭积木一样你的
建立分布式应用程序。当你把代码写好之后,这些组件就被组合到特定的文件中去。每个文件
有一个或多个Enterprise Beans,在加上一些配置参数。最后,这些Enterprise Beans被配置到一
个装了E J B容器的平台上。客户能够通过这些B e a n s的Ho m e接口,定位到某个Be a n s,并产生这
个Be a n s的一个实例。这样,客户就能够调用B e a n s的应用方法和远程接口。
更多精彩//www.yqhc.net/bbs/Show.Asp?ID=180
辛苦了。。。

TOP

发新话题