- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于JSP Srvlet的Web应用框架的设计与实现
基于JSP /Servlet的Web应用框架的设计与实现
周云,余青松,敬宗儒
华东师范大学计算中心,上海200062
摘要:Web应用程序的开发过程中存在着Framework的应用。这些Framework使开发过程十分规范。它们自动地处理了部分非业务逻辑的过程.从而使得程序员的主要精力专注于业务逻辑的实现。文中设计并且实现了一个简单的Framework模型,实现了部分的自动化处理。该模型的构建,验证了采用最基本的Java语言工具以及设计方式实现Framework的可能性。
关键词:Web应用框架;MVC;设计和实现
0 .引言
在开发Web应用程序的过程中,特别是JSP应用程序,到处充斥着Framework的应用。这些Framework的技术相当成熟,规范十分完整。它们对于程序员的编码规范以及后台Model实体的管理相当完善。文中关注的重点是如何用最基本的Java语言工具和设计方式来设计和实现一个带有自动化操作功能的Framework,从而深人理解一些Framework内在处理机制。
1. Framework概述
人们需要一个Framework来对软件开发提供支持,并且对程序员所书写的代码进行规范。
一些公共的非逻辑的处理过程应该做成共通模块,一些不好的编成习惯应该得到限制和纠正。同时,与数据库打交道的数据Model也应该得到妥善管理。另外,这些操作的共通特性都是高于模块级别但又属于代码级别的。所以,应该设计出一个类似于规约性质同时又是以实际代码形式出现的管理体制。于是,Framework便诞生了。
目前流行的Framework有很多,比如Struts,印ring,JS F等等[I]。它们使JSP程序员从散兵游勇转化为了正规军。它们的共同点都是拥有自动化操作“前端”以及资源管理的“后端”.笔者参照Struts的前端自动化操作过程设计并且实现了一个Framework模型,希望借此深入了解一些Framework的内部实现机制。
2. Framework模型的设计原则
最根本的原则是Framework要给开发过程带来便利,使得开发过程更加规范完善。为了实 现 这个根本原则,必须解决两个问题:
1 尽量将非业务逻辑自动化处理;
2 将程序员的发挥空间进行限制。
对于第一个问题,通过对比研究可以发现,前台视图层回传参数一Servlet接受参数,并将参数封装到一个对象当中~Servlet选择正确的视图,并且进行显示,这三个步骤与业务逻辑没有关系[21。不管你是什么业务逻辑,这三个步骤总会独立地执行。业务逻辑只会出现在这三个步骤的间隙之间。应该据此对这三个步骤分别进行封装,实现自动化处理。
对于第二个问题,可以提出一个简单的解决办法:让程序员“只可能将正确的代码写在正确的地方”。把其他与业务逻辑没有关系的代码全部进行封装即可。
综合所述,文中所描述的Framework模型的设计原则就是,封装非业务逻辑的操作,限制程序员的自由度。当然,这只是一个Framework模型初步设计与实现,进一步的应用,需要按照标准的封装方式完善整个Framework模型。
3. Framework模型的设计
Web程序的设计遵循现在成熟的MVC设计模式。Model的设计组合独立于Framework之外。View是属于前台视图层。Controler负责接收参数,调用对应的业务模型实体进行处理,返回对应的视图。由此可见,对于业务模型实体的设计重要的一点就是它要能够自动地生成并且被Controller自动地调用,同时Controller还必须将对应的数据缓冲区传递给它。那么业务模型所需要的就是一个标记,一个能够表明它身份的标记。Framework模型的框架如图1所示,其Sequence图如图2所示;其UM类图如图3所示。
3.1 获取前台视图传回的参数
先从获取前台视图传回的参数开始进行分析。
既然要对这个过程进行自动处理,那么程序要获取HttpServletRequest当中各个参数的名字,进行数据缓冲的实体的引用,进行数据缓冲实体当中各个对应属性的名字,进行属性设置和读取的所有方法的名字。可以利用Java的RTTI机制解决这个问题。
3.2 获取相应的ActionForm实体 数据缓冲区 引用
如果获取了HttpServletRequest当中所有的参数名字以及值,那么就可以把它们封装到一个具体的实体当中。简言之,这个实体就是一个普通的Java类实体。那么,这一步所遇到的问题就是如何获得这个实体的引用。因为这个实体的创建应该由程序员完成,所以实体的类型就是千差万别的。针对这种情况,应该把这些类做统一的管理,即把它们全部继承自一个Framework系统当中定义的基类。
同时,由于Action-Form只是纯粹的数据实体,业务处理方法没有存在的必要,所以Act
文档评论(0)