J2EE开发常用软件体系架构模式.ppt
《J2EE开发常用软件体系架构模式.ppt》由会员分享,可在线阅读,更多相关《J2EE开发常用软件体系架构模式.ppt(85页珍藏版)》请在三一办公上搜索。
1、,J2EE开发常用软件体系架构模式,华南师范大学软件学院,作者:杨劲松,struts,hibernate,spring 及其衍生框架,主要内容:,1、软件体系架构,软件无处不在,11/7/2023,华南师范大学软件学院,3,1、软件体系架构,软件开发现状,11/7/2023,华南师范大学软件学院,4,1、软件体系架构,软件危机的案例,11/7/2023,华南师范大学软件学院,5,IBM公司的 OS/360,共约100万条指令,花费了5000个人年;经费达数亿美元,而结果却令人沮丧,错误多达2000个以上,系统根本无法正常运行。OS/360系统的负责人Brooks这样描述开发过程的困难和混乱:“
2、像巨兽在泥潭中作垂死挣扎,挣扎得越猛,泥浆就沾得越多,最后没有一个野兽能够逃脱淹没在泥潭中的命运。”,1963年美国飞往火星的火箭爆炸,造成1000万美元的损失。原因是FORTRAN程序:DO 5 I=1,3 误写为:DO 5 I=1.3,1967年苏联“联盟一号”载人宇宙飞船在返航时,由于软件忽略一个小数点,在进入大气层时因打不开降落伞而烧毁,1、软件体系架构,软件为什么会失效,11/7/2023,华南师范大学软件学院,6,1、软件体系架构,产生软件危机的根源,11/7/2023,华南师范大学软件学院,7,软件规模越来越大、复杂度越来越高用户需求不明确缺乏正确有效的理论及工程指导 对用户要求
3、、实现条件没有完整准确的分析就匆忙编写程序,是许多软件开发失败的主要原因,在此种背景下,人们认识到软件体系架构的重要性,软件工程研究初期重点放在数据结构和算法的选择,如 Knuth 提出了数据结构+算法=程序,1、软件体系架构,什么是软件体系架构,Dewayne Perry和A1exander Wo1f,软件体系结构是具有一定形式的结构化元素,即构件的集合,包括处理构件、数据构件和连接构件。,处理构件负责对数据进行加工数据构件是被加工的信息连接构件把体系结构的不同部分组组合连接起来,Mary Shaw 和 David Garlan,软件体系结构是软件设计过程中的一个层次,这一层次超越计算过程中
4、的算法设计和数据结构设计,关于整体系统结构设计和描述方面的一些问题,如:全局组织和全局控制结构 关于通讯、同步与数据存取的协议,等,11/7/2023,华南师范大学软件学院,8,1、软件体系架构,什么是软件体系架构,Kruchten,软件体系结构有四个角度,它们从不同方面对系统进行描述:,概念角度描述系统的主要构件及它们之间的关系;模块角度包含功能分解与层次结构;运行角度描述了一个系统的动态结构;代码角度描述了各种代码和库函数在开发环境中的组织,不同研究背景、应用背景的人员从不同的角度给出了多达近百种定义,但有两点共识:,软件体系结构对于软件开发具有重要意义,必须采用良好的设计原则达到良好的结
5、构设计主流的定义都认为:软件体系结构是用来表示软件系统的总体结构的,该结构由软件构件和构件之间的关系及约束构成,11/7/2023,华南师范大学软件学院,9,2、J2EE的体系架构,J2EE,为企业应用系统的开发提供了一种多层分布式企业应用模型按应用逻辑按功能不同可以划分为不同类型的组件,11/7/2023,华南师范大学软件学院,客户层,运行在客户计算机上的组件。Web 层,运行在J2EE服务器上的组件。业务层,同样是运行在J2EE服务器上的组件。企业信息系统层(EIS),是指运行在EIS服务器上的软件系统。,J2EE分层结构,2、J2EE的体系架构,J2EE,11/7/2023,华南师范大学
6、软件学院,11,2、J2EE的体系架构,J2EE,11/7/2023,华南师范大学软件学院,12,2、J2EE的体系架构,J2EE,11/7/2023,华南师范大学软件学院,13,2、J2EE的体系架构,11/7/2023,华南师范大学软件学院,14,什么是模式?什么是框架?,模式,即pattern。其实就是解决某一类问题的方法论。你把解决某类问题的方法总结归纳到理论高度,那就是模式。模式分为:体系结构模式设计模式框架,即framework。建立在体系结构模式的基础上。包括大量组件,设计模式,与某一领域的具体应用无关。,C/S:以数据库为中心B/S多层架构将显示、业务运算、数据库等功能完全分离
7、,杜绝彼此的耦合与影响,从而实现松耦合和良好的可维护性。,3、SSH框架,11/7/2023,华南师范大学软件学院,15,SSH简介,Struts(表示层)+Spring(业务层)+Hibernate(持久层),11/7/2023,华南师范大学软件学院,16,3、SSH框架,SSH简介,Struts(表示层)+Spring(业务层)+Hibernate(持久层),11/7/2023,华南师范大学软件学院,17,3、SSH框架,SSH简介,Struts(表示层)+Spring(业务层)+Hibernate(持久层),11/7/2023,华南师范大学软件学院,18,3、Struts,Model1与
8、Model2设计模式,以JSP为中心的开发模型,称为Model1(JSP+JAVABEAN)业务逻辑与表示逻辑混和,不利维护与重用HTML中嵌入了大量的JAVA代码验证、流程控制、更新程序的状态全部在JSP中完成,Enterprise Servers/Data Sources,传统的Model 1(JSP+JAVABEAN),11/7/2023,华南师范大学软件学院,19,3、Struts,Model1与Model2设计模式,以servlet为中心的开发模型,Model2(JSP+Servlet+JAVABEAN),Model2(JSP+Servlet+JAVABEAN),MVC是一种设计模式
9、,它强制性地把应用程序的输入、处理和输出分开。MVC将应用程序分成3部分:模型、视图和控制器。,11/7/2023,华南师范大学软件学院,20,3、Struts,MVC模式,MVC模式模型(Model)是应用程序的主体部分。模型表示业务数据,或者业务逻辑。视图(View)是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。控制器(Controller)工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。,(控制器)接受用户请求调用模型响应用户请求选择视图显示响应结果,(视图)显示模型状态接受数据更新请求把用户输入数据传给控制器,(模型)代表应用程序状态响应状态查询处理
10、业务流程通知视图业务状态更新,方法调用,事件,选择视图,业务处理,用户请求,状态查询,通知数据更新,11/7/2023,华南师范大学软件学院,21,3、Struts,Struts框架概述,Struts是一个现成的、优秀的、基于MVC的Web应用框架。,浏览器,Web服务器,ActionServlet,FormBean,(模型)JavaBeanEJB,Struts-config.xml,数据库,MessageResouse,JSP,(视图),(控制器),Servlet/JSP容器,Struts框架结构,11/7/2023,华南师范大学软件学院,22,3、Struts,Struts框架概述,Str
11、uts是一个现成的、优秀的、基于MVC的Web应用框架。,浏览器,Web服务器,ActionServlet,FormBean,(模型)JavaBeanEJB,Struts-config.xml,数据库,MessageResouse,JSP,(视图),(控制器),Servlet/JSP容器,Struts框架结构,11/7/2023,华南师范大学软件学院,23,3、Struts,Struts框架概述,Struts是一个现成的、优秀的、基于MVC的Web应用框架。,浏览器,Web服务器,ActionServlet,FormBean,(模型)JavaBeanEJB,Struts-config.xml,
12、数据库,MessageResouse,JSP,(视图),(控制器),Servlet/JSP容器,Struts框架结构,11/7/2023,华南师范大学软件学院,24,3、Struts,Struts的程序流程,JavaBean,JSP页面,Client,Action,ActionServlet,ActionForm,1.HTTP 请求,2.填充FormBean,3.转发HTTP请求,4.调用ActionForm,5.调用JavaBean,6.回送ActionForward,7.转发HTTP请求,8.调用JavaBean,9.HTTP响应,Struts-config.xml,Struts的程序流程
13、,11/7/2023,华南师范大学软件学院,25,3、Struts,Struts1.x实例,Struts1.x实例(实现用户登录操作)用户将看到一个登录页面,要求用户输入用户名以及密码如果用户名以及密码都是admin,提示登录成功否则提示登录失败,Login.jsp,login_error.jsp,login_success.jsp,11/7/2023,华南师范大学软件学院,26,3、Struts,Struts1.x实例,Struts1.x实例(实现用户登录操作)下载并解压Struts项目从Apache网站下载struts;将压缩包解压到一个目录,此目录为STRUTS_HOME目录;安装Str
14、uts将STRUTS_HOME/lib目录下的所有.jar文件拷贝到刚创建的web项目的/WEB-INF/lib目录下;配置web.xml,添加Servlet映射配置;编写Action类、编写ActionForm类 Action类处理业务流程;ActionForm类不是必须的,如果要接收客户端提交的数据时需要;配置struts-config.xml在struts-config.xml文件中配置Action和ActionForm;编写相应JSP页面,11/7/2023,华南师范大学软件学院,27,3、Struts,web.xml 的配置,action org.apache.struts.acti
15、on.ActionServlet config/WEB-INF/struts-config.xml 2 action*.do,struts-config.xml存放路径,在显示层所有以*.do为扩展名提交的URL,都会交由这个Servlet来处理。,11/7/2023,华南师范大学软件学院,28,3、Struts,struts-config.xml 的配置,指定Struts应用中所有使用的ActionForm对象,ActionForm对象指定处理相关业务的Action,Action处理完业务后的跳转页面,11/7/2023,华南师范大学软件学院,29,3、Struts,LoginActionF
16、orm.java,public class LoginActionForm extends ActionForm private String userName;private String passWord;public String getUserName()return userName;public void setUserName(String userName)this.userName=userName;public String getPassWord()return passWord;public void setPassWord(String passWord)this.p
17、assWord=passWord;,11/7/2023,华南师范大学软件学院,30,3、Struts,LoginAction.java,public class LoginAction extends Action public ActionForward execute(ActionMapping mapping,ActionForm form,HttpServletRequest request,HttpServletResponse response)throws Exception String path=error;LoginActionForm loginActionForm=(L
18、oginActionForm)form;String userName=loginActionForm.getUserName();String passWord=loginActionForm.getPassWord();if(null!=userName,11/7/2023,华南师范大学软件学院,31,3、Struts,LoginAction应用程序的流程图,LoginAction应用程序的流程图,11/7/2023,华南师范大学软件学院,32,3、Struts,Struts1.x与Struts2.x,Struts2同为MVC设计模式的开源框架在Struts2并不是在原有的Struts1.
19、x基础上的升级版本,而是来处另外一个非常有名的MVC框架 WebWork。,官方描述:,Struts1.x存在的问题:在表现层技术单一与Servlet API耦合严重,不便于测试代码严重依赖Struts API 单元测试困难令人头痛的ActionForm,Struts2的特点无需与Servlet API整合,更容易测试优雅的请求参数封装灵活的视图技术丰富的表达式语言机动,灵活,简单的配置线程安全的控制器(Action),11/7/2023,华南师范大学软件学院,33,3、Struts,Struts2.x框架结构,Struts2框架结构Struts2的体系与Struts1.x体系差别非常大,因为
20、Struts2使用了WebWork的设计核心(XWork)。在Struts2中使用拦截器来处理用户请求,从而允许用户业务逻辑控制器与Servlet API分离。,11/7/2023,华南师范大学软件学院,34,3、Struts,Struts2.x框架结构,Struts2框架结构Struts2的体系与Struts1.x体系差别非常大,因为Struts2使用了WebWork的设计核心(XWork)。在Struts2中使用拦截器来处理用户请求,从而允许用户业务逻辑控制器与Servlet API分离。,11/7/2023,华南师范大学软件学院,35,3、Struts,Struts2的核心思想,仍然是M
21、VC设计模式 Struts2的控制器由两部分组成FilterDispatcher业务逻辑Action Struts2提供了丰富的视图展示JSPFreeMarker、VelocityJasperReport等报表类型AOP(Aspect Oriented Programming)面向方面编程实现 在执行Action的前后Structs2提供了大量拦截器来完成通用功能,11/7/2023,华南师范大学软件学院,36,3、Struts,补充:面向方面编程AOP,OOP选择对象作为模块的主要单元,将对象与系统的所有行为联系起来对象成为问题领域和计算过程的主要元素问题:存在着许多横切关注点(如安全性检查
22、、日志记录、异常处理等)实现代码和其他业务逻辑代码混杂在一起、降低了模块的可重用性 AOP简介(也叫面向切面编程)目标:对业务逻辑的各个部分进行隔离主要功能:日志记录,性能统计,安全控制,事务处理,异常处理等等主要意图:将日志记录等代码从业务逻辑代码中划分出来通过对这些行为的分离,将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。,11/7/2023,华南师范大学软件学院,37,3、Struts,补充:面向方面编程AOP,AOP 与OOP抽象类 Dog 类Poodle 继承了 Dog,Dog,Poodle,Obedient Dog,定义标识为 Obedient D
23、og的类,不是所有的 Dogs 都很驯服如果要Obedient Dog 类继承 Dog 类,那么 Poodle 放在这个层次结构中的哪个位置合适呢?,Obedient看作一个方面应用到任何一类驯服的 Dog我们反对以不恰当的方式强制将该行为放在 Dog 层次结构中,11/7/2023,华南师范大学软件学院,38,3、Struts,Struts2.x拦截器,拦截器(Interceptor)Struts2的核心组成部分例如文件的上传和下载、国际化、转换器和数据校验等,Struts2利用内建的拦截器完成Struts2文档中对拦截器的解释为:拦截器是动态拦截Action调用的对象;提供了一种机制,使开
24、发者可以定义一个特定的功能模块这个模块可以在Action执行之前或者之后运行也可以在一个Action执行之前阻止Action执行同时也提供了一种可以提取Action中可重用的部分的方式。拦截器是AOP 的一种实现,底层通过动态代理模式完成。,11/7/2023,华南师范大学软件学院,39,3、Struts,Struts2.x拦截器,Struts2.x的拦截器,FilterDispatcher,ActionProxy,类型转换拦截器,文件上传拦截器等,Action,Result,初始化并调用execute方法,拦截并处理用户请求,然后到Action的execute方法处理用户请求,返回逻辑视图,
25、系统负责将逻辑视图对应的资源显示给用户,11/7/2023,华南师范大学软件学院,40,3、Struts,Struts2.x实例,Struts2.x实例(实现用户登录操作)导入Struts2类库(以为例),将其WEB-INF/lib目录中的JAR拷贝到Project的WEB-INF/lib目录下),11/7/2023,华南师范大学软件学院,41,3、Struts,Struts2.x实例,Struts2.x实例(实现用户登录操作)在web.xml文件中配置FilterDispatcher,struts2.0 struts2.0/*,11/7/2023,华南师范大学软件学院,42,3、Struts
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- J2EE 开发 常用软件 体系 架构 模式
链接地址:https://www.31ppt.com/p-6509097.html