Sun的Java 2 Enterprise Edition(J2EE)平台已经成为使用最广泛的Web程序设计技术,最近几年,J2EE Web程序的开发已经成为信息系统的关键。
Sun的Java 2 Enterprise Edition(J2EE)平台已经成为使用最广泛的Web程序设计技术,最近几年,J2EE Web程序的开发已经成为信息系统的关键。
J2EE1.4的多层Web框架技术 J2EE为多层Web应用系统提供了容器平台。在这里,容器概念实际是指应用服务器提供的特定功能的软件模块,用户所开发的程序构件要在容器内运行,构件和容器的关系有些像计算机插件和主板的关系;程序构件在部署时被安装在容器里,容器是能提供基本功能的底层平台,它们之间通过接口进行通信;一般Web程序开发者只要开发出满足其需要的程序构件并能安装在容器中就够了,程序构件的安装过程包括设置各个构件在J2EE应用服务器中的参数以及设置J2EE应用服务器本身。这些设置决定了在底层由J2EE服务器提供的多种服务(譬如安全、交易管理、JNDI查寻和远程调用等)。
J2EE应用框架使同样的程序构件在一个Web程序之内能够根据其部署的方式实现不同的功能。例如,同样的Enterprise JavaBean可以采用不同等级的数据库数据存取安全设置,J2EE容器还负责管理某些基本的服务,譬如构件的生命周期、数据库连接资源共享、数据持久性(data persistency)。
图1 多层次结构Web程序框架
正如图1所描述的,J2EE 1.4应用平台由以下几种类型的程序容器(container)组成:Enterprise JavaBeans(EJB)容器负责所有EJB的运行,EJB根据功能可以分为session bean(通常称为会话bean,称之为会话期间bean更确切),entity bean(实体 bean),message-drivenbean(消息驱动bean)。这一层主要负责数据处理以及和数据库或其他Java程序的通信,它对应多层结构的业务层和数据访问层,Web容器管理所有JSP,JSTL和servlet等Web构件的运行,这些构件主要负责程序和Web的通信,这一层对应多层结构中的表示层。应用客户端容器负责所有Web程序在客户端构件的运行;Applet容器可以看作特殊的应用客户端容器。它负责在Web浏览器和Java插件(Java Plug-in)上运行Java Applet程序(Applet是一种简化并具有安全保护的Java小程序),应用客户端容器和Applet程序容器基本对应多层结构中的用户接口层;每种容器内都使用相关的各种Java Web编程技术,这些技术包括三类:
J2EE各种不同的应用构件(如Servlet,JSP,EJB),它们构成了应用的主体。
J2EE平台提供的应用服务(如JDBC,JTS,JNDI),这些服务保证并促进构件的良好运行。
J2EE的应用通信技术(如RMI,JMS,JavaMail)在平台底层实现机器和程序之间的信息传递。
1、构件技术 "构件"这一概念是指在应用程序中能发挥特定功能的软件单位。简单地说,就是几种特定的Java程序,这些程序有固定的格式和编写方法,它们的功能和使用方式在一定程度上被标准化了;最基本的Java构件是在Java标准版(Java 2 Standard Edition)中的JavaBean,它是按照特定格式编写的Java类文件。JavaBeans包括实例变量(Instance Variable()和get(),set()的方法来访问实例变量的数据。这种格式大大简化了程序设计。J2EE的构件在JavaBeans基础上进行了拓展。由于Web编程比较复杂,J2EE提供了更多应用构件,主要包括三类:客户端的Applet和程序客户;Web容器内的JSP,Servlet,JSTL等构件;企业Java Beans容器内的EJB构件和资源连接构件。
1)J2EE的客户 J2EE Web应用可以和多种客户端程序连接。这些客户主要包括以下部分:Web客户端包括动态生成的网页(包含各种各样的类型标注语,如HTML,XML等),以及在客户机上运行的Web浏览器。Web浏览器(如Internet Explorer,Netscape)以标准格式显示从服务器传递来的网页。不管J2EE应用服务器早怎样生成这些网页的,它们被传递给浏览器时已经是HTML或XML格式,浏览器只是正确地显示给用户。所以,有时Web客户端被称为"瘦客户",瘦客户不承担复杂的数据检索和计算任务,这些复杂而耗时的操作在J2EE服务器端Web容器和EJB容器内进行。这样保证了"客户-服务器"结构的优势,降低了Web流量。
Applet是基于Java的小型客户端构件。它一般在Web浏览器上运行,通过HTTP协议和服务器进行通信。从服务器传给浏览器的网页可能包括嵌入的Applet程序;这些Applet程序在浏览器所安装的Java虚拟机(Java virtual machine)上执行。这要求客户机的浏览器事先安装Java Plug-in和有关安全许可文件。
Web客户端程序和Applet各有优点。Web客户程序(就是用网页)更简单和普遍,因为它不需要安装Java Plug-In,也无须操心客户程序运行的安全问题。并且,Web客户程序使编程和网页设计分离,这样保证了程序设计的模块化。会作漂亮的网页的人员因而不需要了解Java编程语法。Applet更适合复杂的客户界面。
由于Applet更接近Java编程,许多专业人员更擅长利用Java丰富的功能(API)来进行客户端编程。如果使用得法,Applet界面会更快速和灵活。比如,美国一家非常受欢迎的股票交易公司Datek就推出了使用Applet为界面的网上股票交易工具,无须用户点击图标和按键,它能够随时更新股票的交易分析数据和曲线。
客户应用程序是指在客户机上运行的J2EE程序。它为用户提供了丰富的界面(如JavaSwing,AWT)和复杂的操作。客户应用程序直接访问在服务器EJB容器内的EJB程序。当然,J2EE客户应用程序也可像Applet客户那样以HTTP连接和服务器的Servlet通信。与Applet不同的是,客户应用程甀不同等??据????取安全设置,J2EE容器还负责管理某些基本的服务,譬如构件的生命周期、数据库连接资源共享、数据持久性(data persistency)。
序一般需要在客户端进行安装,而Applet是在Web上下载,无须专门安装。一般来说,客户应用程序适合在企业内部网中使用,Applet适合在WWW上使用。
Java Web Start客户是基于JFC/Swing API的,适合J2EE程序使用的客户应用,它基于比较新的Java Web Start技术。这种技术主要提供了网上的快捷程序下载和安装方式。Java Web Start兼有Applet和客户应用程序的优点,但设置起来有些复杂。
无线客户基于移动信息设备定型技术(Mobile Information Device Profile)。Java微型版(Java 2 Micro Edition)提供了MIDP的API和有限连接设备配置(Connected Limited Device Configuration)技术。这些技术可以使无线设备(如手机,PDA)同J2EE程序进行通信。
2)Web构件 Web构件是在J2EE Web容器上运行的软件程序。Web容器主要支持多层结构的表示层。它的功能是在HTTP协议上对Web请求(request)进行响应(response)。这些所谓响应其实就是动态生成的网页。用户每在浏览器上点击一个链接或图标,实际上是通过Web向服务器发出请求。J2EE平台的Web构件对这些请求进行处理后回复给客户相应的HTML或XML文件。
J2EE Web构件包括servlet,Java Server Page(JSP)和Java Server Pages Standard Tag Library(JSTL)。
Servlet是Java动态处理HTTP请求和生成网页的类(class)。每个servlet就是一个在J2EE应用服务器Web容器(又称Web服务器)里的程序构件。这种构件有效地利用了Web服务器的HTTP通信功能。Web服务器负责将Web请求传递给servlet。
Web服务器内部根据用户要求的统一资源定位器(URL,即通常所说的网址)查找到对应的servlet,然后将servlet处理生成的HTML或XML文件以HTTP形式反馈给客户。Web程序开发人员主要编写servlet类程序无须关心Web服务器的运作细节,编写servlet的程序员用servlet API进行以下工作:初始化和结束servlet;连接servlet的运行环境;接收或传递Web请求,发送Web反应;维护和管理客户会话(session);和其他Web构件协同工作;使用过滤器对Web请求和响应进行处理;实现Web安全管理。
JSP可以说是servlet的变形,它像是文本格式的servlet,它的写法有些像写网页,这样就为应用开发者(特别是不熟悉Java语言的)提供了方便,JSP在Web容器内会被自动编译为servlet,编写JSP比编写servlet程序更简洁;一个JSP文件包括两类成分:生成HTML或XML模板和处理动态内容的JSP元素。JSP开发者如果只改变网页外观,他们只要对JSP内的模板进行编辑而不用改动JSP元素。JSP元素主要用于生成动态内容或调用底层EJB构件,Servlet编程将二者混在一起,而JSP就清楚多了,JSTL将常用的JSP功能封装成为简单的标签(tag)。熟悉HTML网页编程的人知道,网页是由各种有标签的文字组成的,各种标签(如表格、字体)的写法基本固定。JSTL采用了相似的概念设计JSP。例如,设计者不必自己用JSP写一个能连接数据库的JSP文件,可以用现成的JSTL标签来进行数据库连接。这种JSTL标签是最优化和标准化的,任何种类的Web服务器都会支持,这样就省去了不少JSP的麻烦;JSTL目前提供基本的JSP功能,仍在不断扩充中。
3)企业JavaBeans(EJB)构件 EJB容器用于实现企业业务操作的程序,它在多层结构中处于业务层和数据访问层。这里我们引入"业务逻辑"这个概念。在J2EE编程中,业务逻辑指特殊企业领域对数据的处理需求,譬如银行业务、零售或财务等,简单说就是企业程序中的数据结构和算法。业务逻辑因企业的业务性质而异,它由EJB构件在J2EE Web程序中实现,EJB构件能够从客户端或Web容器中收到数据并将处理过的数据传送到企业信息系统来存储,EJB还能够从数据库检索数据并送回到客户端;由于EJB依赖J2EE容器进行底层操作,使用EJB构件编写的程序具有良好的扩展性和安全性。
J2EE 1.4版有三种EJB构件:session bean(会话bean),entity bean(实体bean)和message-drivenbea
查看本文来源