- 1、本文档共5页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Dorado和SSH框架集成开发模式.doc
Dorado与Struts、Hibernate、Spring的集成开发模式
dorado是一套成熟的Web应用开发套件, 其中包含了一个完整的具有下一代Web应用特征的表现层解决方案。本文着重介绍了如何利用dorado的表现层与目前较为流行的Struts、Hibernate、Spring进行协同开发。
图表 1基于MVC模式的总体框架图
上图是利用dorado的表现层与目前较为流行的Struts、Hibernate、Spring进行协同开发的总体框架图。从此图中我们不难看出与传统的MVC的开发模式的最大区别在于View部分dorado的表现层实现。
发起请求
从浏览器发出请求开始(如图中的1号箭头)。该请求首先将被Struts的ActionServlet接,然后ActionServlet会根据用户的Struts配置确定应触发哪一个具体的Action。
调用业务逻辑
Action的主要任务是调用某一个业务逻辑对象BO(Business Object)完成相应的业务操作。由于我们在此框架考虑引入了Spring,因此Action将不必直接创建具体的BO。而是通过Spring框架利用反向注入的原理(I)来得到BO的实例。在BO当中我们应当通过数据访问对象DAO(Data Access Object)来实现对数据的访问操作。由于我们考虑在开发模式中引入Spring。因此,此处具体使用的DAO实例也应通过Spring来获取。为了更好地实现业务逻辑的面向对象化,我们还可以考虑利用Hibernate来作为DAO的具体实现方式。如此便有的了上图中所展示的Model层的架构。最终在整个系统中DAO成为了唯一的数据库访问途经。通常我们可以将此图中的DAO和Hibernate统称为数据持久层。另外,在某些情况我们也可以考虑简化此处的持久层设计。由于Hibernate本身就可以作为独立的持久层实现,因此也可以将此处的DAO对象省去,直接在BO中利用Hibernate完成数据访问。当我们的Action完成了对BO的调用之后,我们应当将业务逻辑结果直接存入到上下文对象(Context)当中,以便于稍后的View能够得到这些数据并用于界面的绘制和展现。在通常模式下BO的执行结果都是以VO(Value Object)的方式返回的。VO既可以独立的JavaBean也可以是JavaBean的集合(Collection, 例如:List 、Set) 。
转发请求
当Action完成上述操作之后Struts应根据BO的执行结果和用户的配置将请求转发给某个具体的JSP来实现界面的展现。由于此处引入了dorado的表现层,因此JSP的作用已被弱化为了单一的对视图模型(ViewModel)中的各种可视化对象进行布局。视图模型是一种用户描述视图逻辑的对象。例如我们要将表格如何显示、单击按钮后要完成什么动作、下拉框如何进行赋值等信息都归纳为视图逻辑。视图模型只负责声明和描述对象,而不负责对象的具体摆放位置。视图模型无法独立的访问View层之外的数据,视图模型只能引用在数据模块(Module)中定义的数据。数据模块是dorado的表现层中专门用于访问外部数据的一种对象。例如在此处的开发模式中我们就利用数据模块来访问BO返回的执行结果。
值对象(VO)的传递
由于我们不能把数据模块的激活和BO的调用看作是一个同步的过程。因此数据模块无法直接得到BO返回的执行结果,而只能通过上下文对象来获取BO返回的VO。此处的上下文对象一般是指Request对象的Attributies属性集。数据模块在得到VO之后需要自动将VO中包含的信息反射成dorado中的数据集(Dataset)。由于此种数据转化在某些极端的情况是非常复杂的(例如VO的多级集合嵌套),因此我们必要定义一些描述信息来辅助dorado按照正确的方式进行数据转换。值得庆幸的是dorado的Studio可以自动生成绝大部分的描述信息。我们只需要根据实际情况在必要的时候对这些描述信息做少量的调整就可以了。
反馈VO的信息被正确的转化到Dataset中之后,dorado的Module和ViewModel将按照其标准的方式运行,并最终通过JSP将视图信息反馈给浏览器。此处,dorado的表现层之所以需要数据模块、视图模型和JSP的协同工作是为了更好的实现代码的重用。
综上个步骤,我们不难看出dorado与Struts、Hibernate、Spring这些产品进行整合的关键在步骤4,即如何将VO转换成dorado中的Dataset。而且事实上dorado的对象本身完全不需要对Struts、Hibernate、Spring中的任何对象进行直接调用。这种松耦合的结合方式可以充分的保证系统架构将来的灵活性和扩展性。
结论
文档评论(0)