mvc框架十篇

时间:2023-03-31 09:23:08

mvc框架

mvc框架篇1

【关键词】.NET MVC框架 Web 设计

在基于.NET MVC框架的Web出现以前,Web中的主要技术是ASP、JSP等技术,这些技术的应用很容易将业务逻辑与页面显示混合起来,并不利于分工与协作。同时由于在业务逻辑层中含有SQL语句,如果出现数据库变化等,将直接影响到系统修改,其不利于系统维护。因此,基于.NET MVC框架的Web设计成为计算机领域研究重点。

1 MVC优点

MVC的优点主要体现在以下几点:

1.1 共享性

它主要是利用模型完成数据返回的,且可以利用视图实现数据传达,并实现格式化,然后再将这些信息传递到用户手中,在数据分离形式的作用下,也可以有效提升系统代码的移植性与重用性。

1.2 控制性

这一点主要表现在控制器对业务的控制上,它能够结合用户实际情况完成控制,然后从模型层中获得必要的信息,再将这些信息传递到视图层中,并让这些数据显现出来,这样也可以有效提升应用程序的可配置性与灵活性。

2 MVC设计思想

MVC主要由三部分构成,分别为模型层、视图层以及控制器层。为做好NVC设计,就需要充分了解这三个层次:

2.1 视图层

它所代表的是同网页用户的应用界面,也就是Web中的HTML页面。一般来讲,视图层主要是将系统中的数据呈现出来,且为用户提供有利于交互的界面,这样一来也就减少了地其他业务的处理。在实际利用的过程中,视图通常需要提交数据用户以后再接受其他数据,然后再将这些数据以用户需求的方式体现出来,同时,用户也会利用视图层将自己的请求传送到模型中。

2.2 模型层

它是MVC框架中最重要的组成部分,是实现系统逻辑处理的重要组成部分。在模型接收来自视图层的请求以后,就会自动处理,然后再将处理结果在控制器的作用下回馈给视图层。在这一过程中,控制器与视图层均是通过操作的方式进行工作的。

2.3 控制层

对于控制器来说,其功能是将用户发出的请求反映给模型,然后再将模型所给出的结果反映给用户,可以说控制层是视图层与模型之间的中转环节,是反馈用户请求的重要力量,但它并不参与数据处理工作。

3 基于.NET MVC框架的Web设计

对于常规Web应用系统来说,主要分为表示层、业务层以及数据库层几个部分,在表示层中,只有视图与控制器两部分;在业务层中有业务逻辑层、实体层、数据访问及其接口层;在数据层中仅有数据库。要做好基于.NET MVC框架的Web设计,应从以下几方面入手:

3.1 表示层

对于.NET MVC框架来说,在的作用下能够获得良好且有利于MVC设计实现的环境。开发人员只要利用.aspx页面中的开发用户接口就可以将视图展示出来,同时也可以将控制器中的功能体现出来。模型主要对应的则是业务应用部分。为做好基于.NET MVC框架的Web设计,可以在页面控制器的作用下优化MVC,然后在应用程序各个页面的公用方法中编入基类,这样一来,所有页面中都存在基类,它们不仅可以将自己原有的内容体现出来,还具有其他作用。

3.2 业务层

对于业务层来说,它是MVC设计中十分重要的一部分,也是基于.NET MVC框架的Web设计基础,在这一部分的设计中应从以下几方面入手:

(1)保证业务逻辑与数据实体相分离,两者属于不同的组成部分,对于业务逻辑类来说,主要是利用实体对象完成业务规则与逻辑实现的,而实体层则有自己的实体对象,一般来讲只有属性,不存在方法,所以主要用于数据实体展现。

(2)分x数据访问与业务。在这一部分中主要涵盖了数据访问层及其接口层,它的主要作用是让业务逻辑层可以全面的描述业务规则,这样一来就可以用数据访问层完成实体对象与数据库交互。为做好基于.NET MVC框架的Web设计,应将数据访问接口层加入到访问层与业务逻辑层之间,这样不仅可以起到工厂模式的作用还能让数据访问方法构成抽象接口,这样就可以将业务逻辑层与数据访问层分离开来,同时也便于配置文件的修改。

(3)为做好基于.NET MVC框架的Web设计,还要在访问层中应用NHibernate工具,它是以.NET为基础建立起来的关系型数据库,属于对象持久化类库的一种。在NHibernate中不必编写SQL语句,它可以将相关的映射信息保留下来,并存储到原数据中,这样就可以让代码与对象之间存在一定的关联性,并自动生成SQL语句,这样也可以让对象存储到表与字段中。

3.3 模型层

由于模型是应用程序的中心,其中涵盖了很多与应用程序相关的内容,所以,在实际设计中,应进一步强化应用程序的持久化。对于基于.NET MVC框架的Web设计来说,可以将LINQ-TO-SQL应用其中,原因在于这种设计方式不仅有利于,还可以将.NET平台与LINQ机制结合在一起,这也是有效提升数据库处理能力的有效方式。在设计中,可以先为应用程序创建DAL,但不需要编写代码,然后再做进一步细分,并用LINQ完成语句查询,且从数据库中找出所需的实体对象。在设计完成以后,LINQ-TO-SQL就可以将不必要的细节忽略,这样既能有效提升数据库操作的便利性,也能进一步强化业务逻辑开发,更可以加快数据应用程序开发速度。

3.4 控制层

由于控制层主要用于用户请求与输入处理,然后再将结果反馈给客户端,同时完成数据集合与处理,并为其呈现合适的视图,这样就可以将隐藏其中的视图代码消除。为做好设计首先应创建合适的模型,并全面检查数据访问与执行状态,且提供一定的面向对象数据,这样就可以让数据与方法结合在一起,且构成一定的视图。在.NET MVC框架完成以后,也可以更好的完成各个元素之间的协调与组织,这也是有效强化程序元素交互的有效方式。为进一步做好应用程序测试,还要做好类显示输出,以便为用户输入奠定基础,尽管编写程序相对复杂,但且会因.NET MVC框架的不同,将业务逻辑分离开,这样也可以有效提升单元测试效率。

3.5 视图层

在基于.NET MVC框架的Web设计中,视图层主要用于模型展示,在视图层的作用下可以将浏览器中的HTML页面展示出来,所以,在实际时可以利用微软控件实现控制,这样也可以让HTML更加洁与高效。然后通过.NET MVC提供的相关说明了解各个控件的作用,这样就可以顺利完成视图层设计与开发,相关开发也可以有效提升工作效率。在视图层设计完成以后,还可以顺利完成视图检查等,尤其是在编译阶段,可以随时发现隐藏在其中的错误与缺陷,视图模板也将变得更加清晰。

3.6 框架特点

之所以要重视基于.NET MVC框架的Web设计,主要是由于在基于.NET MVC框架的Web设计中,Web中的三层框架带有一定的细分性,不仅可以让结构更加清晰,还能进一步完备相关功能,进而让系统变得更具有条理性与便捷性。其次,做好.NET MVC框架设计,可以让显示层与应用层相互分离,也可以进一步做好页面修改,这也是实现单元测试,强化系统灵活性的有效方式。再者,在基于.NET MVC框架的Web设计实现以后,还可以最大程度的减少依懒性,由于前端页面过于复杂,需要共享的代码也很多,这就需要利用MVC模式完成分离等,这也是有效强化管理,做好修改的有效措施。最后,在基于.NET MVC框架的Web设计中,不仅可以让数据访问与业务逻辑区分开来,还可以强化系统的可移植性与持久性,尤其是在工厂模式的作用下,也可以进一步突出依赖倒置原则,且最大程度的减少数据访问层给系统带来的变化。

4 结束语

之所以要做好Web设计,主要是为了更好弥补原有设计中的不足,为实现这一目标,基于.NET MVC框架的Web设计成为重点,在这样的Web设计完成以后,不仅有效提升了系统灵活性,还进一步提升了可维护性,同时也有效降低了代码编写量与复杂性,促进了开发效率早日完成,因此,应重视基于.NET MVC框架的Web设计。

参考文献

[1]周文红.基于 MVC框架的Web应用开发[J].计算机与现代化,2013(10):197-199.

[2]黄胜根,陈蜀宇.基于 MVC框架的干教系统的设计与实现[J].计算机技术与发展,2010(02):190-193.

[3]刘亚鹏,张征,俞婷.基于MVC多层架构的Web应用框架设计[J].微计算机信息,2011(07):169-171.

[4]许辉.基于 MVC框架的Web设计[J].计算机光盘软件与应用,2014(16):266-267.

[5]黄东连.基于 MVC框架的Web开发研究[J].河南科技,2015(13):26-27.

[6]肖洋.基于的MVC框架的应用开发模式研究[J].电子技术与软件工程,2016(02):63.

[7]满高媛.MVC设计模式在框架中的应用研究[J].软件导刊,2016(04):149-151.

mvc框架篇2

关键词:MVC;开发框架;软件复用;DIPO;开发流程

DOIDOI:10.11907/rjdk.151549

中图分类号:TP303

文献标识码:A 文章编号

文章编号:16727800(2015)006004103

作者简介作者简介:俞新凯(1975-),男,广东韶关人,硕士,广州城建职业学院机电与信息工程学院讲师、系统分析师,研究方向为软件工程理论与方法、数据库技术与理论、Java Web技术与Android应用开发。

0 引言

在当今以互联网技术为主导的软件业界中,Web应用软件在数量上占据了相当大的比重,无论是PC端还是移动终端,都可以用浏览器来访问Web服务。互联网上每天都在大量的Web应用软件,因此,如何在Web应用开发过程中采用高效的开发流程,并且在其后续的升级改造中也能按照该流程进行持续性开发,是大多数软件企业和开发者面临的问题。

Web应用软件采用的软件架构是典型的B/S模式,前端展现层为浏览器,后端为HTTP服务器,如果将应用服务器与数据库服务器分离,则形成三层结构体系,即“浏览器―Web服务器―数据库”。

MVC设计模式是解决三层结构体系的重要设计模式,但MVC也仅是给出抽象的解决方案,而未给出具体实现过程的技术解决方案。不少软件组织专门为三层结构开发了基于MVC设计模式的开源架构和工具,如Struts、Spring等。由于这些开发架构为了满足大多数Web应用软件的开发需要和众多的功能技术需求,在不断的版本升级中变得越来越庞大,而对于某一个应用软件而言,其使用到的功能只是这些开源框架中的一小部分,为此却不得不在自己的应用中加入大量依赖插件,使程序变得十分厚重,不便于长期开发和维护。笔者在总结多年的Web应用软件开发的经验基础上,设计出一套能实现MVC设计模式的轻量级开发框架,以满足大多数轻量级的Web应用程序设计要求。

1 MVC设计模式

MVC设计模式的主导思想是将软件系统分为3层:①Model(模型层):负责实现系统中每个业务模块的逻辑细节,对输入的数据进行加工处理,并输出返回给前端页面。模型层通常要对数据库进行读取与存储操作;②View(视图层):直接面向用户的系统界面,负责往后台业务层传递用户输入的参数,并接收从后台业务单元返回的结果数据。视图层的主要作用是接收用户发出的请求,以及把系统的处理结果展现给用户;③Controller(控制器):是系统中负责联系模型层和视图层的中间桥梁,起调度作用。在涉及数据转发、视图选择、安全认证、系统环境配置等方面事务时,通常由控制器负责完成[1]。

MVC体系结构采用分治的思想,实现了表示层与数据层的分离。MVC分层有助于管理复杂的系统逻辑,视图层和模型层通过数据交换接口实现两者之间的数据对接。在视图层通常采用标签语言的形式撷取数据,而在模型层则用控制器提供的数据接口接收和输出数据。MVC分层体系还简化了不同分工的开发人员的开发复杂度,使其可以相对独立地完成开发任务。开发视图层与开发模型层的人员可以并行工作,只要在同一个控制器下,遵循统一的数据标准即可[2]。图1描述了MVC设计模式的逻辑模型。

2 DIPO框架介绍

2.1 DIPO设计理念

DIPO全称为“Data―Input―Process―Output”,即“数据―输入―处理―输出”,它以简化系统开发流程、提高软件复用程度为目标。从开发者的角度看待系统,任何系统的所有功能模块,都可以归结为“数据―输入―处理―输出”这条处理流程,系统中任何一次请求与响应的处理过程,都可以看作是一个Action Unit(活动单元),每个活动单元即是一次“Data―Input―Process―Output”的实施过程。

因此,无论是从设计上的抽象层到实现中的具体层,还是从软件的开发期到运行期,都遵循这样一个简单流程,使系统的设计、开发、维护、升级都变得轻量级且易于扩展。

DIPO开发框架采用MVC设计模式[3],可以完成诸如界面呈现、视图分派、用户交互、数据刷新、定时调度、对象传输、安全控制、应用环境配置等众多功能;前端采用W3C标准的系列语言,包括HTML、CSS、JavaScript,其中还大量使用了Ajax技术;在数据传输模式上涵盖了WebService、HTTP、FTP、DTO(数据传输对象)、Socket、RMI(远程方法调用)等,还集成了J2EE技术体系中的众多部件,可以与不同框架体系的系统进行标准化的数据交换。

2.2 DIPO与MVC的关系

DIPO框架是实现MVC设计模式的一种具体的框架技术,同时也对MVC作了进一步改造,其中包括:

(1)DIPO中的Data在MVC模式中未直接体现出来。将Data扩展出来的主要意义在于让开发者对所有原始数据和加工数据予以高度关注。因为数据由始至终都代表着用户对于系统的真正意图,系统所做的一切都是围绕着数据展开的。因此,Data才是用户与系统共同关注的核心要素。

(2)DIPO中的Input和Output对应于MVC中的视图层,即将MVC中的View分解成输入――Input,与输出――Output。在这种设计思想的引导下,开发者可以清晰地区分视图层中哪些是用户对系统的请求,哪些是系统对用户的响应,把数据来源和去向弄清楚,才能准确无误地处理好业务单元。

(3)DIPO中的Process对应于MVC中的模型和控制器,再度对MVC模式作了简化。因为控制器是框架提供者在应用系统开发前,就已按照框架的复用机制定制好的,所以框架的第三方开发者可以不必关注控制层的具体细节,而将主要开发精力投入到具体的界面设计和业务处理逻辑上。

3 DIPO框架开发流程

基于DIPO开发框架的应用系统,在用户与系统进行任何一次交互动作时,都是以一个Action(活动单元)作为基本粒度。一条常规的DIPO开发流程如下(以新增机构交易为例):

(1)定义该活动的输入数据项(上级机构、机构名称、机构类型等)、输出数据项(机构名称、操作结果)。

(2)为这个交互活动命名一个txcode(交易码),名为DeptAdd。

(3)在配置文件actionlist.xml中为交易码DeptAdd添加一个节点,指明该交易要调用的程序单元为DeptMng,即一个Java程序,并且指明在程序处理完毕后,要将结果到哪一个视图中(可以是JSP、HTML、TXT、图片、导出下载文件等),如DeptList.jsp。

(4)为DeptAdd交易指定一个触发点,分为以下3种情况:①通过系统菜单项,用户在主界面上点击对应菜单项即可触发该交易;②通过系统中某个页面中的用户操作触发,如按钮、按键、表单提交等;③在执行多个交易串行处理过程中,DeptAdd交易是其中一个环节。

新增机构交易DeptAdd属于上述的第一种方式,即通过系统菜单项获得该交易的入口点。

(5)编写一个Java程序DeptAdd.class作为交易活动处理单元,完成对用户传入参数如上级机构ID、本级机构名称的数据处理。如果合法,则向系统添加一条机构数据。

(6)如果DeptAdd交易涉及对数据库的访问和更新操作,则还需要编写相关的数据库表以及SQL语句来执行完成过程。

(7)编写响应(返回)页面。在本例中,DeptList.jsp是交易处理完毕后的响应(返回)页面,页面编写属于静态界面设计部分,其中的动态数据则由活动单元返回的参数来实时更新。

4 结语

从上述开发流程可以看出,遵循“Data―Input―Process―Output”的步骤,可以使开发流程变得十分简单、清晰,包括“什么样的数据(Data)”、“从哪里传入(Input)”、“由哪个单元处理(Process)”、“输出到哪里去(Output)”。

DIPO开发框架是一套笔者于2009开发成型的Web应用开发框架,并已成功地推广到多家企业的Web应用。其基于MVC设计模式,迎合了当今大多数软件开发者的模式取向。同时采用Java程序语言开发后端程序,采用HTML、CSS、JavaScript和Ajax开发前端界面,使视图层、业务层、数据库可以分别交给不同的开发人员进行并行开发,而中间的控制层则由DIPO框架自身实现,无需第三方开发者另行开发,从而大大提高了开发效率。

参考文献:

[1]任广震,侯进,王献.MVC模式在B/S结构政务系统的应用研究[J].计算机应用与软件,2014 (8):5458,74.

[2]罗丽娟,陈永政.浅谈MVC框架模式[J].科学咨询,2013(2):1213.

[3]李丽,顾明.基于J2EE的系统设计方法和模式比较[J].计算机应用研究,2002(11):3842.

[4]周辉,任海军,马亮,等.MVC设计模式及其在信息系统开发中的应用[J].软件导刊,2012,11(10):120122.

mvc框架篇3

关键词: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 标记

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)

mvc框架篇4

关键词:Ajax技术;Struts框架;异步响应;JavaScript

中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)34-1650-03

The Research of Web Application Framework Based on the Collaboration of Ajax Technology and MVC Pattern

HE Xi-chun, XIONG Qian-xing, WU Ting

(Department of Computer Science and Technology, Wuhan University of Technology, Wuhan 430063, China)

Abstract: There are many problems in the existing Electronic Application System with the B/S mode. For example: The user always needs to wait for a long time for the result; the server always has to be under large pressure; a large part of resources at the client-side are leaved unused and so on.. This article studies the Ajax technology at first, and then combines it with the Struts Framework based on the MVC design pattern. With the collaborative work from the two parts, we can promote the response speed of the Web applications based on the B/S mode and construct a more effective web-application framework.

Key words: Ajax technology; Struts framework; asynchronous response; JavaScript

随着Internet的飞速发展,基于Web的诸多应用以其丰富而生动的界面和方便使用等特点在信息化的建设中发挥的作用日益显著。随着服务器端开发技术的成熟,越来越多的开发人员开始亲睐B/S(Browser/Server)的设计模式。如何克服B/S模式自身的一些问题:例如用户体验不如C/S模式;服务器端压力过大,没有充分利用客户端的资源,也就成为应用系统需要研究的新问题。例如,某大型水路征稽系统,就是一个典型的电子政务系统。该系统集征稽与管理为一体,征稽部分帮助完成用户开票操作,管理部分用于数据的统计分析和查询。征稽部分对实时性和数据的准确性要求很高,

并且用户输入的过程中涉及到相关数据的验证。综合起来,就是要求服务器既能提供相当于本地系统似的响应速度,又可以提供大量数据的统计查询。

针对以上问题,本文提出将Ajax技术与MVC模式相结合的新型web框架应用到电子系统中。为了避免页面的臃肿和维护的困难,在中间层上采用MVC的设计模式。同时利用Ajax技术实现浏览器与服务器无刷新交互,数据的按需获取与页面的部分加载,极大的缓解网络流量。将Ajax的优越性,与现有的MVC设计模式相结合,使得Web应用不仅层次分明,可重用性强,具有高的健壮性和可伸缩性,而且具有良好、丰富的用户体验。

1 基于MVC模式的Struts框架介绍

MVC(Model-View-Control)模式,就是模型-视图-控制器模式,其核心思想是将程序划分

成相互独立又能协同工作的三个部分,现在是web应用程序普遍采用的开发模式。Struts即是MVC设计模式一种实现。

1) 控制器:控制层,起到控制整个业务流程(Flow Control)的作用,实现视图和模型部分的协同工作。在Struts中起着控制器的作用的是ActionServlet。所有的控制逻辑利用Struts一config.xml文件来配置。

2) 视图:视图是应用程序中与用户实现交互的界面相关的部分,即表示层,通常实现数据的输入和输出功能。主要是由JSP来控制页面的输出。

3) 模式:模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑,具有实现具体的业务逻辑、状态管理的功能。

模型-视图-控制器模式工作流程见图1。

Struts框架优点显而易见:可以将逻辑处理与页面显示清楚分开;页面显示可以使用JSP标签库,从而大大提高开发效率;通过一个配置文件,既可以把握整个系统各部之间的联系,又可以大大减少后期维护的工作量。但是在服务器端提供了良好而成熟的架构实现的Struts框架,在客户端却没有相应的架构,这使Struts在一些交互性强的页面应用不理想,导致刷新页面频繁,延长用户的等待时间。在上例的系统中,存在很多用户交互频繁的页面,这也导致系统效率低下,造成服务器资源和网络资源的浪费。

2 Ajax的工作原理

Ajax(Asynchronous JavaScript and XML)并不是一门新的语言或技术,实际上它是几项技术按一定方式的组合,在共同的协作中发挥各自的作用。

传统的web应用遵循一种请求/响应的模式,对于每个请求都会重新加载整个页面。Ajax的工作原理相当于在用户和服务器之间加了一个中间层,使用户操作与服务器响应异步化,从而消除了网络交互过程中的“处理―等待―处理”的缺点[1]。每当需要更新时,客户端Web页面的修改是异步的和逐步增加的。并且客户端的浏览器可以分担一部分的业务逻辑,而不再仅仅是显示内容;服务器传送的仅仅是数据,而不是内容。这样,Ajax在提交Web页面内容时大大提高了用户界面响应的速度。在基于Ajax的应用程序中没有必要长时间等待整个页面的刷新。页面中需要更新的那部分才进行更改,如果可能的话,更新是在本地完成的,并且是异步的。所以基于Ajax技术的应用程序可以给用户提供桌面程序般的使用体验。基于Ajax的web模型和Ajax引擎模型见图2。

由于Ajax技术本身的优越性,基于Ajax技术的Web型框架现在已经应用到很多程序中。例如Gmail、Google Map、Google Suggest就是几个经典的Ajax应用。本文中重点要讨论的就是将Ajax技术与现有的MVC开发模式相结合,应用到项目开发中。

3 Ajax技术与MVC模式相结合的web框架

综合上面所分析的,基于MVC模式的Struts是一种框架,虽然它可以很好的将业务逻辑和表示分离,但是大多数的Struts应用都是标准的“如同一个平面文档Web页面”的结构。Ajax是一项技术,它的优势是使得Web页面看起来接近像用户所期望的桌面应用的动态应用程序,而不是一个平面的显示文档。将Ajax技术应用到Struts框架中,可以充分的发挥两者的优点,形成一种高效的web应用框架。

3.1 Ajax技术与MVC相结合的方法

Ajax中实现异步响应的onReadyStateChange事件具有在客户端程序中的事件监听功能。在MVC模式中,视图相当于用户看到的页面,通过内置的Ajax对象一步方式给控制器发送请求,Ajax中的onReadyStateChange则开始监听;控制器接受到页面发送过来的请求(Get或者Post方式),通过请求判断后发送给相应的业务或者数据模型;则业务或者数据模型开始执行业务操作,执行完毕后直接给页面发送数据更新的通知。页面中Ajax对象的onReadyStateChange接收到数据的更新通知后,根据实际的情况用DOM进行页面更新。从上面的结合原理上可以了解,Ajax技术与Struts框架的结合要体现在页面和控制器之间,进行异步的控制。通过分析,在Struts框架中应用Ajax技术,实际上就是加入一个Ajax引擎,这个引擎主要是用来发送Ajax异步请求到服务器和接收服务器的Ajax响应,并动态更新页面,由于采用的是Struts框架,那么无论是发送请求还是接收响应,都应该完成到StrutsForm形式和StrutsAction形式的转换。具体的结合方式可参见图3中所示。

用户的浏览器在执行任务时就装载了Ajax引擎,Ajax引擎用JavaScript语言编写,它负责解释执行用户界面及与服务器之的交互。Ajax引擎允许用户与应用软件之间的交互过程异步进行,独立于用与网络服务器间的交流。用JavaScript调用Ajax引擎来代替产生一个HTTP用户动作,内存中的数据编辑、页面导航、数据校验这些不需要重新载入,整个页面的需求可以交给Ajax来执行。

通过分析Ajax技术与Struts框架结合的原理,可以知道Ajax作为一项技术,能够很方便的融入到基于MVC模式的Struts框架中。它并不需要任何新的库文件或者服务器代码;只需要使用现有的Struts库文件和Action类。关键是在Struts的应用中根据实际业务的需要,以模块为单位加入Ajax的相关设置。首先需要确定哪些部分需要动态显示,然后将她们更新到Ajax的异步通信执行。

以Ajax技术的实现框架DWR为例。它能够把服务器端Java对象的方法公开给JavaScript代码。所以在这个引擎里,它最重要的就是提供了一个Java类到JavaScript对象的映射机制,也即是DWRServlet。DWR是作为Web应用程序中的Servlet部署的。而在Struts的视图、控制和模型三个组件中,ActionServlet就是它的控制器(Controller)。那么要将两个框架结合起来,其实也就是将DWRServlet和Actionservlet结合起来,作为整合框架的核心-MVC模式的新的控制器。

3.2 新型web框架的应用

某大型的水路征稽系统中的开票业务和协议签订业务,对系统的响应速度要求很高,且在运行的过程中,需要对用户的每一步输入的信息进行验证。这样的需求,可以通过应用Ajax技术和Struts架构相结合的新型框架来满足。

以统缴业务为例,该模块帮助用户完成协议的签订和电子协议的生成。首先需要在系统的web.xml文件中配置DWR和Struts这两个Servlet以及其映射。

……

<servlet>

<servlet-name>action</servlet-name>

<servlet-class>

org.apache.struts.action.ActionServlet

</servlet-class>

<init-param>

<param-name>application</param-name>

<param-value>ApplicationResources</param-value>

</init-param>

<init-param>

<param-name>config</param-name>

<param-value>/WEB-INF/struts-config.xml</param-value>

</init-param>

<init-param>

<param-name>debug</param-name>

<param-value>2</param-value>

</init-param>

<init-param>

<param-name>detail</param-name>

<param-value>2</param-value>

</init-param>

<load-on-startup>2</load-on-startup>

</servlet>

……

<!----以上是指定Struts的ActionServlet--->

<servlet>

<servlet-name>dwr-invoker</servlet-name>

<servlet-class>

org.directwebremoting.servlet.DwrServlet

</servlet-class>

<init-param>

<param-name>debug</param-name>

<param-value>true</param-value>

</init-param>

……

</servlet>

<!---以上是指定DWR的DWRServlet---->

要调用的JavaBean方法需要在DWR的配置文件dwr.xml中进行声明,建立映射,如:

<create creator="new" javascript="getSnxyxx" scope="page">

<param name="class"

value="edu.whut.cwts.tj.xy.getSnxyxx" />

</create>

在页面中直接调用相关的JavaBean:

function funcresult(result)

{

if(result=="1")//如果公司名称验证通过,获取该公司到目前的协议情况

{var result;

getSnxyxx.getallxxdwmc.value, dwxz.value,funcresult);

}

……}

function funcresult(result)

{//对公司协议信息的显示

……

}

DWR允许用户像调用JavaScript的函数一样调用Java方法,对于Struts框架中的ActionForm类和Action类也可以直接通过DWR调用,只需要在dwr.xml文件根据实际业务需要,对用到的类进行如上的声明即可。程序中,根据实际业务需要有的地方DWR进行实现,有的地方用Struts来实现,有的需要两者结合实现,进行灵活控制,开发高效的水路电子征稽系统。

4 结束语

本文将现在比较流行的Ajax技术与成熟的开发模式MVC相结合,可以充分发挥两者的优点,组成更为合理高效的新型web框架。Ajax技术可以异步响应页面请求,使得页面的展现更加灵活动态;基于MVC模式的Struts框架使得系统的开发,测试和维护更加科学合理。将这种新型web框架应用到应用系统的开发中,有利于改善B/S模式应用系统中普遍存在的问题,充分利用客户端的资源,减轻服务器端压力,给用户提供基于web的功能和桌面级的用户体验。

参考文献:

[1] 游丽珍,郭宇春,李纯喜.Ajax引擎的原理和应用[J].微计算机信息,2006,6(9):205-207.

[2] 佘名高,吴海林,熊童满,等.Ajax在Struts中的应用[J].计算机技术与发展,2007,10(17):69-72.

mvc框架篇5

关键词:评教系统;LINQ;UML;MVC

中图分类号:TP311 文献标识码:A文章编号:1007-9599 (2011) 12-0000-01

Online Teaching Evaluation System Design and Implementation 3.5 MVC Framework

Chen Liang

(Changsha Normal College,Changsha410100,China)

Abstract:In this paper,**College for example,in-depth analysis of the school's teaching evaluation system status and system requirements,the use of software systems development ideas and methods for the evaluation of teaching overall system analysis and detailed design.Platform using Visual Studio 2008 features,take B/S architecture,the C# language development,database selection Sql Server 2008.Framework for MVC framework support,let us see more of the highlights,so we use the MVC framework to design the web front system,let the workload in many ways to save,MVC's relatively independent,so that the program the operating mechanism is more clear,structured,low coupling,but also increase the program's scalability.

Keywords:Teaching evaluation system;LINQ;UML;MVC

信息是人们对世界的客观的描述,是人们进行联系与交流的重要途径。伴随着社会信息技术的提高,计算机已被广泛运用到许多的领域,成为推动社会发展的动力,而在软件技术的应用中,软件的开发技术,尤其是应用型软件的开发已经成为重中之重。

一、关于评教系统的概述

对绩效考评,管理学界没有一个统一的定义,但管理学者们从不同的角度,不同的侧重点对这一概念作了不同的描述。评教系统就是学生对教师的能力、工作状况和适应性,对职工的个性、资质、习惯和态度,以及对组织的相对价值进行有组织的、实事求是的评价,包括评价的程序、规范、方法的总和。

二、系统的总体设计

(一)系统的功能。评教系统主要实现的功能有:教研室管理、教师管理、评分角色管理、学年学期管理、考核管理、考核角色管理、指标管理、教员被评角色、教员评分角色、考核评分、一级指标得分浏览、二级指标得分浏览、三级指标得分浏览功能。

(二)系统的架构。主要采用三层架构来设计,三层架构的结构如下图:

1.表示层。表示层提供给用户一个视觉上的界面,通过界面层,用户输入数据、获取数据。2.逻辑层。是表示层和数据层的桥梁,它响应界面层的用户请求,执行任务并从数据层抓取数据,并将必要的数据传送给界面层。3.数据层。数据层定义、维护数据的完整性、安全性,它响应逻辑层的请求,访问数据。这一层通常由大型的数据库服务器实现,如Oracle、Sybase、MS SQl Server等。

(三)教评系统功能模块的实现。由于整个系统的系统功能十分相近,我们不一一展开叙述,此处我们以评分角色管理模块为例来研究具体是如何实现的,其他模块实现方法类似。

1.方法的定义。在评分角色管理模块中有个页面用来实现显示评分体系内所有的指标的功能。这里在后台实际上是调用了一个Get More Topic List(recount,gid)方法,该方法将返回值一个List的链接表类。按照系统的业务设计逻辑,本系统中,方法的调用要经过三层间的逐层调用。最开始是在数据存储层定义方法体,在事物层中定义方法接口,最后在表现层中调用。然而,表现层的每个方法调用,调用后再发送请求到事务接口层。事务接口层对该方法定义了接口,具体如下:

public ListGet More Topic List(int number,int gid)

{return dal.Get More Topic List(number,gid);}

此处return dal.Get More Topic List(number,gid)调用则是去实现接口的方法,完整的方法体则是数据层来实现的。数据层内对相关的SQL语句进行了表达,并返回对应的数据,逐条转换为之前定义的Group Topic Info类,然后形成链表,最后将链表返回。这一连串的跳转,充分展示了方法在这个层次框架中的运行调用机制。

2.页面构造。后台信息发送到前台后,必须充分的展现出来。这里运用到NVelocity模板语言。该语言是嵌入在HTML中的,能直接将后台的变量赋值给前台,使前台可以实现许多复杂的操作。我们以考评系统内的评分角色管理的页面为例,后台得到了一个Group Topic Info的链表,Group Topic Info类型虽然在后台定义过,然而前台还是无法识别,所以需要在后台将Group Topic Info链表转化为一个前台能够进行展现的HTML的应用的类别,必须兼容html语言。然后通过context.Put("infolist",infolist)将链表赋值给前台的NVelocity中的链表。前台接受到数据后,通过一个#foreach($infoin$infolist)循环,将链表的值逐一赋值给展示系统的变量,通过泛型变量依依显示出来。

四、结语

教评系统在教学管理中的重要地位日益突显。当然,一个科学合理的评教系统体系的设计还包括选用科学的设计方法,对指标体系的更新完善等等多个方面,是一个系统的工程。但基于自身知识所限无法一一具体加以说明,以上论述,是个人在学习实践工作中的真实体验,请各位读者斧正。

参考文献:

[1]王娴,谢弛,荣雪,范雯.SNS走向何方――SNS网站运营的现状和未来趋势研究[J].2008

[2]张祖曦.基于SNS社区的人际搜索设计与实现[J].2009

[3]Framework3.5开发技术详解[M].人民邮电出版社,2009

[4]梁冰.JavaScript开发技术大全[M].北京:人民邮电出版社,2008

mvc框架篇6

关键词:科研管理;MVC;SSH框架

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)11-2485-03

Abstract: In order to achieve the teaching and research management of information technology, combined with the actual situation of the North China Institute of Science and Technology research management, This paper reports the realization of the whole system bu constructing SSH framework based on MVC mode and in combination of using other technologies such as Ajax. The system can review the teacher’s academic achievements, such as research papers, monographs, patents, software, etc. and completes the whole process management of scientific research project.

Key words: research management; MVC; SSH

高校科研工作作为高等院校除人才培养之外的一项基本工作,是推动社会进步、解决各行业关键技术和突出问题的主要动力。高校的科研活动和能力已成为衡量一所高校综合实力的重要指标[1]。随着国家、各级部门、高校自身对科学研究活动的重视及资金投入的不断增加,高校各级、各类科研项目的数量、质量、规模在逐步提升;科研人员逐步增多,几乎所有的高校教师都是科研项目的参与者;同时,所取得的科研成果的种类、数量也在逐年增多。由此,日常科研管理任务逐年加重,科研业务管理人员以及科研人员重复性劳动增多,工作效率低下;科研活动所产生的信息资源无法高效、安全保存并共享,不能为学校科研管理决策者提供依据。面对以上问题和挑战,基于先进的计算机网络、数据库技术,建立一个符合自身工作流程和需求变化的,同时具有很强的可扩充性、可靠性和可维护性的科研管理信息系统是各高校的迫切要求[2] [3]。

基于MVC模式的SSH(Strut、Spring和Hibernate)框架是一种轻量级的应用系统解决方案。基于该架构的WEB应用系统,功能强大,开发效率高,系统安全性、稳定性、可扩展性强。该文以华北科技学院科研管理系统的开发为例,阐述了应用 SSH框架建立高校科研管理系统的设计与实现方法。

1 系统架构

1.1 MVC设计模式

MVC(Model-View-Controller)是一种基于模型视图控制器的软件设计模式,在MVC模式下,模型是应用程序的核心,代表应用程序的业务逻辑,它包含要完成任务需要的全部数据和行为,并能够把要显示的数据提供给视图。视图是应用程序的外在表现,用户与之交互的界面,用户可以看到。控制器用于处理用户输入,并负责将模型映射到视图中 [4]。传统的WEB开发模式将数据处理功能和网页页面显示等功能耦合于页面代码中,因此,其系统耦合度高,维护性和可扩展性差,MVC成功的解决了此问题,已被越来越多的开发者所推崇,成为了成熟、优秀的设计模式。

1.2 SSH框架

SSH是目前拥有最广泛应用的 J2EE 架构,是 Struts+Spring+Hibernate 3 种技术的有机融合 [5]。

Struts 是基于 MVC 的框架,充当控制器的角色,负责接收用户输入、调用服务层的方法后将结果返回数据表现层。Struts中的核心控制器是ActionServlet类,它负责拦截来自用户的请求,并将其发送给Action类,此时, Action类将调用模型的业务逻辑方法来处理该请求,并最终将处理结果返给JSP页面显示。

Hibernate在程序中充当模型的角色,利用XML 文件,它能够将数据库的字段和实体类字段之间的关系对应起来,使关系数据库中的数据在程序中直接变为程序中的对象。同时,Hibernate 还提供了强大功能的事务管理和缓存机制。科研管理信息系统的业务逻辑层通过 Hibernate 的缓存访问数据可以提高程序的处理速度,减少数据库的开销。

Spring在其中充当了装配工厂的角色,它通过 XML 配置文件将各子层的实例组织起来,并将各子层间的依赖关系集中表现在配置文档中,使系统的结构更加清晰、合理。

1.3 系统总体结构设计

本系统运用 MVC 模式,基于 SSH 框架,将输入、核心处理、输出流程按照模型、视图、控制的方式进行分离,分为客户层、EJB层、数据访问层3个层次客户层处理与用户的交互,运行在客户端的浏览器中。EJB层主要用于实现核心业务逻辑与规则化处理,完成科研数据查询和更新业务、用户权限判定等。EJB层功能主要由其组件完成,Servlet用于实现控制逻辑,负责处理Http请求;实体Bean组件实现业务逻辑,并访问数据库。当客户层将请求传递给EJB层时,控制Servlet首先检验其数据的合法性并进行格式转换,然后调用实体Bean组件进行业务逻辑处理,并访问数据库。 最后通过 JSP页面将处理的结果反馈到客户端。通过以上的各类逻辑处理决定操作是否可以继续,确保科研管理系统的正常运行。

数据访问层采用通用的关系型数据库管理科研信息平台。EJB层中的实体Bean组件通过JDBC连接数据库,并与系统进行信息交互,完成核心存储库的数据访问和逻辑存取。 数据访问层与EJB层间JDBC灵活机制的增加,使整个科研管理系统具有好的可重用性和较强的跨平台操作性。

2 系统功能模块设计

高校科研管理的业务主要涉及学术论文、教材(论著)、专利、软件等教师科研学术成果的认定,包括其成果级别及奖励的认定;校内基金课题的全过程管理,其他国家、省部级纵向课题及横向课题的管理;科研工作量审核等。在参照华北科技学院有关科研项目与成果管理的规章制度,以及学校自身科研项目与成果管理的内容、工作流程基础上,将系统划分为如下业务模块:学术论文、教材、专利、软件等学术成果管理模块,科研项目管理模块,数据查询与统计模块,系统控制模块2.1 学术成果管理模块

该模块主要用于科研教师论文、教材著作、专利、软件等学术成果的审核及奖励标准的核定。教师可以将自己的学术成果信息以及成果获奖或被引用检索的相关佐证材料,按要求填写上报。科研处管理员对教师新录入的学术成果进行审核或删除操作,同时进行奖励标准的核定。

2.2 科研项目管理模块

该模块实现科研教师纵向、横向、校内基金项目的全过程管理与监督,以及科研成果奖励的核定。包括纵向项目管理、校内基金项目管理、横向项目管理以及科研项目成果奖励管理四个子模块。

纵向、横向项目管理子模块:科研项目负责人可对录入项目相关信息,上传横向项目免税申请书、绩效考核报告、中期检查报告、结题报告等项目实施过程中的各种文件及成果。科研管理人员可设置项目绩效考核、中期检查、结题等提醒时间,对横向项目免税申请进行审核。检查、监控项目的实施情况。

校内基金项目管理子模块:实现科研项目立项申请、中期检查、结题、评奖等全过程管理。科研教师可对项目名称、所属单位、参加人员及排名、指出经费的信息的进行录入,可上传项目申请书、立项合同书、中期检查报告、结题申请书、结题材料,可随时查看项目申请状态、中期检查状态等。科研管理员可以对项目申请进行审核、送审、评审意见汇总,可以对中期检查报告、结题材料进行审核。评审专家可以对申请书进行评审,并填写评审意见。

科研成果奖励管理子模块:科研教师可录入和上传科研项目成果奖的相关信息及佐证材料。科研管理人员可对新录入的科研项目成果奖进行审核或删除操作。

2.3 数据查询与统计模块

该模块实现对全校科研教师所有学术成果及奖励的多元化、精细化综合查询与统计,满足教师、教学秘书、科研管理人员等不同用户,以及教育部、河北省教育厅、国家安全生产总局、学校等各级部门数据查询统计需求,打印相应的统计报表。

2.4 系统控制模块

该模块主要用于管理员进行系统配置管理、用户管理以及其他各功能模块中需要系统管理员自定义项的设置。如系统用户的创建及其权限的定义,用户所属单位、学科、期刊名、会议名、期刊级别等的自定义设置。

3 系统关键技术实现

3.1 异步数据访问

为加快系统页面更新速度,使用户有一种实时响应的体验,通过在系统客户端增加Ajax引擎,实现客户端和用户数据异步访问。当用户打开一个Web页面是,就载入Ajax引擎。Ajax引擎初始化后,开始初始化XMLHttpRequest对象,捕捉用户行为,开始于用户的交互。当用户的某些请求出发Ajax是,Ajax在后台将用户的数据异步请求送到控制器ActionServlet处理。3.2 系统安全性

科研管理系统安全性主要是数据安全问题,包括用户登录信息,学术成果及科研项目信息安全等。为避免非法用户任意篡改数据,系统在接收到数据修改、删除请求时,首先要判断发出该请求的用户是否具有相应的权限。由于用户权限数据存放于数据库中,同时用户更新数据的页面通常是连续的,如果每接收一次数据更新请求就查询一次数据库,系统的效率就会很低。因此,为了提高系统效率,系统采用了JSP 的 Session 对象。当用户首次访问服务器上的一个页面时,JSP引擎就会生成一个 Session 对象,该 Session 对象即调用相应的方法,存储该客户访问各个页面期间提交的各种信息,如姓名、密码等。该 Session 对象会被分配一个的DI号(String 类型),根据这个 ID 号 JPS引擎与用户间就建立了一一对应关系。这样,系统在判定某用户权限时,只需访问一次数据库,将一些有用的信息存储在 Session 中,以后系统在执行用户请求时,可直接访问 Session 中存放的信息,由此,避免了反复访问后台数据,系统运行效率得到了提高。

4 结束语

本文结合华北科技学院科研项目及学术成果管理内容、工作流程,采用基于 J2EE的 MVC 模式,利用 Struts、Spring 和 Hibernate 的整合架构设计和实现了一个基于 Web 的高校科研管理信息系统。系统功能简捷、实用,同时考虑到将来科研管理理念的变迁和管理模式的变革,系统预留了一定数量的接口用于系统功能扩充,保证了系统的可扩展性。科研管理信息系统的实施大大提高了科研教师及管理部门的效率,实现了学校科研工作流程化、规范化管理。

参考文献:

[1] 许博.基于.NET三层架构的科研管理系统的开发与应用[J].实验室研究与探索,2013(2):188-190.

[2] 台德艺,王昆仑,郭昌健.高校科研信息管理系统的设计与实现[J].计算机工程与设计,2009(9):2339-2341.

[3] 刘晨霞,张明.高校科研管理信息系统实践初探[J].科技管理研究,2009(8):253-254.

mvc框架篇7

关键词:MVC框架 WebForm数据传递

使用 MVC框架,创建默认项目,第一直观感觉就是地址都是Rewrite过的。对源码和配置文件稍加分析不难看出,MVC使用了httpModules来拦截地址请求,具体用到了System.Web.Routing类库(MVC2中,MVC1怎么用的忘记了。)而这部分类库被包装在.NET Framework3.5 SP1中,MVC2需要SP1支持也就理所当然了。SP1提供的System.Web.Routing类库可以方便地进行地址请求拦截,对编码处理方面也很优秀。UrlRoutingModule类拦截请求,在这之前,Application_Start的时候,会给RouteTable的全局对象一个拦截的设置。而这个设置使用RouteCollection对象进行保存,MVC对这个类进行了扩展――RouteCollectionExtensions。这些可以不考虑,接下来,当用户访问页面时,UrlRoutingModule类拦截请求,在RouteTable中查看是否符合规则,符合的话,就会调用MvcHandler,这个调用在httpHandlers配置节点被注册,条件是地址符合“*.mvc”规则。MvcHandler的ProcessRequest方法就会调用Controller来执行。事实上整个过程都是黑盒子,用户感觉不到。在Controller中某方法执行后,返回结果,再进入具体的aspx页面。

分析了MVC的工作工程,就可以对比其与WebForm的区别了。我们知道,MVC模式的业务被放置到Controller中去执行,而aspx页面只负责显示。那么在MVC中的业务实际执行时间被提前到了HttpMolde中,而WebForm的请求只在httpHandler容器中被执行。也就是说MVC中Controller与View的分离是使用的请求管道隔离的,这样的话无疑在不影响效率(一次请求,而Response.Redirect是二次请求)的情况下达成了代码的逻辑层次的分离。

mvc框架篇8

关键词: MVC;党建系统;设计实现

Design And Implementation Of Party Construction System Based On MVC

An Ying-lin(Xingtai Tobacco Monopoly Bureau, Xingtai 054000, China)

Abstract This article briefly described MVC mode and detailed design and implementation of Xingtai Tobacco party construction system based on MVC mode. As the system used framework to simplify development, its development was more efficient. Using interface-oriented programming reduced the coupling between the layers. It maked party construction standardization andinformationization and met current requirements of Xingtai tobacco.

Key Words:MVC;Party Construction System ; Design And Implementation

引言

为了进一步加强和改进邢台烟草基层党组织工作,建立统一规范的基层党建工作体系,发挥基层党组织的战斗堡垒作用和广大党员的先锋模范作用,结合“二三五”教育实践活动和邢台市烟草行业标准化党建工作,采用信息系统实现党建工作标准化、信息化。

一、MVC模式概述

常见的面向对象设计模式有:Factory模式、Singleton模式、Facade模式和MVC架构模式[1]。MVC(Model-View-Controller)把一个应用程序的输入、处理、输出流程按照Model、View、Controller的方式进行分离,这样一个应用程序被分成模型层、视图层、控制层[2]。

MVC的请求处理流程(如下图1所示):首先客户端通过视图发起请求,然后控制器响应用户的请求,依据请求调用模型来进行处理。模型调用业务逻辑处理,用户的请求同时返回,最后控制器选择对应的视图返回处理的结果,并通过视图呈现给用户。另外,视图可以查询模型的状态,但不能改变,同时视图还可以接收模型的数据更新的状态改变事件。

图1 MVC设计模式

在JAVA应用的开发领域中设计模式很多,基于MVC设计模式的Java EE应用开发在实际企业级开发中逐步得到非常广泛的应用。Struts作为开源项目在不断的发展,已经成为MVC模式的首选框架。

二、党建系统功能

1.党建系统分为公告、学习交流、党建动态、基层党建、行业新闻、党建知识、学习资料、心得体会、专题学习、图片新闻、标准化党建、党风廉政等栏目。

2.党建系统信息以支部为单位进行维护,各支部党员要在党建系统内“基层党建”、“学习交流”、“心得体会”栏目上刊登信息,支部管理员在“标准化党建”模块“”落实、发展党员情况、板报更新、党政学习安排等信息。每个支部需设立支部管理人员具体负责本支部内党建信息、宣传报道等内容的审核和维护。其它的信息专栏由政工科人员刊登,政工科长审批。所刊登信息需由支部书记审批,最后由机关党委审批方可。

3.实现对各支部党建工作量化考核。在量化考核设计过程中,应注意定性与定量指标相结合,日常监督与考核相结合,党组织和党员考评相结合。以评促建,通过党建工作量化考核,切实提高党支部整体工作水平,促进党的基层组织建设走向规范化、制度化。

三、党建系统设计

1.系统总体架构

本系统遵守Java EE应用的分层模型,从整体上可分为:视图层、控制器层、业务逻辑层、DAO层、数据持久层(如下图2所示)。其中使用Struts作为系统的整体基础架构,负责实现MVC分离功能; Hibernate负责持久化操作,屏蔽对数据库操作细节;业务逻辑层和DAO层采用Spring框架,Spring提供Spring容器为用户设置对象间的依赖关系。

第一层是视图层,用于与用户交互,完成客户端的数据校验,接受用户请求、显示处理后的结果等,相当于MVC模式中的视图。

第二层是控制器层,用于处理用户请求的转发、调用业务逻辑层组件,相当于MVC模式中的控制器,主要采用Struts框架提供一个核心控制器ActionServlet拦截用户所有的请求。

图2 系统总体架构

第三层是业务逻辑层:该层接受来自控制器的请求,并基于请求处理业务逻辑。向下正面封装和调用DAO组件。这一层采用Spring作为核心,也是整个系统框架的核心。

第四层是DAO层:该层封装了运用Hibernate框架,对POJO进行持久化的操作。主要向上提供数据访问、持久化等功能,向下与数据库系统交互。

第四层是持久层:采用Hibernate框架提供的对象关系映射(Object Rational Mapping,缩写ORM)功能实现在JDBC层之上提供更好的封装,完成持久化类和数据库表的之间的映射,从而以面向对象的方式操作数据库。

2.系统各模块设计

依据功能将系统分为多个子模块,分别为:系统管理子模块、登陆子模块、信息子模块和考核子模块。系统管理子模块、登陆子模块、信息子模块、考核子模块如图3所示.

图3 系统主要子模块

四、党建系统实现

1.系统总体实现

三个框架的整合以Spring为核心进行整合,Spring的应用以IOC(Inversion of Control)容器为基础,必须首先引入Spring容器。本文采用直接web.xml中引入Spring容器,比Struts先引入。然后引入MVC的核心Struts框架加载。使用Struts作为MVC分离框架,客户端的HTTP请求经过ActionServlet转向对应的Action。为了实现转向的Action是Spring 容器中Action,在struts-config.xml加入Spring提供的类DelegatingRequestProcessor,在struts-config.xml控制器改为如下代码:

最后,引入Hibernate。Hibernate由Spring容器加载hibernate.cfg.xml配置信息,通过classpath路径来加载该配置文件。这样将Hibernate连接属性集中管理,有利于模块化管理,使Spring配置简洁,方便后期的维护。

2. 系统各层组件交互的过程

系统各层组件交互的具体过程如下:用户请求通过JSP页面发给Struts的控制器ActionServlet,之后ActionServlet经过Spring框架提供的DelegatingRequestProcessor类转发给Spring的Action组件,然后Action调用Spring容器中的Bean处理业务逻辑,通过调用DAO组件完成对持久层的访问并返回处理结果。业务逻辑组件将处理结果返回Action组件,Action返回ActionForward给ActionServlet,最后由ActionServlet将显示结果给JSP页面的用户。本系统详细的各层之间的交互如下图4所示。

图4系统各组件交互的顺序图

3.各层类之间的关系

各层类之间的关系:控制器层类依赖业务逻辑层类,业务逻辑层依赖各个DAO实现类,控制器与业务逻辑、业务逻辑与DAO之间的依赖层次是接口,都面向接口编程,他们之间的依赖关系如图5所示。

图5 各层之间依赖关系

五、结束语

总之,基于MVC的党建系统利用Struts框架实现了MVC分离,采用多层结构符合软件工程化管理。同时面向接口的编程,降低了各层之间的耦合。采用框架技术简化了软件开发,提高了开发效率。该系统符合邢台烟草党建工作需要,实现党建工作标准化、信息化,促进基层党建工作的水平的提高。

参考文献

石志国. JSP网络开发详解. 电子工业出版社, 2007.8

李刚. 轻量级J2EE企业应用实战:Struts Spring Hibernate整合开发. 电子工业出版社, 2007.4

mvc框架篇9

关键词:Struts;模型;视图;控制器;MVC

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2009)15-3951-02

The Design and Implement of Web Application System Based on Struts Framework

ZHANG Wei1,2, GAO Yuan1

(1.Anyang Institute of Technology, Anyang 455000, China; 2.Master in East China Normal University, Shanghai 200062, China)

Abstract: Struts is the Web-application development framework based on MVC model, the paper explain clearlythe architecture and key component parts of Struts, and take BBS systems implementation as an example to discuss how to design applications based on Struts framework, also analyzed the advantages of using the struts framework in web application development.

Key words: Struts; model; view; controller; MVC

1 引言

随着Internet技术的发展,基于MVC(Model-View-Controller)模型的Struts框架越来越受到web系统开发者的欢迎。Struts是建立在当前动态网站设计领域中JSP、Servlet、XML等相关开发技术基础之上的一种主流开发架构,具有组件模块化、灵活性和重用性的优点,同时极大地简化了Web应用程序的开发。它合理地将用户表示逻辑、业务逻辑和控制逻辑分离,使得开发过程变得简洁清晰,并提高了软件的可维护性和可重用性。

2 Struts框架

2.1 Struts体系结构

Struts是Apache 基金会Jakarta 项目组的一个Open Source 项目,它采用MVC模式,能够很好地帮助java 开发者利用J2EE开发Web应用。和其他的java架构一样,Struts 也是面向对象设计,将MVC模式"分离显示逻辑和业务逻辑"的能力发挥得淋漓尽致。Structs 框架的核心是一个弹性的控制层,基于如 Java Servlets,JavaBeans,ResourceBundles与XML等标准技术,以及 Jakarta Commons 的一些类库。Struts有一组相互协作的类(组件)、Serlvet以及jsp tag lib组成。基于struts构架的web应用程序基本上符合JSP Model2的设计标准,可以说是一个传统 MVC设计模式的一种变化类型。

Struts体系结构实现了MVC设计模式的概念,它将Model、View和Controller分别映射到Web应用中的组件。Model由代表系统状态和商业逻辑Action来构建,View是由JSP和struts提供的自定义标签来实现,Controller负责控制流程,由ActionServlet和ActionMapping来完成。

2.2 主要组件介绍

下面我们就从分别从视图、控制、模型和Struts的配置文件struts-config.xml来介绍struts的体系结构。图1所示。

1) 视图:主要由JSP建立,Struts自身包含了一组可扩展的自定义标签库(Tag1 ib),可以简化创建用户界面的过程。

2) 模型:模型主要是表示一个系统的状态和业务逻辑。在Struts中,系统的状态主要由ActiomForm Bean体现,对于业务逻辑通常由JavaBean或EJB组件来实现。

3) 控制器:控制器主要由ActionServlet类和Action类来实现,ActionServlet类是Struts框架中的核心组件,主要负责接收HTTP请求信息。根据配置文件struts-config.xml的配置信息,把请求转发合适的Action对象。Action类负责调用模型的方法,更新模型的状态,并帮助控制应用程序的流程。

4) 配置文件struts-config.xml:当ActionServlet接收HTTP请求信息时,如何决定把用户请求转发给哪个Action对象呢?这就需要一些描述用户请求路径和Action映射关系的配置信息。在Struts中.这些配置映射信息都存储在特定的XML 文件Struts―config.xml中,在该配置文件中,每一个Action的映射信息都通过一个(action)元素来配置。这些配置信息在系统启动时会被读入内存,供Struts在运行期间使用,在内存中,每一个(action)元素都对应一个ActionMapping类的实例。

3 基于Struts框架BBS系统实现

BBS论坛是电子商务网站中一种常见的功能,它为上网用户提供了一个自由的讨论区。用户可以根据需要在论坛上发表文章,提出问题并表达自己的观点,俗称发帖子或灌水。与此同时,上网用户也可以在论坛中浏览其他人发表文章,并能对该文章进行回复。故一个典型的BBS系统一般应提供如下功能:①会员管理,②讨论区文章查阅,③发表新文章,④后台管理。

运用Struts框架实现BBS,首先把应用分解为模型、视图和控制器来实现,这样就将业务逻辑和表现层分开,提高软件可扩展性和良好的逻辑性,改变了传统Web开发设计模式。然后运用struts-config.xml配置文件将三者组装起来,协调它们完成相应的功能。下面将以BBS中用户登陆为例按照MVC架构来详述实现过程。

3.1 创建视图组件

在视图中主要包括两个组件:用户登录页面bbsLogin.jsp,是struts的输入显示页面;登录失败页面wrong.jsp;是用户登录失败后显示的页面。它们都保存在Web应用目录bbs下。

3.2 创建模型组件

模型组件文件UserInfo.java是处理业务逻辑的JavaBean, 封装了与论坛用户相关的所有信息,同时也定义了所有与论坛用户信息处理相关的方法。例如检查用户身份的方法以及查找、删除、编辑、存储用户信息等。通过Action类派生的子类LoginAction访问UserInfo.java实现对业务逻辑的处理。如果模型组建处理的业务比较复杂可以使用EJB或其他J2EE组件来实现。注意业务逻辑层对应的类所在的包应该部署在bbs/WEB-INF/classes下。

3.3 创建控制器组件

控制器组件作为整个Struts架构的控制中心,包括了ActionServlet、Action Bean、ActionForm Bean、以及相关配置文件web.xml、struts-config.xml及资源包。ActionServlet类是框架自带的,是整个Struts框架的控制枢纽,通常不需要扩展。

3.3.1 声明及定义LoginActionForm.java

该Javabean用于收取用户登录页面提交的表单数据。注意ActionFormBean中属性名称一定要对应用户表示层JSP页面中的表单元素名称及超链接参数名。

3.3.2 声明及定义LoginAction.java

LoginAction负责处理客户端提交请求,其主要功能是依据接收到的不同请求,通过LoginActionForm中得到对应的提交表单数据,调用业务逻辑层中对应的UserInfo.java进行处理。最终将结果传给用户表示层JSP页面,显示在用户面前。

3.3.3 配置文件定义

web.xml主要实现了对ActionServlet进行配置,同时还必须声明Web表示层中所使用的struts标签库。针对本应用Struts-config.xml配置如下:

<form-beans>

<form-bean name="loginForm" type="bbs.LoginForm"/>

</form-beans>

<global-forwards>

<forward name="LoginSuccessed" path="/bbsMain.jsp"/>

<forward name="LoginFailed" path="/wrong.jsp"/>

</global-forwards>

<action-mappings>

<action path="/login" type="bbs.LoginAction" name="loginForm" scope="session" input="/bbsLogin.jsp" />

</action-mappings>

4 结束语

在Web应用开发中,Struts技术只实现了Web层的应用框架,但它是一个具有良好扩展性和不断完善的框架,结合J2EE核心设计模式,可构建出相当稳定的基于MVC应用框架,利用这样应用框架不但能缩短开发时间,还能够实现框架和代码的重用,是未来web应用开发的主要技术方向之一。

参考文献:

[1] 周宝刚,刘杰,李成.基于Struts的WEB页面构建系统[J].电脑知识与技术,2008(4):695-698.

[2] 刘杰.Struts――基于MVC的Web开发框架[J].电脑知识与技术,2007(18):1677-1678.

mvc框架篇10

关键词 MVC模式;框架;AJAX

中图分类号:TP393.02 文献标识码:B 文章编号:1671-489X(2013)06-0050-03

Web应用是互联网应用中最为活跃和使用最广泛的服务,Web应用的开发模式也经历了PERL开发到现在的动态网页技术,包括PHP、JSP等。其中PHP凭借其快速开发的支持和较高的执行效率,已经成为Web应用的主流开发技术。

在传统的开发模式中,HTML和PHP的脚本语言是混合编写的,这对于小型项目来说不会出现任何问题,因为界面设计者(UI)、功能实现都是由一个或者极少的几个开发人员来完成,只要功能模块设计得独立,各个开发人员是可以同时进行开发的。但是随着目前开发语言的发展,Web应用已经可以处理越来越复杂的业务,加入的功能越来越丰富,Web应用的可维护性和扩展性越来越难以实现。为解决这个问题,引入MVC的开发模式以及相关的框架结构支持。

1 MVC的设计模式

MVC是软件开发过程中的常用设计模式。这种开发思路不仅仅适合Web应用开发,在桌面软件的开发中也得到广泛的应用,比如微软的文档视图模型。MVC在逻辑上将程序划分为三部分:模型(Model)、视图(View)、控制器(Control)。三部分处理不同的功能,模型完成数据的存取和业务逻辑,视图负责用户交互界面,控制器完成模型和视图之间的连接,即决定数据的来源和呈现方式。

这种开发思路保证了应用的可扩展性和可维护性。当业务逻辑有变化时,只需要修改模型;对应的,当用户交互界面有修改时,也只需要修改视图。同时,也为项目的合作开发提供了便利,使得前端开发人员和后端开发人员可以同时独立开发。

以Web应用中常见的信息列表为例,在PHP和HTML混合编写的模式下,其实现程序大致如下:

在以上的程序中,将信息的标题字段title输出到HTML的div和li标签中。此处的数据和数据的呈现是混合编写的。当数据的呈现方式需要更改,比如输出到表格table中,将需要改写该程序。在中大型项目中,这种更改的工作量是相当大的,也不利于多个开发人员的协调。

在MVC开发模式中,将数据的呈现、存取处理分离。数据的呈现成为单独的模板文件,通过控制器完成模板赋值和调用。

2 第三方框架对MVC的支持

在Web应用的MVC开发中,不得不提到相当成熟的smarty模板引擎。它通过编译前的预处理,将HTML文档中的指定标签替换成PHP中的数据,实现模型和视图的独立;数据库连接在Web应用中开销是相当大的,smarty通过缓存机制使得数据不必每次都到数据库中读取,同时缓存技术也支持静态网页的生成,避免了每次客户请求都要重新编译执行PHP脚本,提高了响应速度。

在smarty引擎的基础上,出现较多的开发框架,如国外的zend和国内的ThinkPHP,它们除了可以提供完整的MVC开发模式支持外,往往还提供了大量的功能函数。在模型上,对数据的存取提供如过程调用、事物并发操作等一系列的支持,为开发提供了便利。在安全性方面,要保证应用的安全,往往需要大量严格的测试,需要设计大量的测试用例,这对于中小型项目来说是很难做的。框架对应用的安全性提供了常见的支持,如SQL注入攻击,弥补了这方面的不足。

3 ThinkPHP+jQuery的AJAX开发流程

在Web开发中通过AJAX可以提高应用的响应速度。和桌面应用程序相比较,Web常见的弊端是不能提供很好的用户体验。由于Web应用是基于HTTP协议,该协议属于无状态协议,每次页面的请求都将刷新所有数据,导致大量冗余数据的重复传输,降低Web应用程序的响应速度。

AJAX在Web开发的客户端中得到广泛的应用。它可以独立和WWW服务器通信,请求数据,这样减少数据的传输量,提供更快的响应速度,同时JavaScript支持对HTML DOM文档的访问,不必通过刷新整个页面就可以实现数据的更新,从而提高客户端的用户体验。

在具体的开发中,常用的两个第三方框架是jQuery和 ThinkPHP。

jQuery是继prototype之后的一个优秀的Javascrīpt框架,属于轻量级的js库,提供了便捷的DOM选择器、事件触发的绑定机制,结合UI提供了丰富的效果函数。同时jQuery对AJAX函数进行了封装,支持AJAX请求和JSON数据解析,$.post()函数是最常用的AJAX请求方式。

ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,封装了CURD操作,支持单一入口模式,在模版引擎、缓存机制、认证机制和扩展性方面均有较好的表现。在ThinkPHP中,通过assign()和display()实现模板文件的赋值和调用。

在AJAX的开发中,客户端通过jQuery的post()函数实现AJAX请求,而服务器端使用ThinkPHP框架实现对模板的赋值和调用,客户端接收到数据后通过jQuery的选择器实现数据的更新。其过程如图1所示。

在AJAX通信中,返回的数据分为两种:JSON(JavaScript

object notation)编码后的数据;数据联合视图编译后形成的HTML文档。

JSON编码常用于返回较少的数据,如用户的登陆状态、用户名等。由于JSON在数据编码和反序列化方面都有较高的效率,并且JSON的数据编码简洁,使得JSON的数据传输效率明显优于其他数据传输格式(FSV和XML)。同时,在客户端,JavaScript很容易实现JSON的反序列化,其反序列化的过程如下所示:

JSON常用返回服务器端对数据的处理结果,而HTML文档则更多地用于返回节点内的内容和JavaScript程序,通过它实现完整的功能模块。

在Web设计中,常将页面划分为不同的区域,如导航菜单区域、内容显示区域,当用户点击了导航区域的不同连接时,在内容区域显示不同的信息。如图2所示,导航区域在左边,而内容显示区域设置在右边。

当点击了左边的连接后,发送AJAX请求,并将返回的数据放置在内容显示区域,此时返回的数据为text,即文本文件。其程序结构如下:

服务器则控制调用对应的模板文件,该文件包含HTML body标签中的内容、CSS样式表、JavaScript程序,用于完成用户数据提交前的客户端检验等。其程序结构如下:

模板文件:

4 结束语

MVC的开发模式为Web应用开发提供了较好的可维护性和可扩展性,第三方框架ThinkPHP提供了MVC的支持,结合jQuery的使用,提高了程序的响应速度。随着Web应用的日益广泛,以上技术将越来越广泛地应用在中小型项目的开发中。

参考文献

[1]张洪波,杨新泉.Prototype提供的AJAX功能在ThinkPHP框架中的应用研究[J].硅谷,2011(7):86-85.

[2]黄建.基于ThinkPHP框架的ActiveRecord技术应用与研究[J].现代计算机:专业版,2010(4):195-196.

[3]徐诚斌,王金平.MVC在ThinkPHP框架中的应用研究[J].信息与电脑,2011(3):160-162.

[4]俞国红.利用jQuery框架技术快速开发网站前端页面[J].襄樊职业技术学院学报,2011(5):95-97.