【VC++开源代码栏目提醒】:网学会员为需要VC++开源代码的朋友们搜集整理了基于Java开源项目的J2EE应用框架实现 - 计算机教材相关资料,希望对各位网友有所帮助!
东南大学硕士学位论文基于
Java开源项目的J2EE应用框架实现别:硕士专业:软件工程指导教师:吴介一王雄健20060601论文摘要论文摘要题名:基于Java
开源项目的J2EE应用框架实现硕士研究生吴介一教授、王雄健高工学校名称;东南大学论文摘要:随着企业对自身业务模式、业务流程的进—步完善,对企业应用系统的更深入理解,企业应用软件的市场需求将更加旺盛。
拥有成熟的、能够支持快速开发业务模块的应用框架的企业应用软件供应商将在激烈的市场竞争中处于更加主动的地位。
本文基于Web的MVC架构,结合三个当前流行的Java
开源项目(Struts、Spring和Hibernate),构造—个支持快速开发的J2EE应用框架,并通过—个购物网站的应用实例来验证其可用性。
关键词;J2EE应用框架、Struts框架、Spring框架、Hibernate框架第1页奎堕盔兰堡主兰垒垒茎Title:IMPLEMENTOFJ2EEAPPLICATION陬埘E鼢砥BASEDONJAVA0PENSOURCEP∞JECrAuthor:LiDechaoSupervisedbyProfessor礼JieyiandSeniorengineerWangXiongjianAbstract:Alongwithenterprisefurtherperfecttooneselfbusinessmode,businessprocess,toapplytheapplicationsystemmorethoroughcomprehension,marketneedofenterpriseapplicationsoftwarewillbecememoreprosperous.Ownenterpriseapplicationframeworkwhichismatureandabletosupporttodevelopabusinessmoldrapidly,finapplicationsoftwaresupplierquicklywillbeplacedinamoreactivepositioninthevehementAccordingtotheWebMVC,thispapercombinesthreepopularJavaopensourceprojects(Struts.SpringandHibernate)atpresent,constructingaJ2EEapplicationframeworkwhichsupportsafastdevelopmentandisverifiedbyanappliedexampleofshoppingwebsite.KeywordsJ2EEApplicationFramework,StrutsFramework,SpringFramework,HibernateFramework第Ⅱ页东南大学学位论文独创性声明本人声明所呈交的学位论文是我个人在导师指导下进行的研究工作及取得的研究成果。
尽我所知,除了文中特别加以标注和致谢的地方外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得东南大学或其它教育机构的学位或证书而使用过的材料。
与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示了谢意。
研究生签名:搬日期:旦《!i:笸东南大学学位论文使用授权声明东南大学、中国科学技术信息研究所、国家图书馆有权保留本人所送交学位论文的复印件和电子
文档,可以采用影印、缩印或其他复制手段保存论文。
本人电子
文档的内容和纸质论文的内容相一致。
除在保密期内的保密论文外。
允许论文被查阅和借阅,可以公布(包括刊登)论文的全部或部分内容。
论文的公布(包括刊登)授权东南大学研究生院办理。
前言前日随着
网络和web技术的发展以及B2B、B2C等商业模式的进一步普及,基于B/S模式的企业应用为国内外大中型企业带来工作效率和
经济效益极大提高,甚至有些公司单将其顺畅、高效的基于Web的业务流程作为其参与市场活动的核心竞争力。
目前,J2EE和.NET已成为两个主流的企业级应用平台。
J2EE是由吼m发起并由众多重要厂商参与制订的业界规范,为应用服务器的实现提供了一个开放和完整的底层框架,具有开放性,标准化、构件化、互操作和可扩展的特点,它可以使用户在此标准下创建的应用程序都能运行于其上.更重要的是,在满足J2EE兼容性的条件下,在不同的应用服务器上的应用构件可以很好地互操作,这样可以降低移植的风险和代价,提高应用的灵活性,有助于保护用户的投资,因此其业界接受程度很高。
经过几年的发展,主要的应用服务器厂商都已经转向采用J2EE标准,J2EE成了一个事实上的应用服务器实现标准。
随着企业对自身业务模式,业务流程的进一步完善,对基于web的企业应用系统的更深入理解,企业应用软件的市场需求将更加旺盛。
拥有成熟的、能够支持快速开发业务模块的应用框架的企业应用软件供应商将在激烈的市场竞争中处于更加主动的地位。
本文基于Web的MVC架构,讨论和分析了在J2EE平台基础上采用MVC体系结构来开发Web应用框架的细节,并结合三个当前流行的Java
开源项目(Struts、spring和Hibemate),构造一个支持快速开发的J2EE应用框架,通过一个购物网站的应用实例来验证其可用性。
MVC是软件设计的典型结构。
在这种设计结构下,一个应用被分为三个部分:Model、View和Controller,每个部分负责不同的功能。
Model是指对业务数据,信息的处理模块,包括对业务数据的存取,加工,综合等:View是指用户界面。
也就是面向用户的数据表示;Controller则负责View和Model之间的流程控制,也就是完成两个方向的动作:将用户界面(View)的操作映射到具体的Model,以完成具体的业务逻辑:将通过Model处理完的业务数据及时反应到用户界面(View)上.MVC架构使得应用程序的结构更加清晰。
通过将
代码按照层次划分为业务逻辑,数据、用户界面和应用流程控制这三个层次,增强
代码稳定性。
Struts是一个基于SunJ2EE平台的MVC框架,主要是采用Servlet和JSP技术来实现的。
Struts能充分满足应用开发的需求,简单易用,敏捷迅速。
Struts把Sorrier、JSP、自定义标签和信息资源整合到一个统一的框架中。
开发人员利用箕进行开发时不用再自己编码实现
全套MVC模式,极大的节省了H寸间,是一个非常不错的应用框架。
S曲ng是一个解决了许多在J2EE开发中常见的问题的强大框架。
spmg提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。
S研119的架构基础是基于使用JavaBean属性的InversionofControl容器。
Spring提供了唯一的数据访第1页东南大学硕士学位论文问抽象,包括简单和有效率的JDBC框架,极大的改进了效率并且减少了可能的错误。
spring的数据访问架构还集成了Hibernate和其他O/Rmapping解决
方案。
Spring还提供了唯一的事务管理抽象,它能够为各种底层事务管理技术提供一个一致的编程模型。
Spring提供了一个用标准Java语言编写的AOP框架,它给POIOs提供了声明式的事务管理和其他企业事务。
Hibernate是一个开放源
代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
Hibernate可以在应用F.JB的J2EE架构中取代CMP,完成数据持久化的重任。
在本文的应用框架体系实现过程中,主要是利用spring对Struts和Hibernate的集成功能来实现三者的有机结合,构建一个松散耦合的应用框架。
Struts负责MVC架构中视图和控制器之间的数据和控制逻辑传递;而在控制器中调度的业务模型则由Spring负责管理,为其提供事务、日志、缓存等服务,并通过Hibernate为业务模型提供持久化服务。
第2页第一章应用框絮概述第一章应用框架概述应用框架为基于其上构建的应用提供通用服务,使
代码和设计获得可扩展性、模块化和可重用性的好处。
1.1应用框架1.1.1框架框架的概念最早起源于Smalltalk环境,其中最著名的框架是Smalltalk80的用户界面框架MVC(Model-View,Controller)。
随着用户界面框架Interviews和ET.卜+的开发和发布,框架研究越来越受到研究人员的重视。
虽然框架研究是初起源于用户界面领域,但它还被成功地应用到其他领域中,如操作系统、火警系统等。
框架(Framework)是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例闻交互的方法;另一种定义认为,框架是可被应用开发者定制的应用骨架。
前者是从应用方面而后者是从目的方面给出的定义。
可以说,一个框架是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计,协作构件之问的依赖关系、责任分配和控制流程,表现为~组抽象类以及其实例之间协作豹方法,它为构件复用提供了上下文(Context)关系。
面向对象的框架作为一种可复用的软件,在基于框架的软件开发过程中会涉及到框架的开发和利用两个方面的工作。
框架的开发阶段在于产生领域中可复用的设计。
该阶段的主要结果是框架以及与框架相关的构件类。
该阶段的一个重要活动是框架的演变和维护。
象所有
软件一祥,框架也易于变化.产生变化的原因经多,如应用出错,业务领域变化等。
1.1.2使用框架软件系统发展到今天已经非常复杂,特别是服务器端软件,涉及到的知识,内容,问题太多。
在某些方瑟使用别人成熟盼挺架,就檑兰§于让别人帮你完成一些基础工{#,你只番要集中精力完成系统的业务逻辑设计。
而且框架~般是成熟,稳健的,它可以处理系统很多细节问题,如事物处理,安全性,方法执行跟踪、调用计时,日志等问题。
框架一般都经过多次应用,具有较高的可靠性和稳定性,而且它是不断升级的,你可以直接使用框架升级带来的新功能、新特性。
框架一般处在低层应用平台(如J2EE)和高层业务逻辑之问的中间层。
框架以实现系统的“高内聚,低耦合”为目标,易于使问题分解、便于控制和扩展系统。
第3页东南大学硕士学位论文1.1.3应用框架应用框架实现了某应用领域通用完备功能(除去特殊应用的部分)的底层服务??使用这种框架的编程人员可以在一个通用功能已经实现的基础上开始具体的系统开发。
框架提供了所有应用期望的默认行为的类集合。
具体的应用通过重写子类(该子类属于框架的默认行为)或组装对象来支持应用专用的行为。
1.1.4开发应用框架应用框架的最大好处就是重用。
面向对象系统获得的最大的复用方式就是应用框架,应用框架有助于系统在以下几方面达到重用的目的。
代码级别重用。
由于应用框架能重用
代码,从已有构件库中建立应用变得非常容易,因为构件都采用框架统一定义的接口,从而使构件间的
通信简单。
设计级别重用。
应用框架提供可重用的抽象算法及高层
设计,不但能将大系统分解成更小的构件,而且能描述构件间的内部接口。
这些标准接口使在已有的构件基础上通过组装建立各种各样的系统成为可能。
只要符合接口定义,新的构件就能插入框架中,构件设计者就能重用构架的设计。
分析级别重用。
所有的人员若按照框架的思想来分析事务,那么就能将它划分为同样的构件i采用相似的解决方法,从而使采用同一框架的分析人员之间能进行沟通。
采用框架技术进行软件开发的主要特点包括:??领域内的软件结构具有较好的一致性;??可以建立更加开放的系统;??重用
代码大大增加,软件生产效率和质量也得到了提高;??存储了经验,可以让经验丰富的人员去设计框架和领域构件;??允许采用快速原型技术,从而获得原型开发方法的好处;??有利于在一个项目内多人协同工作;??大粒度的重用使得平均开发费用降低,开发速度加快,开发人员减少,维护费用降低,而参数化框架使得适应性、灵活性增强。
1.1.5与框架相关的概念I.白盒与黑盒框架框架可分为白盒(Whim-Box)与黑盒(Black—Box)两种框架。
基于继承的框架被称为自盒框架。
所谓白盒即具备可视性,被继承的父类的内部实现细节对子类而言都是可知的。
利用白盒框架的应用开发者通过衍生子类或重写父类的成员方法来开发系统。
子类的实现很大程度上依赖于父类的实现,这种依赖性限制了重用的灵活性和完全性。
但解决这种局限性的方法可以是只继承抽象父类,因为抽象类基本上不提供具体的实现。
白盒框架是一个程序骨架,而用户衍生出的子类是这个骨架上的附属品??基于对象构件组装的框架就是黑盒框架。
应用开发者通过整理、组装对象来获得系统的实现。
用户只须了解构件的外部接口,无须了解内部的具体实现。
另外,组装比继承更为第4页第一章应用框架概述灵活,它能动态地改变,继承只是一个静态编译时的概念.在理想情况下,任何所需的功能都可通过组装已有的构件得到,事实上可获得的构件远远不能满足需求。
有时通过继承获得新的构件比利用已有构件组装新构件更容易,因此白盒和黑盒将同时应用于
系统的开发中。
不过白盒框架趋向于向黑盒框架发展,黑盒框架也是系统开发希望达到的理想目标。
2.热点,好莱坞原则框架一般都会包含“热点”(Hotspot)和。
冷冻点”(Frozenspot)。
。
热点”指框架用以支持具体应用定制的地方;“冷冻点”则是框架中相对稳定的部分,一般不会发生变化.成功的框架开发需要确定领域专用的“热点”。
应用开发者在框架的基础上进行开发,只须扩展框架的某些部分,。
热点”就是在应用领域的一种扩展槽,开发者根据自己的需要填充这些扩展槽。
“热点”使框架具有灵活性,在具体的实现中,扩展槽可以被看成是一些抽象类,开发者通过重写抽象方法获得具体实现。
框架的一个重要特征就是用户定义的方法经常被框架自身调用,而不是从用户的应用
代码中调用。
这种机制常称为“好莱坞原则”(HollywoodPrinciple)或“Don’tcallus;wellcallyou”。
第5页东南大学硕士学位论文1.2J2EE应用框架这里的J2EE应用框架是指处在低层J2EE平台和高层业务逻辑之间的中间层,该应用框架构建在J2EE平台之上,为高层业务逻辑提供方便的计时、缓存、授权、事务、日志、数据访问等系统级服务,这些服务都是构建企业级应用程序所需的基础设施。
厂司图1.2.1中间层J2EE应用框架1.2.1计时现代的Java应用程序通常是采用许多第三方组件的复杂的,多线程的、分布式的系统。
在这样的系统上,很难检测(或者分离出)性能问题或可靠性问题的根本原因,尤其是生产中的闯题。
对于闽题容易重现的情况来说,profiler这类传统工具可能有用,但是这类工具带来的开销造成在生产环境、甚至负载测试环境中使用它们是不现实的。
监视和检查应用程序和故障常见的一个备选策略是,为性能的关键
代码提供有关调用,记录使用情况,计时以及错误情况。
但是,这种方式要求在许多地方分散重复的
代码,而且要测量哪些
代码也需要经过许多试验和错误才能确定。
当系统变化时,这种方式既难维护,也很难深入进去。
这造成日后要求对性能需求有更好理解的时候,添加或修改应用程序的
代码变得很困难。
在集成了AOP(面向方面编程)的应用框架中,通过提供通用的模块化的计时关注点(在AOP中称之为“方面”),可以轻松的通过声明式方法为应用系统提供计时功能。
在应用系统的性能存在问题时,通过配置声明即可对系统关键区域进行计时,从而方便、准确地定位性能瓶颈,为改善系统性能提供帮助。
1.2.2缓存在开发应用程序时,经常会出现一些具有下列特征的
问题:??被处理的内容短时间不变,所以短时间内可以作为静态内容进行处理:??在一个不太长的时问内,放处理的内容可能或者必定产生变化,所以必须将他们作为动态内容进行处理;??在合理的时间区段内可以忽略被处理内容变化后带来的影响;??对这些内容的处理动作比较消耗系统性能,影响系统响应时间。
缓存技术可以帮助我们很好的解决这个问题。
在应用框架中,可以提供统一的缓存接第6页第一章应用框架概述口,既方便和简化应用程序使用缓存机制,又可以屏蔽不同缓存实现问的差异,方便我们根据实际需要切换不通的缓存实现。
1.2.3授权现在很多Web应用软件需要用户名和密码。
在大多数情况下,一个人的授权必须在网页间传递,或者维持在某种数据库状态。
在许多传统应用软件里,授权问题也必须考虑进去,所以访问一个系统的特殊部分只限于特殊的用户。
当一个用户尝试选择一个特殊选项时,控制将转移到特殊方法以请求该功能。
这个方法一般会先确定该用户是否拥有访问该功能的权限。
一般来说,对于同一个应用系统,确定用户权限的过程是相同的。
应用框架可以考虑将这一部分独立实现,利用AOP通过配置声明的方式为特定的应用功能指定允许访问的角色(或用户),提供授权服务。
1.2.4事务事务处理是大多数实际J2EE应用程序开发中至关重要的一部分。
应用程序中的处理事务一般有两种方法:程序性事务界定或声明性事务界定。
第一种方法要求您使用Java事务API(JTA),显式地为每个事务的begin,commit和rollback操作编写
代码。
在这种情况下,事务界定
代码与实现业务逻辑的
代码混杂在一起。
第二种方法是声明性事务界定,它不包含任何额外的编码
工作。
在实际应用中我们可以通过AOP来实现声明性事务界定。
在这种情况下,实现的业务逻辑可以保持可移植性,而且不需要重写实现,就能调整事务性行为。
在多数情况下,声明性事务界定是首选选项。
通过在应用框架中集成AOP,可以为高层应用提供一致的声明式事务处理方法,并使切换提供事务服务的事务管理器成为可能。
1.2.5日志在企业级的开发过程中,我们不可避免地会碰到很多问题;如果希望在开发过程的后期能够有效地捕捉bug,需要一种有效的日志策略。
在将经过严格测试的应用
程序最终交付终端用户的手里时,却会出现一些预想不到的问题。
如果没有适当的日志消息,可能需要花费几天的时间来诊断这些问题。
日志应可以设定不同的级别(debug、info、warning和error),消息格式可以根据需要设置,提供对日志文件的管理等日志相关的属性。
在应用框架中,可以为高层应用提供一致的用于记录日志的接口,提供一致的格式。
通过不同的接口实现,屏蔽不同日志工具间的差异,使得高层应用可以简单的修改配置文件达到切换日志工具。
1.2.6数据访问应用框架通过ORM(对象关系映射)机制,可以简化高层应用的数据访问。
高层应用直接使用DAO对业务对象进行数据库的CRUD操作,避免了繁杂的JDBC操作,使高层应用的开发人员能够专注于业务逻辑,提高了应用开发的效率和系统的可靠性。
第7页东南大学硕士学位论文2.1MVC概述第二章MVC体系结构Mvc即Model.View.Controller的缩写,是一种
常用的体系结构模式。
MVC包括三类对象,模型Mode!是应用对象,视图、,iew是它在屏幕上的的表示,控制器Controller定义用户界面对用户输入的响应方式。
不使用MVC,用户界面设计往往将这些对象混在一起,而MvC则将它们分离以提高灵活性和复用性。
其基本结构如图2-1—1所示??图2.1.1MVC体系结构≯ModeI(模型)模型包含应用程序的核心功能。
模型封装了应用程序的状态。
有时它包含的唯一功能就是状态。
它对视图或控制器一无所知。
≯View(视图)视图提供模型的表示。
它是应用程序的外观。
视图可以访问模型的读方法,但不能访问写方法。
此外,它对控制器一无所知。
当更改模型时,视图应得到通知。
>Controller(控制器)控制器对用户的输入作出反应。
它创建并设置模型。
MVC通过建立一个“订购,通知”协议来分离视图和模型。
视图必须保证它的显示正确地反映了模型的状态,一旦模型的数据发生变化,模型将通知有关的视图,每个视图相应地得到刷新自己的机会。
这种方法可以让你为一个模型提供不同的视图表现形式,也能够为一个模型创建新的视图而无须重写模型。
MVC的工作原理如图2-1.2所示。
第8页第二章MVC体系结构图2-l-2MVC的工作原理第9页东南大学硕士学位论文2.2基于Web的MVCWeb应用向软件开发人员提出了一些特有的挑战,最明显的就是客户机和服务器的无状态连接。
这种无状态行为使得模型很难将更改通知视图。
在Web应用中,为了发现对应用程序状态的修改,浏览器必须重新
查询服务器。
另一个重大变化是实现视图所用的技术(HnⅢ,语言)与实现模型或控制器的技术不同。
当然。
我们可以使用Java(或者PERt,、c,C++或别的语言)
代码生成}Ⅱ咖.。
这种方法有几个缺点:Java程序员应该开发服务,而不是HTML。
更改布局时需要更改
代码。
服务的用户应该能够创建网页来满足它们的特定需要。
网页设计人员不能直接参与网页开发。
嵌在
代码中的HTML很难看。
为了解决以上问题,早期的JSP规范提出了两种用JSP技术建立应用程序的方式。
这两种方式在术语中分别称作JSPModel1和JSPModel2,它们的本质区别在于处理批量请求的位置不同。
在Modell体系中,如图2-2-l所示,JSP页面独自响应请求并将处理结果返回客户。
这里仍然存在表达与内容的分离,尽管Modell体系十分适合简单应用的需要,因为所以的数据存取都是由bean来完成的。
它却不能满足复杂的大型应用程序的实现。
不加选择地随意运用Model1,会导致JSP页内被嵌入大量的脚本片段或Java
代码,特别是当需要处理的请求量很大时,情况更为严重。
尽管这对于Java程序员来说可能不是什么大问题,但如果JSP页面是由网页设计人员开发并维护的一一通常这是开发大型项目的规范一一这就确实是个问题了。
从根本上讲,将导致角色定义不清和职责分配不明,给项目管理带来不必要的麻烦。
图2-2.1JSPModd1体系结构Model2体系结构,如图2-2-2所示,是一种把JSP与Servlets联合使用来实现动态内容服务的方法。
它吸取了两种技术各自的突出优点,用JSP生成表达层的内容,让Servlets完成深层次的处理任务。
在这里,Servlets充当控制者的角色,负责管理对请求的处理。
创第10页第二章MVC体系结构建JSP页需要使用的bean和对象,同时根据用户的动作决定把那个JSP页传给请求者。
特别要注意,在JSP页内没有处理逻辑;它仅负责检索原先由Servlets创建的对象或beans,从Servlct中提取动态内容插入静态模板。
在我看来,这是一种有代表性的方法,它清晰地分离了表达和内容,明确了角色的定义以及开发者与网页设计者的分工。
事实上,项目越复杂,使用Model2体系结构的好处就越大。
图2-2.2JSPModel2体系结构(圈中instantlate袭示瞬间延时)Model2被认为区别于MVC的一个原因是,。
订购,翊&知”协议不能在web环境内工作的很好。
HTTP是一个“拉”的协议:客户请求后服务器才响应,没有请求就没有响应。
而。
订购,通知”协议需要一种“推”协议来进行通知,以便服务器能在模型改变时将信息推送到客户端。
第1l页东南大学硕士学位论文第三章MVC视图层的研究本章对MVC视图层的研究是指在J2EE平台基础上采用MVC体系结构来开发Web应用框架时,如何实现MVC的视图层。
本章首先讨论了实现MVC的视图层的底层基础技术,接着讨论了在底层技术的基础上实现的视图技术。
3.1基础技术J2EEWeb应用建立在HTrP协议和多种基础技术之上。
HTIV协议是目前所以Web应用的基础.Servlet和JSP是J2EE平台提供的实现视图层的基础技术,JSP标签有助于我们在构建视图时提高复用能力,JavaBean技术在视图层的作用在于简化了数据在视图层和控制层自己的传递。
3.1.1超文本传输协议(HTTP)HTrP是一种基于TCP/IP的应用层协议,由于其简捷、快速的方式,适用于分布式和合作式超媒体信息系统。
自1990年起,HrrP就已经被应用于WWW全球信息服务系统。
HTTP是一种请求,响应式的协议。
一个客户机与服务器建立连接后,发送一个请求给服务器,请求的格式是:统一资源标识符(URI)、协议版本号,后面是类似MIME的信息,包括请求修饰符、客户机信息和可能的内容。
服务器接到请求后,给予相应的响应信息,其格式是:一个状态行包括信息的协议版本号、一个成功或错误的
代码,后面也是类似MIME的信息,包括服务器信息,实体信息和可能的内容。
在7种请求方法中,GET和POST是用得最多的。
Hm是一种无状态协议,并不在请求间保持状态信息。
不适合于需要跟踪用户状态的动态应用。
通过Cookie和URL重写可以在请求间跟踪用户状态。
Cookie是一种特殊的信息包,存储于用户的
计算机中。
URL重写是在页面地址中存储一个特殊的标记,Java服务器可以用它来跟踪用户。
这两种方法都不是无缝的,无论用哪一个都意味着在开发时都要进行额外的工作.对其本身来说,标准的}nTP服务器并不传输动态内容,它主要是使用请求来定位文件资源,并在响应中返回此资源。
通常这里的文件使用HTML进行格式化,以使浏览器可以显示它们。
HTML页面通常包含一些到其他页面的超文本链接。
也可以显示其他一些内容(比如图像和视频等等).用户点击链接时将产生另一个请求,开始一个新的处理过程。
3.1.2JavaSen,letSun公司的lavaServlet平台直接解决了CGI程序的两个主要缺点。
首先,Servlet比常规CGI程序提供更好的性能和资源利用。
其次,。
一次编写,随处运第12页第三章MVC视图层的研究行”的Java特性意味着Servlet在有JVM的操作系统间可以轻便地移动。
Servlet看起来好像是一个微小的Web服务器。
它接受请求并产生响应。
但和Web服务器不同的是,ServletAPI专门设计来帮助Java开发人员创建动态应用的。
Servlet本身是要编译成字节码的Java类,就像其他Java对象一样。
Servlet访问ImP特定服务的API,但它仍然是一个运行于程序之中的Java对象,并可以利用所有的Java资产。
为了使Web服务器能访问Servlet,Servlet被安插在一个容器之中。
Servlet容器连接到Web服务器。
每个Servlet都可以宣称它可以处理何种样式的URL。
当符合所
注册样式的请求到达时,Web服务器将请求传递给容器,容器则调用响应的Servlet。
但和CGI程序不同,Servlet是多线程的,不是针对每个请求都要创建一个新的Servlet对象。
一旦容器实例化了一个Servle对象,它就仅为每个新的请求创建一.