【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 文件的内容是正确的。组装和部署信息存