基于MVC模式的Struts框架概述
作者:yarshray
关键字: Java  J2EE  MVC  JSP  Servlet  MVC  Struts
内容简介:
MVC设计模式成为了⽬前⼗分流⾏的⼀种设计⽅法.它是⼀种软件的设计⽅法模式.并且被⼤量的开发和实践所证明.因此本⽂通过介
绍Struts框架这种已经实现了MVC模式的软件构件框架了讨论该模式的优势和如何投⼊到软件开发中去.
本⽂内容注重理论和实践相结合,⽐较系统的从多层设计⽅式到分布式软件开发中所⽤到的技术,从⽽切⼊⽬前Sun公司退出的J2EE框架模型,然后更加该框架讨论了与之相关的技术,包括JSP,Servlet,⽤户定义标签等相关主题,然后讨论其优势和缺陷,最后引出⽂章的主
题,Struts框架,该框架通过实现MVC设计模式从⽽改变了以往的设计⽅法,使得开发⼀套基于J2EE框架的应⽤程序⼗分具有⼴泛的适应性和极⾼的效率.
名⼈名⾔:
如果我⽐笛卡尔看得远些,那是因为我站在巨⼈们的肩上的缘故。
──⽜顿
具有丰富知识和经验的⼈,⽐只有⼀种知识和经验的⼈更容易产⽣新的联想和独到的见解。
──泰勒
引⾔:
现阶段软件开发已经进⼊了⾯向对象,组件化,分布应⽤的阶段.Sun 公司推出的Java2 Enterprise Edition(J2EE)平台已经⽇趋成熟.并得到了⼴泛的应⽤.J2EE中所定义的Web容器中的WEB组件也成为了⽬前开发WEB应⽤主要⼯具和⼿段.JavaServer Page (JSP)技术,⼏乎是每⼀个JAVA WEB应⽤开发的必须开发组件.
⽬前的Web容器也是繁花似锦,⼀些免费的开源的组织也加⼊到这项运动中来了.如Apache软件组织提供的Tomcat就是⼀个⾮常优秀
的Web容器,这也推动了Java的Web应⽤的发展.随着Java的Web技术的成熟和市场的巨⼤需求.越来越多的开发⼈员都开始使⽤⼀些已经被开发所认同的开发框架了.⽽现在软件开发的思想观念已经不是”我们是否要使⽤软件框架” ⽽是说”使⽤什么软件开发框架”.
因此,选⽤优秀的开发框架是作为⼀个软件开发⼈员所必须的.Jakarta-Struts是由Apache软件组织提供的⼀套开发源代码的项⽬,它实现了模型---视图---控制器(Model---View---Controller) MVC 设计模式.其⼴泛的适应性和⾼度的扩展能⼒加上对⽣产效率的极⼤提⾼成为了⽬
前Java的Web开发所逐步认可的标准.
当然,作为我们这些开发⼈员也同样是⼀种挑战,我必须要理解这些新的观念和认识并接受这⼀开发模式的带来的优势,这需要我们对理论的理解和⼤量的开发实践.
Java WEB应⽤程序介绍
Java Web应⽤就是通过在Web容器上开发和部署Java的Web组件来构建应⽤的⼯作.其包括的技术主要是Java Server Page 和 Servlet 技术.此外开发⼀个完整的Java的Web应⽤还包括以下⼀些技术:
JavaBean组件技术
EJB组件技术
⽤户⾃定义标记库
XML标签语⾔
J2EE相关容器
图 1 Java Web 应⽤的技术结构
Servlet控制器组件技术
Servlet在⼀个典型的Web应⽤中担任的重要⾓⾊就是Servlet⾮常适合做Web页⾯之间的消息转发器.因为Servlet是⼀个被Web容器动态加载的组件模块,它并不⼗分适合做⽤户的界⾯表⽰,⽽当Web⽤户发出请求的时候Servlet组件可以通过Servlet容器来捕获这个请求消息,这样它可以调⽤模型组件来出来这个消息.
图 2 Servlet 的处理流程
当客户程序(如: 浏览器)⾸先向Servlet容器发出Web请求,服务器接受到请求以后会调⽤相应的Servlet组件来执⾏相应的程序来完成这个请求,然后Servlet组件吧处理结果交给Servlet容器,再由Servlet容器把请求回复给客户程序.这也是⼀个典型的web应⽤的执⾏过
程.Java的Servlet技术提供了⼀组⽤户的编程接⼝为开发⼈员定义了相关的类.
Servlet Api中以下⼏个⽐较重点的类决定了Servlet的处理流程:
HttpServlet :该类提供了⽤户扩展的能⼒,⽤户通过继承该类编写Servlet组件.主要填写Http⽅法(如: doPost doGet)完成服务.
HttpServletRequest: 该类提供了接受⽤户请求数据的能⼒,该类通常是由Web容器在⼀次客户请求服务中创建的.Servlet可以通过该对象访问到请求时⽤户的请求数据.
HttpServletResponse: 该类⽤于⽣成执⾏后的相应结果.该类也是由Web容器在服务中创建的.
HttpSession: 该了同类处理客户的会话跟踪.
ServletContext: Servlet容器为每个Web 应⽤模块都提供了⼀个环境来保持该应⽤模块的状态.这组状态是该模块中所有Web组件可以访问到的共享信息.
JSP组件技术
JSP组件技术是对传统静态Web页⾯(HTML)的扩展,使得传统的静态页⾯可以加⼊Java的程序代码,以提供程序编辑产⽣页⾯的效果.并且该组件技术也运⾏的J2EE Web容器上的组件技术.
JSP的本质实际就是Servlet组件技术,只是JSP技术更利于⽤来做⽤户的表⽰界⾯.
图3 Web容器初次执⾏浏览器请求处理JSP的过程
JSP页⾯在初次接受到⽤户的请求的时候,⾸先Web容器会翻译JSP脚本⽂件,然后⽣成Servlet源代码,在把Servlet源代码编译
成java的ByteCode ⽣成Class⽂件.然后同Servlet的执⾏过程⼀样处理页⾯流程.
JavaBean组件在Web应⽤程序的作⽤
JavaBean 是⼀种符合特定规范的Java类.在JavaBean中定义了以系列属性和⽅法.我们通常可以把业务对模型和业务流程模型封装
在JavaBean中,简单的说JavaBean很适合在Web应⽤中充当模型组件的⾓⾊.
JSP标准标签中已经定义了⼀组对JavaBean⽀持的标签.并定义了JavaBean对象在执⾏过程中的⽣命周期.包括 page ,request,session 和 application 四种范围.并提供了对JavaBean访问时的属性⽀持.
⽤户定义标签
JSP中的⽤户定义标签为开发者提供了很好界⾯和功能扩展能⼒.它⽀持⽤户可以在JSP页⾯中定义相应的业务标记.通常这些标记继承⾃TagSupport类.并通过重写TagSupport类的相关⽅法来扩展功能.
在Struts中,Struts框架定义了⼀组⽤户标签.其主要包括:
Bean标签,⽤来⽀持JavaBean的访问
HTML标签⽤来⽀持HTML界⾯元素的创建和访问
Logic标签⽤来⽀持逻辑执⾏
Neted标签和Tiles标签⽤来⽀持界⾯表⽰
EJB组件技术
Enterprise Java Bean 简称 EJB 是⼀套基于标准的分布式对象组件技术.它是CORBA和 RMI的服务器端Java组件.EJB技术
和JavaBean技术⼀样在企业开发中处理业务逻辑.他们的区别在于EJB组件是分布式的必须运⾏EJB容器中.⽽JavaBean组件是运⾏在调⽤⽅内存的组件.
EJB定义了基本⽤来处理业务流程逻辑的会话Bean和⽤来维护业务持久状态的实体Bean.以及处理基于消息驱动的消息Bean.
EJB组件所以运⾏的EJB容器,为EJB组件维护了安全性,事务性,持久性,并⾏性,等多种服务.并提供了开发,部署,运⾏等环境的⽀持.
XML标记语⾔
XML标记语⾔可以⽤来定义⽤户⾃⼰的标记.XML在WEB服务中使⽤的⾮常⼴泛.如SOAP协议就是由XML定义的.XML可以定义⾮常通⽤化并利于被应⽤程序处理的信息结构.
在Struts框架中XML起到了黏合剂的作⽤,可以⽤来配置Struts框架中的各组件的组成框架.
J2EE相关容器
现阶段任何⼀个分布开发都离不开服务器.对于Web开发则时Web服务器,Web服务器通常⽤来处理Http请求和回复⼯作,并提供了安全性,事务性,多任务并⾏性.现代Web容器还提供了可编程的⽤户接⼝.⽽分布式开发中应⽤程序的逻辑部分通常放在应⽤程序的中间件服务器上.EJB容器就是这样⼀个中间件服务器.该服务器提供了对EJB组件的运⾏环境的⽀持.并提供对RMI—IIOP等远程对象调⽤协议的⽀持,使得开发EJB组件这⾥中间件⽐较容易.使得开发⼈员更多的关⼼的是业务逻辑问题.
⽬前⽐较流⾏的开源的Web服务器主要是Apache软件组织的Tomcat服务器.Tomcat不仅是⼀个优秀的Web服务器更是⼀个⼗分便捷
的Servlet/JSP容器.⽽开源的EJB容器⽐较有代表的当数JBoss 它是由JBoss软件组织开发的,其性能稳定可靠,并有着⾮常⾼效的执⾏速度.
MVC设计模式概述
⼀般⽽⾔,⼀个计算机程序包括其输⼊,处理,和输出.⽽MVC设计模式把输⼊,处理和输出部分独⽴成为了独⽴的程序部分.并在系统运⾏时将其结合,这样使得开发的耦合度很低.⽽.
图 4 MVC设计模型
视图,在软件中通常是⽤户交互的界⾯.它⽤来表⽰数据和提交⽤户对软件的请求.
模型,⽤来处理软件的要涉及的业务范围,主要是业务数据模型和业务逻辑模型.
控制器,⽤来接受⽤户的请求并调⽤模型中的处理过程,然后选择相应的视图.
Java的Web应⽤中MVC的设计模式运⽤⼗分多.JSP Model2 体系结构就是结合了JSP,Servlet和JavaBean技术的MVC模式的实现.
servlet和tomcat的关系
图 5 JSP Model2 模型
Struts框架概述
随着软件开发⽇渐成熟,软件⼯程师们也变得逐渐成熟起来,我们开始⾸先设计软件框架结构,这样
在开发阶段我们才会井然有序的进⾏.⽽对于现代软件开发对软件的开发周期要求越来越迅速,所以如果要⾃⼰开发⼀套框架已经不太现实了.所以我们必须要选择已经成熟的软件框架了.
⽽Struts对于Java的Web开发⽽⾔就是⼀个不错的选择.Struts框架实质就是JSP Model2模型的实现.
图 6 Struts 实现的MVC框架
1.视图
视图是通过⼀组JSP程序实现的.这些JSP程序中不能包含业务逻辑,也不能包括模型的信息.模型的信息是通过控制器传递
的.在Struts中ActionForm 也被看成是视图的⼀部分.它其他更新视图,以及视图查询模型状态的桥梁.
2.模型
模型是程序的状态表⽰,其状态包括,消息中传递的状态,以及共享状态或⼀次回话中的状态,以及持久状态.⽽操作这些状态的流程也同样包括在模型中.这些模型也就是业务的总体运作流程和数据.
3.控制器
控制器部分由ActionServlet和Action来实现.ActionServlet也就是Struts框架⽤来和Web容器交互的接⼝.该类是Struts框架的核⼼组
件.ActionServlet继承了HttpServlet类.它在MVC模型中扮演中央控制器的⾓⾊.当Web容器⼀接收到客户请求就会交割ActionServlet该类更
加l⽂件的配置信息选择合适Action来处理请求.并传递请求过程中的数据,这些数据是通过ActionForm传递的.Action本⾝也并不包含业务逻辑的处理代码.它只是负责调⽤业务的处理代码的.
调⽤这些代码的⽅法在execute()⽅法中.该⽅法在调⽤业务处理以后会放回⼀个ActionForward对象来选择对应的视图.⼀般⽽⾔我们
的Action必须直接或间接的继承该类.然后重写excecute()⽅法以完成我们⾃⼰的处理消息.
4.Struts的配置⽂件 l
该⽂件实质是⼀个控制器和视图的黏合剂,控制器之所以能够选择对应的视图,以及视图能够通过对应的控制器查询到模型中的数据都是依赖该⽂件.该⽂件是⼀个XML⽂件.在该配置⽂件中每Action都对应⼀个<Action>标签⽤来映射Action类的信息.
从软件的需求分析与设计谈起
实现⼀个完整的基于Struts的WEB应⽤
总结:
Java的Web应⽤中使⽤到的技术⾮常多,也相对⽐较复杂.因此开发中开发⼈员所负责的技术⽅⾯也会相对较多,所以我们必须考虑到个⼈的特长对开发⼯作进⾏合理分配,这就需要我们在软件的设计阶段考虑清楚.⽽MVC这种设计模式能够很好的把业务数据模型和业务处理模型独⽴出来,这样开发出独⽴的系统组件,以便于在开发视图阶段能够很好的保持数据的⼀致性.⽽在处理视图和模型之间的关系时控制器成为了两者的纽带,这样使得软件项⽬可以成为⼀个系统化的⼯程.
⽽Struts框架在Java的Web应⽤中就起到了这个作⽤.这样使得开发阶段能够很好的利⽤该框架完成开发项⽬,我们可以选择合适的模型组件如我们可以使⽤JavaBean技术来完成业务模型和数据模型的接⼝,⽽数据库则可以充当数据模型来保持业务阶段的持久状
态.JSP和Struts为我们提供的⼀组标签这可以完成页⾯的表⽰和页⾯的逻辑等功能使得我们有了丰富的视图功能.并且Struts提供
了ActionForm为视图可以和事件进⾏数据交换接⼝提供了良好的通道使得在处理Action事件时候可以
通过ActionForm从视图中取得数据.⽽两者之间的桥梁就是l⽂件该XML⽂件可以配置两者之间的联系.这使得接⼝之间有着极⾼的灵活性和伸缩性.⽽在Action中我们有可以调⽤和包含模型组件的功能.这样使得开发⾮常具有效率和可扩展能⼒.
Struts框架事实上已经被很多软件项⽬所应⽤,所以⾜见其适⽤性时⾮常可靠的.这⾥也希望通过该问的介绍能够使得读者对Struts框架有⼀个⾜够的了解.
参考资料:
<<;精通Struts基于MVC的Java Web 设计与开发>>    作者: 孙卫琴
<<JSP 2.0 技术参考⼿册>>                                                作者: 林上杰林康司
<<J2EE 技术内幕>>                                                    作者:(美)Joseph J.Bambara Paul R.Allen等译者: 刘堃等

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。