基于MVC_DAO模式的struts框架应用

  • 格式:doc
  • 大小:127.50 KB
  • 文档页数:4

基于MVC+DAO设计模式的struts框架应用

摘要:简要介绍了MVC+DAO设计模式和Struts 框架,简化了Web 应用程序的开发。讨论了Struts 框架实现MVC 模式的原理与方法, 给出了一个具体的应用实例。

关键词:MVC模式 Struts框架 应用

1、引言

随着Internet的迅猛发展,诞生于上世纪90年代中期的java语言,得以在近十几年的发展中,迅速成为Internet上最受欢迎的开发与编程语言。而基于Web的应用系统也同时成为趋势,B/S结构的发展日臻成熟,用户省却了繁杂的系统安装过程,所有界面完全通过Web浏览器实现,并且只在客户端处理简单的事物逻辑,主要的事物处理在服务器端实现。基于java语言发展而来的Java Web开发技术——J2EE的高安全性,可移植性,跨平台性和易维护性,使得J2EE成为大中型企业Web开发的主流技术。

目前大多数基于J2EE的Web应用程序都是采用MVC设计模式进行开发的,即JavaBean+Servlet+JSP,实现了显示结果和业务逻辑的分离,而通过DAO模式对Model层进行再分层,进一步降低了数据库操作和逻辑判断之间的耦合性,也减少了代码重复。

在MVC基础上,Apache组织提供了一个实现MVC模式的开源框架——Struts,大大提高了开发效率,成为开发大中型Web应用系统的一个不错的选择。

2、MVC模式原理

MVC,即Model(模型)-View(视图)-Controller(控制器),起源于上世纪80年代诞生的由IBM开发的最早面向对象的开发语言——Smalltalk。Java Web开发技术使用JavaBean作为模型,Servlet作为控制器,JSP页面作为显示端,形成MVC开发模式。

在使用MVC模式之前,使用JSP+JavaBean开发时,JSP页面中存在大量的流程控制代码和逻辑判断代码,虽然开发速度快,简单易学,但在JSP页面中直接操作JavaBean中的对象,耦合性强,为后期的维护带来很大不便。而MVC体系结构模式,将原来JSP视图端的流程控制和逻辑判断代码放到Controller中,解除了Model和View的耦合,彻底将显示和业务分离,提高了系统后期的可维护性和可扩展性。模式框架及相互关系如图1所示。

(1) Model(模型),业务逻辑和数据处理,包括数据库的打开和连接,对数据的增删改查,业务逻辑的提供,是系统的关键执行部分,直接操作数据库。Java Web开发中,控制器(Controller)

接收用户请求

调用模型响应用户请求

选择视图显示模型处理结果

模型(Model)

封装应用程序状态

响应控制器调用

执行业务逻辑

通知视图更新状态 视图(View)

传递用户请求至控制器

显示模型处理结果

响应模型状态更新 选择视图

用户请求 响应请求

状态查询

通知更新

方法调用 事件

图1 MVC模式框架 通常使用JavaBean来实现,包含Web应用的功能的核心部分。

(2) View(视图),用户界面,是信息交互的平台,用户通过视图获得所需请求的响应,得到希望获取的数据。Java Web开发中,通常可以是HTML页面、JSP页面,同时使用javascript和css增强页面的动态效果和美化

(3) Cotroller(控制器),流程控制和部分逻辑判断,根据用户的请求控制模型中对象实现和业务逻辑处理,并将模型处理后获得的数据反馈到视图,供用户使用。Java Web开发中,通常是Servlet根据页面请求实现所需的JavaBean对象,调用业务逻辑方法,得到数据结果根据跳转路径显示在合适的页面上。

这种JSP+Servlet+JavaBean的MVC开发模式,在开发上降低了页面显示和业务逻辑之间的耦合性,提高了系统的可维护性,灵活性和可扩展性,是大中型Java Web应用的主流开发模式,被广泛采用。

3、MVC+DAO设计模式

在Model层,如果数据源发生改变,必然导致不同的数据访问,JavaBean也必然被修改以寻找新的数据源。执行业务逻辑时,真实主题的实现是不相同的,但在实现真实主题前后必然会有相同或者重复执行的步骤和过程,造成代码重复。而且在Servlet中,如果直接调用真实主题实现类,必然带来很强的耦合性,不易于维护。

针对以上问题,产生了基于MVC模式Model层的DAO模式(Data Access Object),主要由工厂类(Factory),代理类(Proxy),实现类(DAOImpl),DAO接口和值对象类(VO),以及数据库连接类组成。

(1) Factory类:用来实例化所操作的对象。

(2) Proxy类:代替真实主题实现类完成所有工作,使得真实主题实现类可以专心完成真实主题,而准备工作和收尾工作全部由代理类完成。

(3) DAOImpl类:完成数据访问真实主题的业务逻辑处理,得到最终用户所希望获得的数据信息。

(4) DAO接口:定义所需要的具体操作方法。

(5) VO类:封装数据库表,一个vo类代表一张表,一个vo类对象代表表中的一条记录。通过该对象的属性和相应的setter方法和getter方法来对应设置或得到数据库表中的字段。

(6) DBConnection类: 用于连接数据库,可根据不同的数据源和持久性数据存储修改类的属性,减少了主题实现类的工作。

MVC+DAO模式,将业务逻辑处理功能进一步细分,虽然前期开发代码量有所增加,但在大中型项目中的优势还是很明显的,将业务对象和数据实现彻底分离,可移植性和可维护性大大增强,简化了业务模块,提高了系统整体可读性和开发效率。当然,这种设计模式也仍然存在DAO对象和SQL语句嵌套和耦合的缺陷。

4、Struts开源框架

Struts就是一个实现了MVC标准的框架(Web Framework),它由一组相互协调的类、Servlet以及JSP TagLib组成。Struts有自己的控制器(Controller),同时整合了其他的一些技术去实现模型层(Model)和视图层(View),在模型层,Struts可以很容易的与数据访问技术相结合,包括EJB,JDBC和Object Relation Bridge。在视图层,Struts能够与JSP、Velocity

Templates、XSL等这些表示层组件相结合。图2表示了Struts框架的体系结构。

Struts框架由以下部分组成:

(1)配置文件:Action控制类和ActionFrom验证类配置文件struts-config.xml;中心Servlet配置文件web.xml;资源文件ApplicationResources.properties;自定义标签文件*.tld。

(2)JSP页面 (3)ActionForm类:专业用来处理表单数据的DTO,通过validate()方法对表单数据进行验证。

(4)Action类:从ActionForm接收数据,进行流程控制,并指派特定的模型组件执行业务逻辑,得到结果并执行跳转,响应给用户所需的数据信息。

图2. Struts体系结构

5、Struts框架应用

以常见的用户登录模块为例

(1) Model层采用MVC+DAO模式分层。

(2) View层采用JSP页面显示和通过ActionForm类进行表单验证。

JSP页面中添加标签库:

<%@ taglib uri="/tags-bean" prefix="bean"%>

<%@ taglib uri="/tags-html" prefix="html"%>

<%@ taglib uri="/tags-logic" prefix="logic"%>

<%@ taglib uri="/tags-tiles" prefix="tiles"%>

JSP页面中的表单提交:

用户名:

密  码:

ActionForm中进行表单数据验证:

public ActionErrors validate(ActionMapping mapping,

HttpServletRequest request) {

ActionErrors errors = new ActionErrors();

if ( == null || "".equals()) { // 为空表示错误

errors.add("name", new ActionMessage("name.null")); // 找的是属性文件的key

}

if (this.password == null || "".equals(this.password)) { // 为空表示错误

errors.add("password", new ActionMessage("password.null")); // 找的是属性文件的key

}

return errors;

} (3) Controller层需要配置struts-config.xml如下:

name="loginForm" path="/login" scope="request"

type="org.bjx.struts.action.LoginAction">

错误跳转页面为“error.jsp”,跳转路径名称为“login”,物理位置为根目录下的login.jsp页面。

6、结束语

MVC+DAO模式将业务对象和数据实现彻底分离,Struts框架使系统开发过程中的各个模块更加细化,用户界面、业务过程、业务逻辑和业务控制实现分离,通过配置文件struts-config.xml的映射进行跳转,如果需要修改跳转路径,只需要修改配置文件而不需要修改程序代码,View层通过标签语句彻底摈弃了*.jsp页面中繁复的Scriptlet代码,简化了开发过程,增强了开发人员对系统的整体把握,提高了系统的可维护性、可扩充性和可移植性。

参考文献:

[1] 孙卫琴,精通Struts:基于MVC的Java Web设计与开发,北京:电子工业出版社,2004.

[2] /1.x/userGuide/index.html,2008

[3] JamesTurner,Kevin Bedell著,孙勇译,Strurs Kick Start.,北京:电子工业出版社,2004

The Application of Struts Frame Based on MVC+DAO Pattern

Bao Jia Xin

Abstract: This paper introduces MVC pattern and Struts frame briefly,simplifies the web

application procedure development. Discussed the Struts frame realizing the MVC pattern’s

principle and method, and gives a concrete application case.