小组成员名单
Struts的体系结构详述(一)
struts framework是MVC 模式的体现,下面我们就从分别从模型、视图、 控制来看struts的体系结构(Architecture)。
请求
控制器 Servlet 配置文件 Struts-config.xml
取得数据
业务逻辑 Action
浏览器
请求
视图 JSP
Spring框架(续)
Spring ORM:Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这 些都遵从 Spring 的通用事务和 DAO 异常层次结构。
Spring Web 模块:Web 上下文模块建立在应用程序上下文模块之上, 为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求 参数绑定到域对象的工作。
Spring框架
Spring 框架是一个分层架构,由 7 个定义良好的模块组成。 Spring 模块构建在核心容器之上,核心容器定义了创建、配置和 管理 bean 的方式,
Spring ORM
Hibernate support iBats support JDO support
Spring Web
Struts —— 不争的王者
Struts是Apache软件基金下Jakarta项目的一部分。Struts框
架的主要架构设计和开发者是Craig R.McClanahan。经过长达五 年的发展,Struts已经逐渐成长为一个稳定、成熟的框架,并且 占有了MVC框架中最大的市场份额。但是Struts某些技术特性上 已经落后于新兴的MVC框架。面对Spring MVC、Webwork2 这些 设计更精密,扩展性更强的框架,Struts受到了前所未有的挑战。 但站在产品开发的角度而言,Struts仍然是最稳妥的选择。
Struts的组成
Struts有一组相互协作的类(组件)、Serlvet以及jsp tag lib组成。 基于struts构架的web应用程序基本上符合JSP Model2的设计标准, 可以说是MVC设计模式的一种变化类型。根据上面对framework 的描述,我们很容易理解为什么说Struts是一个web framwork, 而不仅仅是一些标记库的组合。但 Struts 也包含了丰富的标记库 和独立于该框架工作的实用程序类。Struts有其自己的控制器 (Controller),同时整合了其他的一些技术去实现模型层 (Model)和视图层(View)。在模型层,Struts可以很容易的与 数据访问技术相结合,包括EJB,JDBC和Object Relation Bridge。 在视图层,Struts能够与JSP, Velocity Templates XSL等等这些表 示层组件想结合。
优点:
Struts的优点和缺点
缺点:
Taglib是Struts的一大优势,但对于初学者而言,却需要一 个持续学习的过程,甚至还会打乱你网页编写的习惯,但 是,当你习惯了它时,你会觉得它真的很棒。
Struts将MVC的Controller一分为三,在获得结构更加清晰 的同时,也增加了系统的复杂度。
Struts的体系结构详述(三)
3. 从控制器角度(Controller) 在Struts framework中, Controller主要是ActionServlet,但是对 于业务逻辑的操作则主要由Action、ActionMapping、ActionForward 这几个组件协调完成(也许这几个组件,应该划分到模型中的业务 逻辑一块)。其中,Action扮演了真正的业务逻辑的实现者,而 ActionMapping和ActionForward则指定了不同业务逻辑或流程的运行 方向。 对于Struts 如何控制、处理客户请求,让我们通过对struts的四 个核心组件介绍来具体说明。这几个组件就是:ActionServlet。 Action Classes,Action Mapping(此处包括ActionForward), ActionFrom Bean。
WebApplicationContext Mutipart resolver Web utilities
Spring AOP
Source-level Meta-data AOP infrastructure
Spring Web MVC
Web MVC Framework JSP/Veiocity PDF/Export
模型 Application
Struts的体系结构详述(二)
1. 从视图角度(View) 主要由JSP建立,struts自身包含了一组可扩展的自定义标签库 (TagLib),可以简化创建用户界面的过程。目前包括: Bean Tags,HTML Tags,Logic Tags,Nested Tags, Template Tags 这几个Taglib。
2.
从模型角度(Model) 模型主要是表示一个系统的状态(有时候,改变系统状态的业务逻 辑操作也划分到模型中)。在Struts中,系统的状态主要有 ActiomForm Bean体现,一般情况下,这些状态是非持久性的。如 果需要将这些状态转化为持久性数据存储,Struts本身也提供了 Utitle包,可以方便的与数据库操作。
J2EE Struts 和Spring 的区别
小组成员名单:
0361136 0361115 0361125 0361113 0361134 0361122 0361132 陈文蓉 李君 郑喆颖 谭小群 王国英 龚绿 黄海南
绪论
Struts、Webwork Spring MVC、Tapestry、JSF等 Dinamica、VRaptor等 基于Web的MVC framework在J2EE的世界内已是空前繁荣。目前比 较好的MVC框架,都提供了较好的层次分隔能力。在实现良好的MVC 分 隔的基础上,通过提供一些现成的辅助类库,同时 也促进了生产效率的提高。 如何选择一个好的框架应用在一个项目中,对于这个项目的效率和 可重用来说是至关重要的。我们组的presentation将对目 前最流行、最常用的两种framework进行介绍和比较。
Action
(业务逻辑)
使用
调用
taglib(view)
ActionMapping
JavaBean
(模型)
Struts框架(续)
视图(View)就是一系列提交到客户浏览器进行显示的JSP文件,是用户 看到并与之交互的界面。在这些界面中没有业务逻辑,也没有模型信息, 只有标签。 模型(Model)表示应用程序的状态和业务逻辑,通常由JavaBean或EJB 组件来实现。 控制器(Controller)的作用是从客户端接受请求,并且选择执行相应的 业务逻辑,然后把响应结果送回到客户端。 在Struts中Controller由ActionServlet类和Action类来实现。ActionServlet 主要负责接受HTTP请求信息,Action类负责调用模型的方法,更新模型 的状态,并帮助控制应用程序的流程。
Spring MVC 框架:MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量 视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。
Spring Core
Supporting utilities Bean container
Spring框架
组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与 其他一个或多个模块联合实现。每个模块的功能如下: 核心容器:核心容器提供 Spring 框架的基本功能。核心容器的主 要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用 控制反转 (IOC) 模式将应用程序的配置和依赖性规范与实际的 应用程序代码分开。 Spring 上下文:Spring 上下文是一个配置文件,向 Spring 框架 提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、 电子邮件、国际化、校验和调度功能。
Spring框架(续)
Spring AOP:通过配置管理特性,Spring AOP 模块直接将面向方面的编 程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管 理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中 的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件, 就可以将声明性事务管理集成到应用程序中。 Spring DAO:JDBC DAO 抽象层提供了有意义的异常层次结构,可用该 结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结 构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如 打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。
Struts框架
Struts是一个比较好的MVC框架,提供了对开发MVC系统的底层支持, 它采用的主要技术是Servlet,JSP和Custom tag library。其基本构成 如图所示。
ActionServlet
(控制器) 调用
Jsp(view)
实例化
ActionForm
(模型的数据)
使用
使用
Spring Context Spring DAO
Transaction infrastructure JOBC support DAO support Application context UI support Validation JNDL EJB support &remodeling Mail