基于MVC设计模式Struts框架的应用方法

2009-01-20 01:55王雅轩
计算机教育 2009年24期

顼 聪 王雅轩

摘要:Struts 是当前应用开发中最为流行的框架之一。它提供一个非常好的MVC框架,在Web应用开发中把界面和业务逻辑分离,提高了代码的可重用性和灵活性,便于组件式开发。文章简要介绍MVC设计模式和Struts框架的体系结构和工作原理,然后结合一个实例,讲述Struts实现MVC模式Web应用的过程。

关键词:MVC模式;Struts;Web应用

中图分类号:G642 文献标识码:A

传统的Web应用开发工具(ASP、JSP)将页面显示、商业逻辑和数据处理大部分都集中在页面代码中,Web应用扩展维护比较困难,在大型Web应用开发中愈发显得力不从心。MVC设计模式将页面显示、商业逻辑和数据处理相分离,最大限度地降低系统各部分之间的耦合性,提高代码重用率,易于分工协作。而Struts是一个为开发基于MVC模式的应用架构的开源框架。

1MVC设计模式

MVC设计模式是一种著名的用户界面软件开发设计模式,它是模型-视图-控制器(Model-View-Controller)缩写。在MVC设计模式中,它把应用程序分成了3个核心部分,原理如图1所示。

(1) 模型(Model)。模型封装了用户数据和处理数据的业务逻辑,体现了应用程序的当前状态,而且可以将用户数据状态的变化提供给多个显示该数据的视图共用。

(2) 视图(View)。视图提供了用户界面,是用户和应用程序的交互的窗口,既接受用户输入,也把模型数据状态显示给用户,但是视图不负责任何业务逻辑处理,仅仅是将用户输入数据传递给控制器或将模型数据显示给用户。

(3) 控制器(Controller)。控制器连接了模型和视图,根据用户请求判断将请求交给哪个模型来完成,然后调用视图来显示模型处理后的用户请求结果。

MVC设计模式将应用程序进行了分层,提高了软件的可扩展性、可维护性。

2Struts框架

Struts框架继承了MVC设计模式的特性,是J2EE体系架构的一种轻量级实现。其工作原理如图2所示:

(1) 控制器的实现。Struts框架中采用了ActionServlet和Action类以及Struts-config.xml配置文件作为控制器的实现。其中,Struts-config.xml配置文件配置了不同用户请求及对应的具体业务逻辑组件来供ActionServlet类查询。ActionServlet类是中心Servlet,负责处理所有的用户请求。当用户提出请求,ActionServlet类最先对请求进行处理,它将根据Struts-config.xml配置文件将用户请求映射到具体的Action类;而当Action类调用模型组件处理好用户请求,并返回了处理结果后,仍然由ActionServlet类根据Struts-config.xml配置文件将结果转发到视图提供给用户,或者转发另外一个Action做进一步处理。Action类实现了具体的业务逻辑,它接受用户的输入,然后调用具体的模型组件来完成用户请求。

(2) 视图的实现。Struts构架主要采用了JSP作为视图的实现,它提供了丰富的JSP标签库支持应用程序的开发,而且引入了ActionForm组件(实质为JavaBean)作为用户表单的封装来完成数据的传输。

(3) 模型的实现。Struts框架对模型——即复杂的数据持久化层没有提供太多的支持,但是这也就是说开发人员有更多自由来选择合适量级的持久化技术,比如Hibernate、EJB等。

3Struts工作流程

对于采用Struts 框架的Web应用,其具体工作流程如下:

(1) 客户端通过本地浏览器向服务器发出一个请求;

(2) 控制器接收请求,找到对应的Action;

(3) Action类执行建立在模型组件基础上的业务逻辑;

(4) 一旦Action类处理完业务逻辑,它把控制权返回给ActionServlet;

(5) 当ActionServlet把Action类的处理结果传送到指定的视图中。

4Web开发中的应用

以一个Web考试系统中的考生注册子系统为例,说明Struts 在Web程序开发中的应用。考生在注册页面上输入考生名、密码等相关信息,若注册成功,控制将转向一个显示注册成功的页面,否则控制将转向一个显示失败的页面。具体步骤如下:

(1) 项目建立。

(2) 实现视图功能的用户界面的设计。Struts中,JSP 页面中利用Struts框架提供的taglib 标记库的标记能够大大提高开发效率。在该系统中,其注册页面reguserinfo.jsp 概要如下:

//引用Struts bean 标记

<%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean"%>

UserName:

Password:

(3) 实现模型功能的组件设计。模型部分包含了应用程序的业务逻辑。

① 系统状态组件(FormBean),即实体模型类,它继承自ActionForm类,用来存放表单数据,与注册页面的表单对应的数据Bean如下:

…;

public class UserForm extends ActionForm{

public String getUserID(){return userID;}

public void setUserID(String userID)

{this.userld= userID;}

}

② 指令类组件(ActionBean),它扩展了Action 类,主要是用来控制应用程序的流程,当注册考生按“Submit”按钮后,来自用户的请求被Servlet 送到指令类组件RegUserAction,指令类调用相应的业务逻辑进行处理,然后把请求转发给相关的JSP,其程序概要为:

…;

public class RegUserAction extends Action

{

public ActionForward perform(ActionMapping

mapping, ActionForm form, HttpServletRequest

req, HttpServletResponse response) {

//获取注册信息,并据此做相应操作

}

}

(4) 实现控制器功能的指令。控制器类ActionServlet的核心是Struts-config.xml 配置文件,它包含了应用程序的整个逻辑流程。在考生注册信息过程中,用reguserinfo.jsp实现注册页面;用UserForm(扩展了ActionForm)封装了表单数据;用RegUserAction实现了考生注册信息并控制了应用程序流程;而在Struts-config.xml 配置文件里实现了注册页面(reguserinfo.jsp)、数据Bean(UserForm)、逻辑Bean(RegUserAction)之间的联系,其配置信息为:

name="userForm"scope="request">

当在注册页面上单击“Submit”按钮时,考生请求被提交给ActionServlet, ActionServlet 根据Struts-config.xml 中的配置信息,把/reguser.do 的URL映射到RegUserAction,把考生注册信息封装到UserForm,由RegUserAction 完成

注册操作,然后转发给“/regsuccess.jsp”。

(5) 系统运行。 完成整个系统的功能实现。

5总结

Struts体系框架自从2001年7月发布了1.0版之后,已经越来越得到Java开发者的支持,实践证明,Struts体系框架的确是一个优秀的框架,大大缩短了Java Web应用程序的开发周期,提高了系统开发效率。

参考文献:

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

[2] 阎宏. Java与模式[M].北京:电子工业出版社,2002.

[3] Ted Husteel, Cedric Dumoulin, David Wiwerfeldt, et al.《Struts in Action》[M]. ManningPublication co.2001.

Application Methods of Struts Framework Based on MVC Designed Pattern

XU Cong, WANG Ya-xuan

(Software College, Dalian University of Foreign Language, Dalian 116044, China)

Abstract: Struts is one of the most popular frameworks for Web applications and developments nowadays. It brings a very good MVC framework and separate interface and business logic. It aided in the code reusability and flexibility for components developments. This paper briefly introduces MVC(Model/View/Controller)designing mode and the Struts framework. An example is given to illustrate how to design web application of MVC patterns using Struts.

Key words: MVC pattern; Struts; Web application