已阅读5页,还剩67页未读, 继续免费阅读
(计算机应用技术专业论文)基于j2ee和mvc的web研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
摘要 i 基于 j2ee 和 mvc 的 web 研究 摘要 基于 j2ee 和 mvc 的 web 研究 摘要 随着 internet 和 web 技术的广泛应用, 基于 b/s 的多层 web 体系结构逐渐发展并成 熟起来,越来越多的企业都迫切要求高效地构建自己的 web 业务系统。sun 公司发布的 j2ee 技术规范提供了一个基于组件的方法来设计、开发、装配和部署应用程序。j2ee 平台使用了一个多层的分布式的应用程序模型。 mvc (modelviewcontroller)设计模 式的出现使得模型层、控制层和视图层各层层次分明,各个模块之间相互独立,提高了 灵活性和可重用性。struts 是一个基于 j2ee 平台和 mvc 设计模式的框架,它全面减轻 了构建多层 web 应用的负担,提供可复用的软件构架。在 struts 框架中,视图层的显示 一般采用 jsp 技术和自定义标签库 taglib,但是由于 jsp 自身存在着一些缺陷,如不能 很好的支持 xml,使得 struts 框架不具备很好的视图层适应性。 针对上述背景, 本文引入了 xsl 技术。 通过分析 xsl 的特点, 指出可以利用 xslt 强大的转换功能,把它和 struts 结合在一起,对 struts 的视图部分进行改进。在此基础 上本文提出了一个合理的解决方案,并给出了改进之后的模型 xstruts。该模型是 struts 的扩展,它将表现逻辑和业务逻辑分离,支持 xml、xsl 等标准,具有可扩展性和易 维护性,提供对多种类型客户端的支持。本文重点分析了 xstruts 模型的设计原理和关 键实现技术。论文最后,在提出的 xstruts 模型的基础上设计开发了一个典型的 web 应 用网上书店,并给出了详细设计过程,说明了 xstruts 模型的可行性。 关键词关键词:j2ee,mvc,web,xsl,struts,xstruts abstract ii web research based on j2ee and mvc abstract with the extensive application of internet and web technology, multi-layer web structure based on b/s grows up gradually and become ripe. j2ee technology specification of sun microsystem corp supplies a way to design, develop, assemble and deploy applications based on component technology. j2ee platform is based on a multi-layer distributing application pattern. the appearance of mvc design pattern makes the levels among model, controller and view clearly, the every module is unattached, improves agility and the value of reuse. struts is the application framework which based on j2ee platform and mvc design pattern. it eases the burden of constructing multi-layer web applications and provides reusable software architecture. in struts, view is made up of jsp and custom tag libraries. because of some drawbacks of jsp especially the jsp syntax is not xml compliant and therefore fails to guarantee that resulting xml or html documents will be well formed. so struts framework is not provided with good presentation layer flexibility. as is stated above, this thesis introduces xsl technology. through analysing its characteristic, we can combine xsl with struts because of the mighty conversion function in xslt and improve view of struts. we provide an improved modelxstruts after putting forward a rational solution. this model is the extension of struts. it separates business logic from presentation and supports xml, xsl. it can support many types of clients. this model is easier to maintain and extend. the emphasis of the thesis includes the design principle and key technique of xstruts model. finally, a typical web applicationonline bookstore is designed and implemented using xstruts. key words:j2ee, mvc, web, xsl, struts, xstruts 独创性声明独创性声明 本人郑重声明:所呈交的学位论文是我个人在导师指导下进行的研究 工作及取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方 外,论文中不包含其他人已经发表和撰写的研究成果,也不包含为获得华 东交通大学或其他教育机构的学位或证书所使用过的材料。与我一同工作 的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢 意。 本人签名_日期_ 关于论文使用授权的说明关于论文使用授权的说明 本人完全了解华东交通大学有关保留、使用学位论文的规定,即:学 校有权保留送交论文的复印件,允许论文被查阅和借阅。学校可以公布论 文的全部或部分内容,可以采用影印、缩印或其他复制手段保存论文。 保密的论文在解密后遵守此规定,本论文无保密内容。保密的论文在解密后遵守此规定,本论文无保密内容。 本人签名_导师签名_日期_ 第一章 绪论 1 第一章 绪论 第一章 绪论 1.1 研究背景和意义 1.1 研究背景和意义 当今时代信息技术飞速发展,人们已经处于数字化的生存空间之中。internet 构造 了无限的信息资源,它的普遍使用已经从根本上改变了人们的生活方式和工作方式,也 改变了企业的经营方式和服务方式。 在当前网络技术迅速发展的今天, 传统的c/s模式已经无法满足企业级应用的需求, 基于 b/s 的多层 web 体系结构逐渐发展成熟起来,多层 web 应用的开发已成为主流。 但是,即使利用最先进的软件平台 j2ee,开发这样的应用仍然是个难题。在多层 web 体系结构的设计中,普遍存在着程序可重用程度低、维护工作繁琐、应变能力较弱等不 足。同时,多层 web 应用软件需要面对复杂的网络环境、多样化的用户需求、灵活的 业务模式、复杂的业务流程、众多的组织机构及层次、角色分工等问题,在业务和技术 上也是复杂多变的。因此,在基于组件的 j2ee 平台充分内置了灵活的情况下,如何组 织应用程序以实现简单高效的应用程序升级、维护和扩展,以及如何让不懂程序代码的 人员避开程序数据,成为我们首先要解决的问题1。而且,我们还要充分考虑到多层结 构的特殊性:各层之间需要密切配合才能完成最终功能,又要在实际开发中尽可能的使 各层的开发相对独立,减少各层之间的藕合程度,避免开发人员相互制约。 mvc 源于传统的面向对象语言 smalltalk-802,是一个经典的设计模式。它是设计 交互式应用时广泛采用的一种设计模式,也是 j2ee 蓝图推荐的在开发 web 应用时使用 的方法3。利用 mvc 设计模式开发 web 应用,可以将表现逻辑和业务逻辑分离,构建 可复用的软件系统框架,同时简化软件开发,提高软件性能和可维护性,达到提高软件 质量的目的4。因此,将 j2ee 和 mvc 模式结合起来应用于 web 应用系统的开发,具 有重要的现实意义和广泛的实际应用价值。 struts 是一个基于 j2ee 平台、对 mvc 设计模式实现的框架。它在 2001 年 6 月作 为 apache jakarta 项目的组成部分问世运做。struts 主要采用大多数开发者熟知的 javabean、java server page(jsp)、servlet 等标准技术5,对 mvc 设计模式的三个部分 提供了对应的实现组件。项目的创立者希望通过该项目能有助于开发者利用 jsp 和 servlet 的优点更加快速、容易的建立可扩展的多层 web 应用。struts 规定了应用的体系 结构,为应用系统提供了一个良好的软件构架,解决了由于应用的复杂性而在软件开发 过程中所带来的各种问题,并对于实现在应用系统建设初期所制定的软件功能、开发投 入、开发周期、项目的组织和管理上的目标,都有极大的帮助。它的目标是要全面减轻 构建多层 web 应用的负担,提供可复用的框架。 在 struts 中,视图部分通常基于 jsp 和 taglib 技术来构建。jsp 有力地推动了 java 第一章 绪论 2 在 web 开发中的应用。同时,在 jsp 标签库的帮助下,jsp 为 web 和 j2ee 应用中的表 现层开发提供了丰富和强大的工具6。 但是, 以 jsp 作为显示手段也存在着一些局限性: 1. 程序开发人员可以把业务逻辑放入 jsp 中。但是,按照 mvc 的设计思想,jsp 的唯一用途是显示数据。如果将业务逻辑也放入其中,随着应用规模的不断增大,程序 结构将变得复杂并难以维护。 2. struts 的标签库非常复杂,学会使用 struts 的标签库需要一个长期的过程。 3. 在开发过程中,对 jsp 页面的任何修改都会导致容器重新编译 jsp,这样是非常 耗费时间的。 4. 对 xml 的支持不佳。jsp 不能保证生成的结果文件是 100%“格式良好” (we11-formed)的 xml。在这个支持 xml 的 internet 访问设备不断涌现的时代,越来越 多的设备都可接入到互联网上,web 应用将会面临多种客户端显示的挑战,而现有的框 架不具备这方面的扩展性。 论文主要针对以上提出的 struts 框架中的几个问题进行解决, 给出了一个用 xsl 替 代 jsp 的解决方案。那么,用 xsl 作为 struts 中 view 的实现技术有什么独到之处呢? 可以看看 xsl 具备的特点:xsl 是 w3c 的正式标准,具有分离数据内容和表现形式的 特点。xsl 样式表中不能再加入业务逻辑,真正把业务逻辑和表现逻辑分开。整个 web 应用避免了使用 jsp 和标记库。xsl 保证输出的内容是 100%“格式良好”的 xml。利 用 xslt 可以方便地获得各种输出格式,如纯文本、html、wml 和其他各种 xml 格 式,对于多种 internet 访问设备都提供了良好的支持。 1.2 研究内容 1.2 研究内容 首先从理论上对在开发基于 j2ee 的多层 web 应用中采用 mvc 设计模式的必要性 做了论述,然后研究了国内外最流行的 web 应用框架 struts一个基于 j2ee 平台、 实现了 mvc 设计模式的框架, 分析其实现原理和特点, 并剖析了其中使用 jsp 和 taglib 实现 view 存在的问题。接着针对此问题提出了一个合理的解决方案,并给出了一个对 struts 改进后的模型 xstruts(xsl struts)。xstruts 模型在不改变 struts 的 model 和 controller 的前提下,采用 xsl 技术替换了 view 中的 jsp。该模型是 struts 的扩展,它 将表现逻辑和业务逻辑分离,支持 xml、xsl 等标准,具有很强的可扩展性和易维护 性,提供对多种类型客户端的支持。在论述了改进方案的可行性和优点的同时,重点分 析了改进模型的设计原理和关键实现技术。在最后应用 xstruts 模型设计了一个典型的 web 应用网上书店,说明了 xstruts 的可行性。 1.3 论文结构 1.3 论文结构 论文分为六章。 第一章 绪论 3 第一章 绪论。介绍了本文的研究背景和意义、主要研究内容和全文的组织结构。 第二章 基于 j2ee 和 mvc 的 web 开发。介绍了 web 体系结构、j2ee 体系结构和 mvc 设计模式的概念, 从理论上对在开发基于 j2ee 的多层 web 应用中采用 mvc 设计 模式的必要性做了论述。 第三章 struts 框架。研究了当前应用最广泛的 web 应用框架 struts,分析其实现原 理和特点,并剖析了其中存在的问题。 第四章 xstruts(xsl struts)模型。通过分析现有 struts 框架的局限性,讨论了对其 改进的方案,提出了一个符合多层 web 体系结构特点的新型模型 xstruts,并重点分析 了此模型的实现原理和关键技术及其具有的优点。 第五章 基于 xstruts 模型的应用。在论文提出的 xstruts 模型的基础上,设计开发 了网上书店系统。具体给出了在线购书子系统的详细设计,进一步说明 xstruts 的可行 性。 第六章 总结。对本论文的工作进行总结,指出了本文中许多值得研究和探讨的问 题,对今后的工作做了展望。 第二章 基于 j2ee 和 mvc 的 web 开发 4 第二章 基于 j2ee 和 mvc 的 web 开发 第二章 基于 j2ee 和 mvc 的 web 开发 2.1 web 体系结构 2.1.1 client/server 结构 2.1 web 体系结构 2.1.1 client/server 结构 在传统的客户机/服务器(c/s)系统中,客户机部分负责执行前台功能,如管理用户 接口、逻辑处理和报告请求等,而服务器部分负责执行后台服务,如管理共享外设、控 制对共享数据库的操纵、 接受并应答客户机的请求等。 由于 c/s 结构被设计成两层结构, 显示逻辑和事务处理逻辑被放在客户端,数据处理逻辑和数据库放在服务器端,从而使 客户端变得很“胖” ,而服务器端的任务则相对较轻,成为瘦服务器。传统的 c/s 两层 结构在一个相对专用、独立的系统中,是一个较好的系统建立方法,但是随着计算机网 络技术的发展,各种不同平台之间的互联,软件设计应采用开放性原则,以 c/s 结构为 代表的两层结构其弊端也越来越明显。 传统的 c/s 结构存在较多的问题7,如: 1. 由于客户端和服务器端直接相连, 服务器不得不消耗部分资源用于处理与客户端 的连接工作。这样,当同时存在大量客户端数据请求时,服务器的系统资源可能在应付 频繁的连接工作上消耗,从而不能很好地响应数据请求,客户端数据请求的堆积后果可 能导致系统整体效率的大幅降低甚至崩溃。 2. 主从式结构使得唯一在线的数据库服务器成为系统可靠性的极大隐患, 如果数据 库服务器停止工作,整个系统将瘫痪。 3. 客户端应用程序的分发工作的繁琐程度令人难以接受。 系统开发完毕后, 必须为 每台客户机安装客户端程序的执行文件以及相关动态连接库文件(*.dll),程序初始化 文件(*.ini)等文件。另外,还必须为每台客户机的 odbc 或 bde 进行配置。不仅如此, 如果系统升级,上述过程得重复一次。 4. 在存储过程的调用中, 所有处理过程都在数据库层进行, 只是将最终结果返回客 户端。这种结构的业务逻辑需采用专用语言开发,很难移植到其他的数据库上去。 2.1.2 browser/server 结构 2.1.2 browser/server 结构 b/s 结构,是随着 internet 技术的兴起,对 c/s 结构的一种变化或者改进的结构, 克服了上述由 c/s 结构造成的缺陷。b/s 结构中,事务处理逻辑部分从客户机的任务中 分离出来,使客户机不再负责处理复杂计算和数据访问等关键事务,只负责显示部分, 由服务器来担负更多的工作。用户仅通过浏览器就可向服务器发出请求,服务器处理用 户的请求,并将结果返回给用户。 采用基于 b/s 结构的多层结构,不仅简单,而且降低了系统的维护工作量,提高了 第二章 基于 j2ee 和 mvc 的 web 开发 5 系统的开放性,尤其是以中间件为基础的 b/s 多层结构,其核心概念是利用中间件技术 将应用的业务逻辑、表示逻辑和数据分为多个不同的处理层,不但具备了系统稳定、安 全和处理能力高等特性, 同时拥有开放式系统成本低、 可扩展性强、 开发周期短等优点。 另外,浏览器软件有着统一的用户界面、统一的语言格式、统一的传输协议,用户 界面简单易学,终端用户几乎无需任何培训,系统管理简单,可以支持异构数据库,有 很高的可用性。 b/s 结构的主要特点是:使用简单,对用户的要求低;易于维护,用户端无需专用 的软件;扩展性好;保护企业投资等。在 b/s 结构下,应用系统开发重点变为8: l. 用户界面的设计和开发。 2. 中间业务逻辑层的设计和开发。实现一整套供客户端调用的 api 和封装一系列 的事务逻辑,保证事务逻辑的划分达到最大限度的重用。 3. 数据库服务层的设计和开发。提供对数据库进行各种操作的方法。 2.1.3 b/s 结构相对于 c/s 结构的优势 2.1.3 b/s 结构相对于 c/s 结构的优势 b/s 结构相对于 c/s 结构的优势主要体现在如下几个方面9: l. 开发和维护成本。c/s 结构开发和维护成本较高。对不同客户端要开发不同的程 序,编程工作量较大。如果应用程序要进行安装、修改和升级,均需要在所有的客户机 上进行,复杂而又麻烦。对于 b/s 结构,只需在客户端安装通用的浏览器,所有的维护 与升级工作都是在服务器上执行的,不需对客户端进行任何改变,因而大大降低了开发 和维护的成本。 2. 客户端负载。c/s 结构的客户端具有显示与处理数据的功能,负载过重。应用系 统的功能越来越复杂,客户端的应用程序也变得越来越庞大,客户端也越来越“胖” , 而不断地提高客户机的配置,又加重了投资的成本。b/s 结构的客户端把事务处理逻辑 部分分给了服务器端, 不再负责处理复杂计算和数据访问等关键事务, 只需要进行显示, 使客户机变得很“瘦” 。 3. 采用的标准。c/s 结构所采用的标准只在内部统一,其应用通常是专用的。b/s 结构所采用的标准是开放的、非专用的,是经过标准化组织所确定的,保证了其应用的 通用性和跨平台性。 4. 灵活性。c/s 结构系统模块中每一部分的变动均要关联到其他模块的变动,使系 统极难升级,灵活性差。b/s 多层结构中层与层之间的相互独立,任何一层的改变不影 响其他层的功能,系统的改进变得相对容易,而且可以用不同厂家的产品来组成性能更 佳的系统。 5. 移植性。 c/s 结构移植困难, 不同开发工具开发的应用程序, 一般来说互不兼容, 难以移植到其他平台上运行。对于 b/s 结构,在客户端安装的是通用浏览器,不存在移 植性问题。 6. 用户界面风格。c/s 结构的用户界面是由客户端所装软件决定,用户界面各不相 第二章 基于 j2ee 和 mvc 的 web 开发 6 同。而 b/s 结构只需在客户端安装通用的浏览器就可以访问程序,浏览器的界面统一友 好、易于使用。 从上述可得,与 c/s 结构相比,采用 b/s 结构的优越性是显而易见的。系统具有良 好的扩展性和伸缩性,开发模块化、维护方便,网络负载轻,因为系统中所有复杂的数 据计算操作都放在服务器端实现, 浏览器和服务器之间传送的数据仅仅是计算的条件和 结果, 大大地降低了网络通信量, 减轻了网络负载。 服务器提供的动态页面生成的能力、 多层客户访问、安全性、处理逻辑以及数据库访问等功能,也使得 b/s 结构成为当前 web 开发的主流技术。 2.1.4 基于 b/s 的 web 应用体系结构 2.1.4 基于 b/s 的 web 应用体系结构 1. 传统的两层和三层体系结构 在 web 发展的初期,web 应用主要是通过静态页面在 internet 上发布信息,其体系 结构如下图 2-1 所示。用户通过浏览器向服务器发送请求,服务器接收用户端的请求, 向客户端浏览器发送所请求的页面。在这种结构下,网站上的页面是静态的,无法根据 用户的实际使用情况做动态的变化。 网站的信息提供者通过更新服务器上的网页来向用 户提供最新的信息。用户和浏览器之间只有有限的交互,而网站和用户之间几乎没有交 互。 cgi、asp、php 等技术的出现,使得开发动态交互式的 web 应用得以实现。其常 用体系结构如下图 2-2 所示。用户通过浏览器向服务器发送请求10,web 服务器接收客 户端发送来的请求,对请求进行分析,如果请求是静态页面,那么就将所请求的页面发 送到客户端;如果请求的是动态页面,那么就执行此动态页面,并将执行结果发送给客 户端。动态页面中的脚本程序可以和数据库服务器进行交互。 web 服务器可以根据用户的请求动态更新页面上的信息, web 信息提供者可以通过 浏览器 web 服务器 请求 响应 图 2-1 两层体系结构 fig.2-1 two-layer system structure 浏览器 web 服务器 请求 响应 图 2-2 三层体系结构 fig.2-2 three-layer system structure 数据库 第二章 基于 j2ee 和 mvc 的 web 开发 7 改变数据库中的数据向用户提供最新信息,而不需要逐个更改页面。用户可以通过这些 动态页面向数据库中输入信息,从而增强了用户和服务器的交互性。 2. 新的四层体系结构 当前的许多 web 应用都需要更复杂的表现和逻辑处理。采用三层体系结构,把数 据的生成和数据的表现两部分都集成在了动态页面中。这就使动态页面变得非常庞大, 而且应用的表现和逻辑处理混合在一块,给 web 应用系统的开发和维护带来了许多困 难。 针对此类问题,出现了一种新的四层体系结构,如图 2-3 所示,将应用的逻辑处理 和应用的表现相分离11。其中 web 服务器即动态页面所在层主要负责应用的表现,应 用逻辑层主要负责应用的逻辑处理。在此体系结构下,用户通过浏览器向服务器发送请 求,web 服务器接收客户端发来的请求,对请求进行分析转换,调用相应的应用服务器 中的逻辑处理程序。逻辑处理程序可和数据库交互,将逻辑处理结果返回给 web 服务 器,web 服务器再将结果发送给客户浏览器。 mvc 设计模式的思想,在理论上给新的四层体系结构实现应用的逻辑处理和应用 的表现相分离以指导,对 web 的应用开发具有重要意义。 2.2 j2ee 体系结构 2.2.1 j2ee 概述 2.2 j2ee 体系结构 2.2.1 j2ee 概述 j2ee(java2 platform, enterprise edition)是美国 sun 公司推出的一种全新概念的模型, 与传统的互联网应用程序模型相比有着不可比拟的优势。j2ee 是一整套技术的总称, 包括开发和实现 n 层应用程序的各个方面, 使用 j2ee 技术能使我们快速开发 web 应用 系统。j2ee 的目标是提供一个基于 java 语言的服务器端应用结构,支持平台独立、可 移植、多用户、安全和标准的企业级应用。 j2ee 是一种利用 java2 平台来简化诸多企业级应用解决方案的开发、 部署和管理相 关的复杂问题的体系结构, 提供了一个企业级的计算模型和运行环境用于开发和部署多 层体系的应用。它通过提供企业计算环境所必需的各种服务,使得部署在 j2ee 平台上 的多层应用可以实现高可用性、安全性、可扩展性和可靠性。计算平台支持 java 语言, 使得基于 j2ee 标准开发的应用可跨平台地移植,且由于 java 语言的安全、严格,使开 浏览器 web 服务器应用服务器 数据库 请求 响应 图 2-3 四层体系结构 fig.2-3 four-layer system structure 第二章 基于 j2ee 和 mvc 的 web 开发 8 发者可以编写出非常可靠的代码。j2ee 提供了企业计算中需要的所有服务12,且更加 易用;为多数标准定义了接口,如 jndi,jdbc,java mail 等,可与许多厂商的产品配 合,容易得到广泛的支持;树立了一个广泛而通用的标准,大大简化了应用开发和移植 过程。j2ee 提供的多层的分布式应用模型、组件重用、一致化的安全模型以及灵活的 事务控制,加快了应用程序的设计和开发,可以容易快速地建立融合了 internet 技术尤 其是 web 技术的 n 层(n-tiers)结构的分布式企业应用。基于 j2ee 技术的 b/s 结构具有 可维护性好、可扩展性好、安全性好等优点,较好地解决了 c/s 结构所固有的可扩充性 差、可维护性差、安全性差、部署麻烦等弊端。 2.2.2 j2ee 核心技术 2.2.2 j2ee 核心技术 j2ee 是基于 java 技术的一整套企业应用开发标准和规范以及同硬件无关的运行时 环境,能够为开发的产品带来显著的可移植性、伸缩性、稳定性和安全性。它作为一种 功能完备、 稳定可靠、 安全快速的企业级计算平台, 由多种基于 java 的核心技术组成13: servlet,jsp,javabean,jdbc,ejb,jndi,jta 和 corba 等。而在构建电子商务的 应用中主要用到的 j2ee 技术是 servlet、jsp、javabean、jdbc、ejb 等。 1. servlet servlet 译为服务器小程序,与运行于客户端的 applet(小程序)对应,它们都是使用 java 语言写的小型程序。servlet 没有 main 方法,只有一些特定的方法用于启动、执行 和退出。 它可以与运行于客户端的 applet 进行交互, 也可以直接与客户端的 html 页交 互。 servlet 程序的运行机制如下14: (1) init 方法: 当用户访问 servlet 程序时, 服务器首先调用 init 方法进行初始化工作, 该方法只会被调用一次。 (2) service 方法:在 init 方法之后,服务器调用 service 方法准备处理用户的访问。 来自客户端的访问有 get、put、post 等类型,这些都可以在 service 方法中处理。 httpservlet 类中也提供了支持这些类型的 doxxx 方法,例如 doget 方法,当访问请求 是 get 时会自动执行。service 方法包括两个参数,即用户的访问请求(request)和服务器 的响应(response)。服务器的响应是通过某种流,如 printerwriter,建立一个 html 页面, 并把它发送到用户的浏览器上。 只要用户访问到服务器小程序的 url, 那么用户浏览器 上就会显示该页面。 (3) destroy 方法: 该方法在服务器结束 servlet 运行时调用, 即不是 servlet 程序自己 调用的。例如,当服务器程序关闭时会调用它。 servlet api 是用来编写 servlet 的一套编程接口,编写 servlet 并不需要像 cgi 脚本 那样关心一个 servlet 是如何被装载、servlet 运行的服务器环境是什么、或者用来传输 数据的协议是什么等等,servlet 能够融合在不同的 web 服务器中。servlet 可以相当有 效地替代 cgi 脚本,方便地产生容易编写而且运行快速的动态 web 页面,可以很方便 第二章 基于 j2ee 和 mvc 的 web 开发 9 地调试程序等。 servlet 的优势是显而易见的,主要体现在如下几个方面15: (1) servlet 是使用 java 语言编写的,比用 c、perl 语言开发 cgi 更加容易编写,能 够很快地运行产生动态 web 页面,且具有良好的跨平台性,有效地取代了 cgi 脚本。 (2) 一个 servlet 可以同时处理多个请求,每个请求将生成一个新的线程,而不是一 个完整的进程,使多个客户能够在同一个进程中同时得到服务。 (3) servlet 是模块化的,每个都执行一个特定的任务,也可以协同一起进行工作, 构成 servlet 链,功能强大。 (4) servlet 可以嵌入在不同的 java 服务器之中, 因为用来编写 servlet 的 servlet api 对于服务器环境和协议没有任何特殊的要求,具有很强的可移植性。 servlet 会长期驻留在服务器端的内存中,非常适于服务端的处理和编程,servlet 提供的功能大多与 jsp 类似,只是实现的方式不同。jsp 通常是大多数 html 代码中嵌 入少量的 java 代码, 在实际的项目开发过程中, 页面设计者可以方便地使用普通 html 或者 xml 工具来开发 jsp 页面,而 servlet,全部用 java 语言编写,开发时需要 java 的集成开发环境,一个需要更多编程经验的开发领域,servlet 更适合于后端编程开发人 员使用。 2. jsp jsp 是编写动态页面的语言,它在 j2ee 标准中,运行在服务器端,支持表现层的 实现。简单的说,jsp 就是在 html 代码中混合 java 程序代码,并由 java 语言引擎解 释执行程序代码的动态页面编写语言。 (1) jsp 的运行机制。在 jsp 环境下,html 代码主要负责描述信息的显示样式,而 java 程序代码则用来描述处理逻辑。普通的 html 页面只依赖于 web 服务器,而 jsp 页面则需要附加的语言引擎分析和执行程序代码。程序代码的执行结果被重新嵌入到 html 代码中,然后一起发送给客户端浏览器。jsp 是面向 web 服务器的技术,客户端 浏览器不需要任何附加的软件支持。和传统的 cgi 相比,jsp 有相当的优势。首先,在 速度上, 传统的 cgi 程序需要使用系统的标准输入输出设备来实现动态网页的生成, 而 jsp 是直接和服务器相关联的。而且对于 cgi 来说,每一个访问就需要新增加一个进程 来处理,进程不断的建立和销毁对于作为 web 服务器的计算机将是一个不小的负担。 其次,jsp 是专门为 web 开发而设计的,其目的是为了建立基于 web 的应用程序,jsp 包含了一整套的规范和技术可以很方便地将一大堆 jsp 页面组合成为一个 web 应用程 序。其目的是使得构造基于 web 的应用程序更加容易和快捷,而这些应用程序能够与 各种 web 服务器,应用服务器,浏览器和开发工具共同工作1516。 jsp 以 servlet 技术为基础,又在很多方面做了改进。它与 servlet 配合使用,共同 完成服务器端的功能实现。 (2) jsp 的客户端交互。jsp 的大部分工作就是与客户端进行交互。客户端一般指的 第二章 基于 j2ee 和 mvc 的 web 开发 10 是浏览器,它们与置于服务器端的 jsp 页面进行交互。jsp 脚本中所有的 java 语句都是 在服务器端执行,服务器接收客户端提交的请求,通过一定的处理之后,将结果返回给 客户端,客户端得到的仅仅是 html 代码16。 交互过程的流程为,在一般的客户端和服务器端的交互中,使用 http 协议,客户 端通过下面四个步骤与服务器端进行交互:客户端和服务器端建立连接;发送客户端请 求;服务器返回应答给客户端;客户端关闭连接。 所有的请求都是由客户端主动发出,而服务器端一直处于被动的监听状态。整个交 互过程也是由客户端主动发起,服务器在整个交互过程中处于被动状态。也就是说服务 器端仅在客户端请求的时候才发送信息,而在客户端不请求的时候,服务器端不可能主 动向客户端发送任何信息。 用户在浏览器键入要访问的地址,按回车键确认后,浏览器就开始与指定的服务器 建立连接,从这时开始,就开始了一次交互过程。浏览器通过一段时间的等待后,从服 务器得到响应,并把相应的信息以 html 方式呈现给用户。用户在浏览网站的过程中, 实际包含了很多这样的交互应答过程。 3. javabean javabean 是使用 java 语言描述的、易用的、与平台无关的软件组件模型,用于设 计可重用的组件, 有点类似于 microsoft 的 com 组件概念。 在 java 模型中, 通过 javabean 可以无限扩充 java 程序的功能,通过 javabean 的组合可以快速地生成新的应用程序, 易维护,可以实现代码重复利用。在 jsp 程序中常用来封闭事务逻辑、数据库操作等, 可以很好地实现业务逻辑和前台程序(如 jsp 文件)的分离、逻辑的封装、程序的易于维 护等,从而使得系统具有更好的健壮性和灵活性。 实际上,javabean 就是一种使用符合某些命名方法和设计规范的 java 类。 javabean 具有以下特性17: (1) javabean 类必须有一个没有参数的构造函数,这个构造函数在使用 实例化 javabean 类时调用。如果 javabean 类内没有任何构造函数,系统 会自动生成一个没有参数的构造函数。 (2) javabean 内的属性都应该定义为私有的,那么这些属性只能通过 javabean 内的 方法访问或者改变,这样可以较好的保护数据的完整性和封装性。 (3) 属性通过 setx 和 getx 来操作。 同时拥有 setx()和 getx()方法的可以使之具有读 写属性,只有 getx()方法使之具有只读属性,只有 setx()方法使之具有只写属性。 4. jdbc jdbc(java database connectivity)提供了完备的数据库操作方法接口, 是程序员和数 据库打交道的主要途径,是 java 与数据库的连接规范,是一个支持基本 sql 功能的通 用底层 api。 jdbc 在不同的数据库功能模块层次上提供了一个统一的用户接口, 为 java 程序员提供了独立于特定的数据库系统而实现与网络数据库互联的方式。jdbc 和 java 第二章 基于 j2ee 和 mvc 的 web 开发 11 语言一样,是独立于平台和数据库的。利用 jdbc,可以使用简单直接的方法完成简单 的数据库任务,如基本查询,生成和修改。 jdbc 的总体结构如图 2-4 所示,jdbc 包含两个部分,它们与数据库独立。一部分 是面向程序开发人员的 jdbc api,另一部分是面向底层的 jdbc 驱动器 api(jdbc driver api)。 用 jdbc 实现 web 数据库访问时, java 应用程序通过 jdbc api 访问 jdbc 驱动器管理者(jdbc driver manager),jdbc 驱动器管理者再通过 jdbc 驱动器 api 访 问不同的 jdbc 驱动器(jdbc driver),驱动器负责标准 jdbc 调用向其支持的数据库所 要的具体调用转变18。 jdbc 驱动器管理者用于管理各种数据库软件商提供的 jdbc 驱动器。对没有提供 相应驱动器的数据库管理系统,有特殊的 jdbc-odbc 桥驱动器,该驱动器支持 jdbc 通过现有的 odbc 驱动器访问其数据库管理系统。jdbc 网络驱动器允许使用通用的网 络协议访问不同的数据库管理系统。 5. ejb ejb 是 j2ee 结构的核心,ejb 组件设计用于封装业务逻辑,以及保护应用程序开 发者,使他们不需要担心许多系统级问题,如事务、安全性、可扩展性、并发性、通信、 资源管理、持续性、出错处理以及操作环境无关性。 ejb 运行于 ejb 容器中。ejb 容器运行在一个应用程序服务器上,并且负责系统级 问题的处理。 这种 ejb 开发者和容器之间工作的划分使得开发者可以集中精力于业务逻 辑,而不是系统级编程,这是 enterprise javabean 技术的一个重要指导思想19。 (1) ejb 与 javabean 的比较。在 ejb 之前,sun 公司己经推出 javabean。通过比较 ejb 与 javabean,可以更清楚知道 ejb。都是组件模型:javabean 用于可视化地在开发 工具中操纵组件,ejb 用于可移植地在服务器中部署组件。都可以用于服务器端开发: javabean 在用于服务器端开发时需要设计整个服务器服务框架, 而 ejb 不用。 事件和属 性:javabean 包含事件和属性等特征,ejb 则没有事件,因为 ejb 通常不发送和接受事 件。属性定制并不是在开发时进行,而是在运行时(实际上在部署时)通过部署描述符来 描述,提供了事务处理的能力1920。 (2) ejb 服务器和 ejb 容器。ejb 体系结构包括 ejb 服务器和 ejb 容器两个概念。 ejb 服务器是管理 ejb 容器的高端进程或应用程序。它用于将客户机层(java 小服务程 序、小应用程序、应用程序和 jsp)与资源管理层连接起来。ejb 服务器提供系统服务程 序,如安全性和事务。它使用基础操作系统服务执行其中某些功能。它还有一个支持实 jdbc api jdbc 驱动器 管理者 jdbc 驱动器 api 数据库 图 2-4 jdbc 的总体结构图 fig.2-4 jdbc collectivity structure map 第二章 基于 j2ee 和 mvc 的 web 开发 12 体 bean 和会话 bean 的标准容器20。 ejb 容器管理部署在其中的 ejb。容器提供了系统级的服务,控制了 ejb 的生命周 期。 因为容器掌握了绝大多数系统级的事务, 企业 beans 的开发者不需要考虑应用逻辑。 ejb 容器通常具有以下三个特点:管理 bean 生命周期,将 ejb 服务器提供的服务传递 给 bean; 生成代码来实现对 bean 的存取访问, 这个特点可以强制事务处理的限制创建、 初始化和回收,并进行 bean 管理数据的持久存储;对客户端而言 ejb 容器是透明的。 (3) ejb 构件分类。在 ejb 规范中有三种 ejb,一种是会话(session)bean,一种是实 体(entity)bean,另一种是消息驱动 bean20。 会话 bean 由客户端创建,用于应用逻辑实现。分为无状态的会话 bean 和有状态的 会话 bean。前者不维护任何的状态,如无状态的会话 bean 可用作执行温度转换。后者 提供了与客户端交互的方法,可存储客户端的状态,在线购物车就是一个典型例子。在 大多数情况下,会话 bean 仅在单个客户和服务器会话期间存在,根据客户请求执行操 作,会话 bean 可以处理事务,但在系统停机后,无法恢复。 实体 bean 用于数据存储和处理事务,是存储在永久性数据空间如数据库中的持久 性数据的对象表示。分为 bean 管理的持久实体 bean(bmp)和容器管理的持久实体 bean(cmp)。最常用的是用实体 bean 代表关系库中的数据。一个简单的实体 bean 可以 定义成代表数据库表的一个记录,也就是每一个实例代表一个特殊的记录。更复杂的实 体 bean 可以代表数据库表间关联视图。典型的是存储在数据库中,因此在服务器崩溃 后数据仍然存在。多个客户端可以使用实体 bean 来表示同样的数据。 消息驱动 bean 是 jms(java message service)的一个实例。它提供了 jms 的消息驱 动的能力,并且完成在消息产生者和服务器间的异步处理。在应用服务器中,一般是创 建一个 bean 的实例并且传递 jms 消息给这个实例来实现消息驱动 bean。 (4) ejb 与客户端的交互。客户机应用程序并不直接与 ejb 进行交互,而是通过由 容器生成的两个接口(ejb home 接口和 ejb object 接口)与 ejb 进行交互。当客户机使 用封装接口调用各种操作时,容器捕获每个方法调用,并插入管理服务。无论是哪种类 型的客户端, 访问 ejb 过程可以概括为如下三步1920: 通过 jndi 定位 ejb 的远程本地 接口。创建 jndi 名称环境,通过在发布时给 ejb 定义的 jndi 名称找到该 ejb 的远程 本地接口; 创建 ejb 实例, 得到远程接口。 调用上一步得到的远程本地接口中的 create() 方法, ejb 容器会创建相应的 ejb 实例, 得到一个定义了 ejb 要实现的商业逻辑的远程 接口。ejb 容器创建 ejb 实例的基本过程是:客户端调用 create()方法,由 ejb 容器实 例化相应的 ejb bean class。ejb 容器调用 bean 类中的 ejbcreate()方法,最后返回的是 ejb 的远程接口;调用远程接口中的商业方法。客户端调用上一步创建的远程接口中的 商业方法,ejb 容器就会调用相应 bean 类实例中的相应方法。 2.2.3 企业应用面临的挑战及多层 b/s 构架 2.2.3 企业应用面临的挑战及多层 b/s 构架 计算机网络技术的发展和成熟,特别是 internet
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大四三方协议劳动合同
- 塔吊电机租赁合同范本
- 在哪里找入住协议合同
- 国际贸易违约合同范本
- 四个兄弟分房子协议书
- 外墙保温购买合同范本
- 地磅检修维护合同范本
- 场地合作伙伴合同范本
- 外卖小程序转让协议书
- 外包施工安全合同范本
- 口腔科治疗台水路消毒
- 测试卷1-2022-2023学年高一化学上学期期中测试卷(原卷版)
- 电子元器件的选型与电路设计
- 新版FMEA表单模板(带AP明细)(OK)
- 中央基建资金管理办法
- 小学语文六年级上册《好的故事》作业设计
- 冰乙酸安全技术说明书msds
- 广西桂航杯航天知识竞赛试题(100题)
- 加工食品安全
- GB/T 3273-2005汽车大梁用热轧钢板和钢带
- GB/T 26748-2011水泥助磨剂
评论
0/150
提交评论