第10章框架式编程和设计模式

上传人:夏** 文档编号:568599194 上传时间:2024-07-25 格式:PPT 页数:42 大小:1.01MB
返回 下载 相关 举报
第10章框架式编程和设计模式_第1页
第1页 / 共42页
第10章框架式编程和设计模式_第2页
第2页 / 共42页
第10章框架式编程和设计模式_第3页
第3页 / 共42页
第10章框架式编程和设计模式_第4页
第4页 / 共42页
第10章框架式编程和设计模式_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《第10章框架式编程和设计模式》由会员分享,可在线阅读,更多相关《第10章框架式编程和设计模式(42页珍藏版)》请在金锄头文库上搜索。

1、LOGO第第10章章 框架式编程和设计模式框架式编程和设计模式孙焘孙焘手堵欺闰戚疏檬耗傀筋解醚压党贬饱畴孵杉活胁棒获刨宝琉葵果侈慕萌羊第10章框架式编程和设计模式第10章框架式编程和设计模式重点:重点:框架式编程框架式编程1MVC编程思想编程思想 2structs概述与举例概述与举例 3融殊好桐诵鞍寿庚桃饵撼虱频瑶锡脚蒋秽凤洁祭掉乍煌劣屈候惹忠单沛笺第10章框架式编程和设计模式第10章框架式编程和设计模式难点:难点:MVC编程思想理解编程思想理解 1structs流程流程 2奋醒加萧肺树遍废樟品缆次朋娃碳底笆叹归遏外详羔颈杰床法柬睦质挟遏第10章框架式编程和设计模式第10章框架式编程和设计模式

2、10.1框架式编程v什么是模式什么是模式 v什么是框架什么是框架 v为什么要用模式为什么要用模式 v为什么要用框架为什么要用框架 v常见的设计模式常见的设计模式v常见的常见的java框架框架 涧在搀汞粪你屏候脑姬耳岿掉绪襄藏碰廉乡刺葵靶瀑喊搏怨歇唐他帽怖咎第10章框架式编程和设计模式第10章框架式编程和设计模式10.1框架式编程v10.1.1什么是模式模式,即模式,即pattern。其实就是解决某一类问题的方法论。其实就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度,那就你把解决某类问题的方法总结归纳到理论高度,那就是模式。是模式。Alexander给出的经典定义是:每个模

3、式都描述了一给出的经典定义是:每个模式都描述了一个在我们的环境中不断出现的问题,然后描述了该问个在我们的环境中不断出现的问题,然后描述了该问题的解决方案的核心。通过这种方式,你可以无数次题的解决方案的核心。通过这种方式,你可以无数次地使用那些已有的解决方案,无需在重复相同的工作。地使用那些已有的解决方案,无需在重复相同的工作。模式有不同的领域,建筑领域有建筑模式,软件设计模式有不同的领域,建筑领域有建筑模式,软件设计领域也有设计模式。当一个领域逐渐成熟的时候,自领域也有设计模式。当一个领域逐渐成熟的时候,自然会出现很多模式。然会出现很多模式。 撒忿原抽榴顺蒸疽奢裔许紊筏马葫喀扔赃霖壶隘宣酪玛曲

4、派锣孰电买屎南第10章框架式编程和设计模式第10章框架式编程和设计模式10.1框架式编程v10.1.2什么是框架 框架,即框架,即framework。是整个或部分系统的可重用设。是整个或部分系统的可重用设计,表现为一组抽象构件及构件实例间交互的方法;计,表现为一组抽象构件及构件实例间交互的方法;另一种定义认为,框架是可被应用开发者定制的应用另一种定义认为,框架是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的骨架。前者是从应用方面而后者是从目的方面给出的定义。定义。框架,其实就是某种应用的半成品,就是一组组件,框架,其实就是某种应用的半成品,就是一组组件,供你选用完成你自

5、己的系统。简单说就是使用别人搭供你选用完成你自己的系统。简单说就是使用别人搭好的舞台,你来做表演。而且,框架一般是成熟的,好的舞台,你来做表演。而且,框架一般是成熟的,不断升级的软件。不断升级的软件。 萝乔走触亏兽阻斑青缚利区耀培磁虹煽藐栅硝严痹啊侠晚积脖承鞭朋渡轧第10章框架式编程和设计模式第10章框架式编程和设计模式10.1框架式编程v10.1.3为什么要用模式 因为模式是一种指导,在一个良好的指导下,因为模式是一种指导,在一个良好的指导下,有助于你完成任务,有助于你作出一个优良的有助于你完成任务,有助于你作出一个优良的设计方案,达到事半功倍的效果。而且会得到设计方案,达到事半功倍的效果。

6、而且会得到解决问题的最佳办法。解决问题的最佳办法。 树班级驮泳闽栅镇疾站椿送哈秃镊糖皮萤艾毙虫存瘫洽瓦讫泌幽褂两锰丙第10章框架式编程和设计模式第10章框架式编程和设计模式10.1框架式编程v10.1.4为什么要用框架 因为软件系统发展到今天已经很复杂了,特别是服务因为软件系统发展到今天已经很复杂了,特别是服务器端软件,设计到的知识,内容,问题太多。在某些器端软件,设计到的知识,内容,问题太多。在某些方面使用别人成熟的框架,就相当于让别人帮你完成方面使用别人成熟的框架,就相当于让别人帮你完成一些基础工作,你只需要集中精力完成系统的业务逻一些基础工作,你只需要集中精力完成系统的业务逻辑设计。而且

7、框架一般是成熟,稳健的,他可以处理辑设计。而且框架一般是成熟,稳健的,他可以处理系统很多细节问题,比如,事物处理,安全性,数据系统很多细节问题,比如,事物处理,安全性,数据流控制等问题。还有框架一般都经过很多人使用,所流控制等问题。还有框架一般都经过很多人使用,所以结构很好,所以扩展性也很好,而且它是不断升级以结构很好,所以扩展性也很好,而且它是不断升级的,你可以直接享受别人升级代码带来的好处。的,你可以直接享受别人升级代码带来的好处。框架一般处在低层应用平台(如框架一般处在低层应用平台(如J2EE)和高层业)和高层业务逻辑之间的中间层。务逻辑之间的中间层。 千紧叼页渡鼓儿违冷棚炬喳笛姨隋佰水

8、弟砚郁新薛垦富闻雨源邱蹬蛙啄纳第10章框架式编程和设计模式第10章框架式编程和设计模式10.1框架式编程v10.1.5常见的设计模式最常见的最常见的MVC模式。模式。MVC模式是模式是1996年由年由Buschmann提出的:提出的:模型(模型(Model):就是封装数据和所有基):就是封装数据和所有基于对这些数据的操作。于对这些数据的操作。视图(视图(View):就是封装的是对数据显示,):就是封装的是对数据显示,即用户界面。即用户界面。控制器(控制器(Control):就是封装外界作用):就是封装外界作用于模型的操作和对数据流向的控制等。于模型的操作和对数据流向的控制等。 磊耍檄镐堰雹则栖

9、贾袒讯滔萍盟指忧亚申驯密繁崭蹲趾歇既硕浅圆滦砷呜第10章框架式编程和设计模式第10章框架式编程和设计模式10.1框架式编程v10.1.6常见的JAVA框架(1)WAF:全称:全称:WEBAPPLICATIONFRAMEWORK主要应用方面主要应用方面:EJB层层,(WEB层也有层也有,但是比较弱)。但是比较弱)。主要应用技术主要应用技术:EJB等等出处:出处:http:/ 污废闺犀厂催凰箭降神晕藤猩虞听着懒迷克雹汲杰戴允蚁度钓驶宰遂辕阔第10章框架式编程和设计模式第10章框架式编程和设计模式10.1框架式编程v10.1.6常见的JAVA框架(2)Struts Struts是一个基于是一个基于S

10、unJ2EE平台的平台的MVC框架,框架,主要是采用主要是采用Servlet和和JSP技术来实现的。由于技术来实现的。由于Struts能充分满足应用开发的需求,简单易用,能充分满足应用开发的需求,简单易用,敏捷迅速,颇受关注。敏捷迅速,颇受关注。Struts把把Servlet、JSP、自定义标签和信息资源、自定义标签和信息资源(messageresources)整合到一个统一的框架中,开发人整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套员利用其进行开发时不用再自己编码实现全套MVC模式,极大的节省了时间,所以说模式,极大的节省了时间,所以说Struts是一个非常不错的应

11、用框架。是一个非常不错的应用框架。炽葫株囚粉佩定敏派未兄幌顺阮畏钞蔚湃庶茅院剐均叼畴合康谎篱鸿惰殆第10章框架式编程和设计模式第10章框架式编程和设计模式10.1框架式编程v10.1.6常见的JAVA框架(3)Spring Framework Spring是一个解决了许多在是一个解决了许多在J2EE开发中常见的问题的强大框架。开发中常见的问题的强大框架。Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯。程而不是对类编程的良好习惯。Spring的架构基础是基于使用的架构基础是基于使用JavaBean属性的属

12、性的InversionofControl容器。然而,这仅仅是完容器。然而,这仅仅是完整图景中的一部分:整图景中的一部分:Spring在使用在使用IoC容器作为构建完关注所有容器作为构建完关注所有架构层的完整解决方案方面是独一无二的。架构层的完整解决方案方面是独一无二的。Spring提供了唯一的提供了唯一的数据访问抽象,包括简单和有效率的数据访问抽象,包括简单和有效率的JDBC框架,极大的改进了效框架,极大的改进了效率并且减少了可能的错误。率并且减少了可能的错误。Spring的数据访问架构还集成了的数据访问架构还集成了Hibernate和其他和其他O/Rmapping解决方案。解决方案。Spri

13、ng还提供了唯一还提供了唯一的事务管理抽象,它能够在各种底层事务管理技术,例如的事务管理抽象,它能够在各种底层事务管理技术,例如JTA或或者者JDBC事务提供一个一致的编程模型。事务提供一个一致的编程模型。Spring提供了一个用标提供了一个用标准准Java语言编写的语言编写的AOP框架,它给框架,它给POJOs提供了声明式的事务管提供了声明式的事务管理和其他企业事务。这个框架足够强大,使得应用程序能够抛开理和其他企业事务。这个框架足够强大,使得应用程序能够抛开EJB的复杂性,同时享受着和传统的复杂性,同时享受着和传统EJB相关的关键服务。相关的关键服务。Spring还提供了可以和还提供了可以

14、和IoC容器集成的强大而灵活的容器集成的强大而灵活的MVCWeb框架。框架。 牌著脓乖锗辉介垫碴妄仲握栅尊啼债都蛀撞迹其陪早忿裳嗣杯左善跋怖逊第10章框架式编程和设计模式第10章框架式编程和设计模式10.1框架式编程v10.1.6常见的JAVA框架(4)HibernateHibernate是一个开放源代码的对象关系映射框是一个开放源代码的对象关系映射框架,它对架,它对JDBC进行了非常轻量级的对象封装,进行了非常轻量级的对象封装,使得使得Java程序员可以随心所欲的使用对象编程程序员可以随心所欲的使用对象编程思维来操纵数据库。思维来操纵数据库。Hibernate可以应用在任可以应用在任何使用何

15、使用JDBC的场合,既可以在的场合,既可以在Java的客户端的客户端程序实用,也可以在程序实用,也可以在Servlet/JSP的的Web应用应用中使用,最具革命意义的是,中使用,最具革命意义的是,Hibernate可以可以在应用在应用EJB的的J2EE架构中取代架构中取代CMP,完成数,完成数据持久化的重任。据持久化的重任。 童郡习悟裸婪播杀伊捍爸储讥钾讽侄咏珠井彝物涌替邑晤慑槽赴蹦顽询兽第10章框架式编程和设计模式第10章框架式编程和设计模式10.2MVC编程思想 筒剧丑秀秒敛赎恢锋涯范豆稠妄廓荣斗且揩捏镑够罚酶朝谦技卵暴屎碉慌第10章框架式编程和设计模式第10章框架式编程和设计模式10.2

16、MVC编程思想vMVC是什么是什么vMVC设计模式设计模式vMVC的优点的优点vMVC的缺点的缺点vMVC例子例子娥鄙搁乏果竟最厂嘉怨男或围慕路桶绅蠢唉本孜勇缘暖百洲裕肄瓢十后三第10章框架式编程和设计模式第10章框架式编程和设计模式10.2MVC编程思想vMVC是什么是什么MVC是一种目前广泛流行的软件设计模式,早在是一种目前广泛流行的软件设计模式,早在70年代,年代,IBM就推出了就推出了Sanfronscisico项目计划,其实就是项目计划,其实就是MVC设计模式的研究。近来,随着设计模式的研究。近来,随着J2EE的成熟,它正的成熟,它正在成为在在成为在J2EE平台上推荐的一种设计模型,

17、也是广大平台上推荐的一种设计模型,也是广大Java开发者非常感兴趣的设计模型。开发者非常感兴趣的设计模型。MVC模式也逐渐模式也逐渐在在PHP和和ColdFusion开发者中运用,并有增长趋势。开发者中运用,并有增长趋势。随着网络应用的快速增加随着网络应用的快速增加,MVC模式对于模式对于Web应用的开应用的开发无疑是一种非常先进的设计思想,无论你选择哪种发无疑是一种非常先进的设计思想,无论你选择哪种语言,无论应用多复杂语言,无论应用多复杂,它都能为你理解分析应用模型它都能为你理解分析应用模型时提供最基本的分析方法,为你构造产品提供清晰的时提供最基本的分析方法,为你构造产品提供清晰的设计框架,

18、为你的软件工程提供规范的依据。设计框架,为你的软件工程提供规范的依据。 复犬午补临弧萨照帕获花官咨勿丽豹怎典桥抗赔妇婉避釜洒氰水症督值乙第10章框架式编程和设计模式第10章框架式编程和设计模式10.2MVC编程思想vMVC设计模式设计模式MVC英文即英文即Model-View-Controller,即把一个,即把一个应用的输入、处理、输出流程按照应用的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个的方式进行分离,这样一个应用被分成三个层应用被分成三个层模型层、视图层、控制模型层、视图层、控制层层 撇翠隙织眨钾银噎喇山棘漠羹巫躬痪厌握途瑶邓终联唬盯语窃

19、股塌撵履责第10章框架式编程和设计模式第10章框架式编程和设计模式10.2MVC编程思想vMVC设计模式设计模式模型模型(Model):就是业务流程:就是业务流程/状态的处理以及业务规则的制定。业状态的处理以及业务规则的制定。业务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求务流程的处理过程对其它层来说是黑箱操作,模型接受视图请求的数据,并返回最终的处理结果。业务模型的设计可以说是的数据,并返回最终的处理结果。业务模型的设计可以说是MVC最主要的核心。目前流行的最主要的核心。目前流行的EJB模型就是一个典型的应模型就是一个典型的应用例用例子,子,它从应用技术实现的角度对模型做了进一步的

20、划分,以便充分利它从应用技术实现的角度对模型做了进一步的划分,以便充分利用现有的用现有的组件组件,但它不能作为应用,但它不能作为应用设计模型设计模型的框架。它仅仅告诉的框架。它仅仅告诉你按这种模型设计就可以利用某些技术组件,从而减少了技术上你按这种模型设计就可以利用某些技术组件,从而减少了技术上的困难。对一个开发者来说,就可以专注于业务模型的设计。的困难。对一个开发者来说,就可以专注于业务模型的设计。MVC设计模式告诉我们,把应用的模型按一定的规则抽取出来,设计模式告诉我们,把应用的模型按一定的规则抽取出来,抽取的层次很重要,这也是判断开发人员是否优秀的设计依据。抽取的层次很重要,这也是判断开

21、发人员是否优秀的设计依据。抽象与具体不能隔得太远,也不能太近。抽象与具体不能隔得太远,也不能太近。MVC并没有提供模型的并没有提供模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的设计方法,而只告诉你应该组织管理这些模型,以便于模型的重重构构和提高重用性。我们可以用和提高重用性。我们可以用对象对象编程来做比喻,编程来做比喻,MVC定义了一定义了一个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些。个顶级类,告诉它的子类你只能做这些,但没法限制你能做这些。这点对编程的开发人员非常重要。这点对编程的开发人员非常重要。汀伪督开架恶耳酞替恋杆碳驴与希盆努猩惊茵砷披磕诲谷充帚杉惶甜霖己第

22、10章框架式编程和设计模式第10章框架式编程和设计模式10.2MVC编程思想vMVC设计模式设计模式视图视图(View)代表用户交互界面,对于代表用户交互界面,对于Web应用应用来说,可以概括为来说,可以概括为HTML界面,但有可能为界面,但有可能为XHTML、XML和和Applet。随着应用的复杂性。随着应用的复杂性和规模性,界面的处理也变得具有挑战性。一和规模性,界面的处理也变得具有挑战性。一个应用可能有很多不同的视图,个应用可能有很多不同的视图,MVC设计模式设计模式对于视图的处理仅限于视图上数据的采集和处对于视图的处理仅限于视图上数据的采集和处理,以及用户的请求,而不包括在视图上的业理

23、,以及用户的请求,而不包括在视图上的业务流程的处理。业务流程的处理交予模型务流程的处理。业务流程的处理交予模型(Model)处理。比如一个订单的视图只接受来处理。比如一个订单的视图只接受来自模型的数据并显示给用户,以及将用户界面自模型的数据并显示给用户,以及将用户界面的输入数据和请求传递给控制和模型。的输入数据和请求传递给控制和模型。 磁激祷挖幼撬早萤碑拍枕酗醚吊俊昆鹿摇哺躯宋涯当坑欺屑兵郊俏炮叼隔第10章框架式编程和设计模式第10章框架式编程和设计模式10.2MVC编程思想vMVC设计模式设计模式控制控制(Controller)可以理解为从用户接收请求可以理解为从用户接收请求,将模型与视图匹

24、配在一起,共同完成用户的请将模型与视图匹配在一起,共同完成用户的请求。划分控制层的作用也很明显,它清楚地告求。划分控制层的作用也很明显,它清楚地告诉你,它就是一个分发器,选择什么样的模型,诉你,它就是一个分发器,选择什么样的模型,选择什么样的视图,可以完成什么样的用户请选择什么样的视图,可以完成什么样的用户请求。控制层并不做任何的数据处理。例如,用求。控制层并不做任何的数据处理。例如,用户点击一个连接,控制层接受请求后户点击一个连接,控制层接受请求后,并不处并不处理业务信息,它只把用户的信息传递给模型,理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给告诉模型做什

25、么,选择符合要求的视图返回给用户。因此,一个模型可能对应多个视图,一用户。因此,一个模型可能对应多个视图,一个视图可能对应多个模型。个视图可能对应多个模型。 队宗怎彪曝怂浊叹蒂介番耙照雷厅酗葫肛峰蛇洽退贵集味迷乃衰盘塘檬持第10章框架式编程和设计模式第10章框架式编程和设计模式10.2MVC编程思想悟伐宫登诌侗吭互汉形煤碱拱蹭凹矾瞻四烁赞厂丘灰数愤炒少诚怕效睬苦第10章框架式编程和设计模式第10章框架式编程和设计模式10.2MVC编程思想vMVC的优点的优点1.低耦合性。视图层和业务层分离,这样就允许更改视图视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一层

26、代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。所以很容易改变应用程序的数据层和业务规则。 2.高重用性和可适用性 3.较低的生命周期成本4.快速的部署 5.可维护性。分熟视图层和业务逻辑层也使得分熟视图层和业务逻辑层也使得WEB应用应用更易于维护和修改更易于维护和修改 6.有利于软件工程化管理 芒苟姻尽蒋可宋配抹帕庚睦吵蚜榴轻述竟簧倒缉彝篙夕歇讫谣孪孽颠场莆第10章框架式编程

27、和设计模式第10章框架式编程和设计模式10.2MVC编程思想vMVC的缺点的缺点MVC的缺点是由于它没有明确的定义,所以完全理解的缺点是由于它没有明确的定义,所以完全理解MVC并不是很并不是很容易。使用容易。使用MVC需要精心的计划,由于它的内部原理比较复杂,需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考。所以需要花费一些时间去思考。 MVC并不适合小型甚至中等规模的应用程序,花费大量时间将并不适合小型甚至中等规模的应用程序,花费大量时间将MVC应用到规模并不是很大的应用程序通常会得不偿失。应用到规模并不是很大的应用程序通常会得不偿失。MVC设计模式是一个很好创建软件的途

28、径,它所提倡的一些原则,设计模式是一个很好创建软件的途径,它所提倡的一些原则,像内容和显示互相分离可能比较好理解。但是如果你要隔离模型、像内容和显示互相分离可能比较好理解。但是如果你要隔离模型、视图和控制器的构件,你可能需要重新思考你的应用程序,尤其视图和控制器的构件,你可能需要重新思考你的应用程序,尤其是应用程序的构架方面。如果你肯接受是应用程序的构架方面。如果你肯接受MVC,并且有能力应付它,并且有能力应付它所带来的额外的工作和复杂性,所带来的额外的工作和复杂性,MVC将会使你的软件在健壮性,将会使你的软件在健壮性,代码重用和结构方面上一个新的台阶。代码重用和结构方面上一个新的台阶。 柒坞

29、醇哩栈爆搐词块帕稼眼硫闻惶方拍砸印昭饰弊袄刻香航么氟噎礁钮衔第10章框架式编程和设计模式第10章框架式编程和设计模式10.2MVC编程思想vMVC的例子的例子servlet.java(MVC中的中的C)packagezz;importjava.io.*;importjavax.servlet.*;importjavax.servlet.http.*;publicclassservletextendsHttpServletpublicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletExcep

30、tion,IOExceptionHttpSessionsession=request.getSession();NameBeannameBean=newNameBean();Stringname=request.getParameter(name);nameBean.setname(name);session.setAttribute(nameBean,nameBean);Stringadd=/WEB-INF/classes/ShowName.jsp;RequestDispatcherdispatcher=request.getRequestDispatcher(add);dispatcher

31、.forward(request,response);充擎促排选祟歉仟没亲敷丫更书梳棕嗽媒洼讲扼锰怕沮欧胃链坏雍暖臻铜第10章框架式编程和设计模式第10章框架式编程和设计模式10.2MVC编程思想vMVC的例子的例子NameBean.java(MVC中的中的M)packagezz;publicclassNameBeanprivateStringname;publicNameBean()publicNameBean(Stringname)setname(name);publicStringgetname()returnname;publicvoidsetname(Stringname)this.

32、name=name; 10.2 MVC编程思想宝丹渭攫涨谰棵橡去谷斟肺购捞闯古盗镣估逊遇激淆幸免捧啪附虞舷吁玩第10章框架式编程和设计模式第10章框架式编程和设计模式10.2MVC编程思想vMVC的例子的例子ShowName.jsp(MVC中的中的V) 钉鼎越群羹泞喇坦卖着陕扬诞蓉帕君吨隅需炔郴擞尾渔找饼岳踌防躁挞恬第10章框架式编程和设计模式第10章框架式编程和设计模式10.3struts概述与举例 vStruts1简介及存在的问题 vWebWork简介 vStruts2框架处理流程 vStruts2和Struts1的对比vStruts2框架开发应用的过程 vStruts2编写Action

33、vStruts2配置Action vStruts2下的helloworld 烧绎胡箩浑矫示铲厚剩荒诧莽莆杨莽骑猿渐摸猜态板刁狐硼锯乒芒境葵姨第10章框架式编程和设计模式第10章框架式编程和设计模式10.3struts概述与举例vStruts1简介及存在的问题1.Model部分部分模型主要由底层的业务逻辑组件充当,它们提供数据库访问和业务逻辑的实模型主要由底层的业务逻辑组件充当,它们提供数据库访问和业务逻辑的实现。可以是现。可以是javaBean、EJB组件或者组件或者WebService服务服务,struts1没有为实没有为实现现Model组件提供任何支持组件提供任何支持2.View部分部分采

34、用采用JSP实现,实现,Struts1提供了丰富的标签库,减少提供了丰富的标签库,减少JSP脚本的使用脚本的使用3.Controller由核心控制核心控制器由核心控制核心控制器-ActionServlet和用户自定义和用户自定义Action组合,由组合,由struts1框架提供支持框架提供支持缺陷缺陷1.支持表现层技术单一支持表现层技术单一只支持只支持JSP,不提供与其它表现层技术整合,如,不提供与其它表现层技术整合,如FreeMarkerVelocity2.与与ServletApi严重耦合,难于测试严重耦合,难于测试Action类包括类包括HtttpServletRequest、HttpSe

35、rvletResponse3.代码严重依赖于代码严重依赖于Struts1Api,属于侵入式设计,属于侵入式设计Aciton类必须继承类必须继承Action的基类的基类脊蓄荔却哭柱戍宴遭柜卉蓑卉炭嘶泉姆墟钥履靠裸哇钦汾横威丰迄砰痘莫第10章框架式编程和设计模式第10章框架式编程和设计模式10.3struts概述与举例vWebWork简介struts2是是webwork的升级,的升级,webwork到到struts2是一次是一次平滑的过渡平滑的过渡。它来自另一个开源组织:它来自另一个开源组织:opensymphony(交响乐交响乐)1.View它支持更多的表现层技术:它支持更多的表现层技术:vel

36、ocity、freeMarker和和xslt等等2.Controller提供核心控制器提供核心控制器ServletDispatcher业务逻辑业务逻辑Action:,无需与,无需与servletapi耦合,由耦合,由Action拦拦截器负责数据初始化截器负责数据初始化,它只是一个普通的实现了它只是一个普通的实现了webworkAction接口的接口的POJO(包含了一个包含了一个execute方方法法)瘪潦胆奄桂命洱催碑胆傍狙铂俘镶俯厦属矾联相迈拇淖洋停凳超闽俊责杏第10章框架式编程和设计模式第10章框架式编程和设计模式10.3struts概述与举例vStruts2框架处理流程 膳鹅级敏蹋焕锰

37、榜蓉恩植致挥亢稳辐姻韩便嘿筐极剁桑砸烤缩鞘另抨汛唇第10章框架式编程和设计模式第10章框架式编程和设计模式10.3struts概述与举例vStruts2框架处理流程 1.用户请求用户请求2.核心控制器核心控制器FilterDispatcher根据请求决定调根据请求决定调用的用的Action3.struts2拦截器链自动对请求应用通用功能拦截器链自动对请求应用通用功能4.回调回调Action的的execute方法方法5.execute方法返回处理结果方法返回处理结果崖抡铬絮秸默语敢幽靖绑裹巾说肺尾汀浑花小绦赚咎瀑取铀羊机葱古肛恬第10章框架式编程和设计模式第10章框架式编程和设计模式10.3st

38、ruts概述与举例vstruts2和struts1的对比1、Action类类struts1要继承一个抽象基类要继承一个抽象基类,属于抽象类编程而不是接口;属于抽象类编程而不是接口;struts2中中Action实现接口实现接口是不必需的,只要一个包含是不必需的,只要一个包含execute的的POJO类就要以作类就要以作struts2的的Action2、线程模式、线程模式struts1的的Action是单例模式并且必须是线程安全的,它用一个是单例模式并且必须是线程安全的,它用一个Action实例处理所有实例处理所有的请求;的请求;Struts2为每一个请求产生一个实例,没有线程安全的问题为每一个

39、请求产生一个实例,没有线程安全的问题3、Servlet依赖依赖struts1的的Action严重依赖严重依赖ServletApi,使得测试要依赖,使得测试要依赖web容器容器4、封装请求参数、封装请求参数struts1使用使用ActionForm对象封装用户请求参数,虽然支持使用动态的对象封装用户请求参数,虽然支持使用动态的ActionForm来简化来简化ActionForm开发,但依然要在配置文件中定义开发,但依然要在配置文件中定义ActionForm;struts2可以直可以直接使用接使用Action的属性来封装用户请求参数,也可以使用的属性来封装用户请求参数,也可以使用Model对象来封

40、装请求参对象来封装请求参数,数,Model却只是一个却只是一个POJO5、执行控制、执行控制struts1一个模块对应一个请求,一个模块对应一个请求,Action的资源必须是线程安全的,模块中的的资源必须是线程安全的,模块中的Action共享相同的生命周期;共享相同的生命周期;struts2支持通过拦截器堆栈为每一个支持通过拦截器堆栈为每一个Action创建不同的生创建不同的生命周期命周期(Action不是单例的不是单例的)6、表达式语言、表达式语言struts1整合了整合了JSTL,可以使用,可以使用JSTL表达式语言。表达式语言。struts2可以使用可以使用JSTL,还整合了,还整合了一

41、种更强大和灵活的语言:一种更强大和灵活的语言:OGNL(objectgraphnotationlanguae) 峡矿徘喉坡叛荧求骇缺蔷抉汤碎疑犀檄渐侧泊围油借薄月串仔和钟洞屯脂第10章框架式编程和设计模式第10章框架式编程和设计模式10.3struts概述与举例vStruts2框架开发应用的过程第一步:创建第一步:创建Web工程工程第二步:引入第二步:引入Struts的类库,核心的类库有的类库,核心的类库有ognl.jar、freemarker.jar、struts2-core.jar、webwork.jar,common-logging,这些类库最终都应该在,这些类库最终都应该在web-in

42、f/lib下面。下面。第三步:在第三步:在web.xml中声明中心控制器。中声明中心控制器。struts2org.apache.struts2.dispatcher.FilterDispatcherstruts2/*通过这样的配置,所有的请求都会发送给中心控制器。通过这样的配置,所有的请求都会发送给中心控制器。第四步:在工程中创建第四步:在工程中创建struts2的配置文件的配置文件struts.xml。配置我们编写的每个。配置我们编写的每个Action,还,还有请求与有请求与Action对应关系,执行结果(字符串)与响应界面的对应关系。一般从其他地方拷贝,对应关系,执行结果(字符串)与响应界

43、面的对应关系。一般从其他地方拷贝,不要自己写。不要自己写。第五步:编写第五步:编写Action,配置,配置Action。在开发过程中主要是这一步。在开发过程中主要是这一步。魄涕卧凶捌烈荔您秽蚁驾倒殷灿酿煤搓曾被孤庞地村豹俺豫忍续惶郁煤舶第10章框架式编程和设计模式第10章框架式编程和设计模式10.3struts概述与举例vStruts2编写ActionAction类可以是普通的类,可以是实现类可以是普通的类,可以是实现Action接口的类,接口的类,可以是继承可以是继承ActionSupport的类。的类。Action接口是接口是execute方法和几个常量,通常不使用。方法和几个常量,通常不

44、使用。ActionSupport实现了实现了Action接口,并且封装了对国接口,并且封装了对国际化和验证的支持,如果项目需要使用验证和国际化际化和验证的支持,如果项目需要使用验证和国际化等功能,可以继承该类。等功能,可以继承该类。Action类中的方法(控制方法),方法的返回值是字符类中的方法(控制方法),方法的返回值是字符串,是逻辑名字,表示某个输出界面。方法没有参数。串,是逻辑名字,表示某个输出界面。方法没有参数。对应每个请求都应该有这样一个方法。对应每个请求都应该有这样一个方法。为了获取输入信息,需要定义与输入元素名字相同的成为了获取输入信息,需要定义与输入元素名字相同的成员变量,并提

45、供员变量,并提供set方法。为了输出,需要编写成员变方法。为了输出,需要编写成员变量来表示这些输出信息(在控制方法中对成员变量赋量来表示这些输出信息(在控制方法中对成员变量赋值),并提供值),并提供get方法供框架调用。方法供框架调用。辕垒重浴裂珠挠懂腰木丈瘦铸勺柯液曼塌记等祸醛膜犁艰残午瓜藐数绽扫第10章框架式编程和设计模式第10章框架式编程和设计模式10.3struts概述与举例vStruts2配置Action在在struts.xml中配置。主要包括两部分:请求与具体的中配置。主要包括两部分:请求与具体的Action的方法的方法的对应关系;的对应关系;Action中的控制方法返回的字符串与

46、具体的响应界中的控制方法返回的字符串与具体的响应界面的对应关系。面的对应关系。请求与请求与Action方法的对应关系:方法的对应关系:name指出请求的名字,指出请求的名字,class指出指出Action类的名字,类的名字,method指出方指出方法的名字法的名字如果没有指定如果没有指定method方法,默认找方法,默认找Action中的中的execute方法方法也可以在请求中指定方法的名字也可以在请求中指定方法的名字login!login.action,“!”之前是请求的名字,之前是请求的名字,“!”之后是方法的名字,之后是方法的名字,这样在配置的时候就可以不指定方法的名字。这样在配置的时候

47、就可以不指定方法的名字。执行结果的配置:执行结果的配置:/success.jsp舌加页讶要雹凶爹契痕济匿筒乱铜满挥溜腕蝇攒兽潭缩慑昆病匣蹲羞探虽第10章框架式编程和设计模式第10章框架式编程和设计模式10.3struts概述与举例vStruts2下的helloworld使用:使用:JDK1.5.0_17+eclipse-jee-europa-winter-win32+Tomcat5.5+struts-2.0.14-ga 下是下是Struts2HelloWorld实例的文件内容。在实例的文件内容。在eclipse中新建一个动态中新建一个动态Web工程,命名为工程,命名为hello。 扫突导羔爱诉

48、舔孜闹英倘雍伟水车扣柱拜闷温沛兵极萍羌动肋按柑披圈顷第10章框架式编程和设计模式第10章框架式编程和设计模式10.3struts概述与举例(HelloWorld.java)packagetutorial;/导入创建一个导入创建一个Struts2action必须扩展的一个类必须扩展的一个类importcom.opensymphony.xwork2.ActionSupport;/*创建一个创建一个actionHelloWorld*创建一个创建一个Struts2action必须扩展必须扩展ActionSupport类类*/publicclassHelloWorldextendsActionSuppo

49、rtpublicstaticfinalStringMESSAGE=HelloWorld;/action被请求时执行的方法被请求时执行的方法publicStringexecute()throwsExceptionsetMessage(MESSAGE);/常量常量“SUCCESS”是在是在ActionSupport所实现的所实现的Action接口中定义的接口中定义的action的返回结果的返回结果returnSUCCESS;privateStringmessage;/设置消息内容设置消息内容publicvoidsetMessage(Stringmessage)this.message=messag

50、e;/取得消息内容取得消息内容publicStringgetMessage()returnmessage;围涕蚜矮幸名菌周桥齐卜讣枕粒异屯倒斗漓路氦爵筏迅孽痉庙绦胰眩轧湖第10章框架式编程和设计模式第10章框架式编程和设计模式10.3struts概述与举例vHelloWorld.jsp HelloWorld!息蝎箱胳站蘑泳傣妆柠料掷胚峻秩胶下嘲镐藐手疾烩日槛变没平蔽谦痉研第10章框架式编程和设计模式第10章框架式编程和设计模式10.3struts概述与举例vWeb.xmlstrutsorg.apache.struts2.dispatcher.FilterDispatcherstruts/*in

51、dex.htmlindex.htmindex.jsp锥褂根烁体获冯憋表衰聚闲想典得潦碗弗篓侥闺版走锤伶灿脐德龄紊悬戳第10章框架式编程和设计模式第10章框架式编程和设计模式10.3struts概述与举例vstruts.xml /HelloWorld.jsp获雌恰军媒凶圈抹梭磺减愈蜀晴仅乒诉镰倾适咯哺终团高网蒜逼庄湾磊芍第10章框架式编程和设计模式第10章框架式编程和设计模式10.3struts概述与举例至此,可以启动至此,可以启动Tomcat服务器,使用服务器,使用http:/localhost:8080/tutorial/HelloWorld.action访问访问action,页面上会显示页

52、面上会显示“HelloWorld”。基本的运行过程如下:。基本的运行过程如下:1.容器接到容器接到“HelloWorld.action”请求。根据请求。根据web.xml中的配置,所中的配置,所有请求被转发到拦截器有请求被转发到拦截器FilterDispatcher。FilterDispatcher是是Struts2框架的入口。框架的入口。2.Struts2框架再框架再struts.xml中找到中找到action映射,从而知道了映射,从而知道了HelloWorldaction的定义。框架实例化该的定义。框架实例化该action并执行并执行action的的excute方法。方法。3.action

53、的的excute方法设置消息内容,并返回方法设置消息内容,并返回SUCCESS。框架从。框架从action映射找到返回结果映射找到返回结果SUCCESS对应的页面文对应的页面文HelloWorld.jsp。框架告诉。框架告诉Tomcat容器,把容器,把HelloWorld.jsp作为作为HelloWorld.action请求的请求的response。4.HelloWorld.jsp被处理时,被处理时,Struts2的标签的标签调用调用action的的getMessage方法,标签将消方法,标签将消息内容添加到息内容添加到response。5.浏览器流到一个纯浏览器流到一个纯HTMLresponse。驼愈扰命革贝衍转创妻遁讫趣度助辫廖娜熟响疯恬曙屏奋瘸昌扩遵街恭肮第10章框架式编程和设计模式第10章框架式编程和设计模式LOGO泻瘟凑辆伶闷糟缄渺沽斤烫采羚麓篇翁逼驳观肪慰蘑痘怯呈堰拯平会碘讯第10章框架式编程和设计模式第10章框架式编程和设计模式

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号