2年前开发的项目有用struts mvc,最近都没怎么用,现拿出来再温习下。本文主要介绍struts mvc及mvc工作原理。

1.Struts MVC中Model 1 和Model 2简介

咱们在开发Web运用时常常说到的一个概念是Model 1/Model 2,那么究竟它是什么意思呢?其实它是对选用JSP技能构成Web运用的不同模型的描绘。下面临这个概念做一个简略的介绍。

Model 1

在运用JAVA技能树立Web运用的实例中,因为JSP技能的开展,很快这种便于把握和可完结快速开发的技能就成了创立Web运用的首要技能。JSP页面中能够十分容易地结合事务逻辑(jsp:useBean)、服务端处理进程(jsp:scriplet)和HTML(),在JSP页面中一起完结显现,事务逻辑和流程操控,然后能够快速地完结运用开发。现在许多的Web运用便是由一组JSP页面构成的。这种以JSP为中心的开发模型咱们能够称之为Model 1。

当然这种开发形式在进行快速和小规模的运用开发时,是有十分大的优势,可是从工程化的视点考虑,它也有一些缺乏之处:

运用的完结一般是依据进程的,一组JSP页面完结一个事务流程,假如要进行改动,有必要在多个当地进行修正。这样十分不利于运用扩展和更新。

因为运用不是树立在模块上的, 事务逻辑和表明逻辑混合在JSP页面中没有进行笼统和别离。所以十分不利于运用体系事务的重用和改动。

考虑到这些问题在开发大型的Web运用时有必要选用不同的规划形式――这便是Model2

Model 2

Model 2 表明的是依据MVC形式的结构。MVC是Model-View-Controller的简写。"Model" 代表的是运用的事务逻辑(经过JavaBean,EJB组件完结), "View" 是运用的表明面(由JSP页面发生),"Controller" 是供给运用的处理进程操控(一般是一个Servlet),经过这种规划模型把运用逻辑,处理进程和显现逻辑分红不同的组件完结。这些组件能够进行交互和重用。然后弥补了Model 1的缺乏。

Model 2具有组件化的长处然后更易于完结对大规模体系的开发和办理,可是开发Struts MVC体系比简略的JSP开发要杂乱许多,它需求更多的时刻学习和把握。一起新东西的引入会带来新的问题(这让我想起来关于"主动核算"的一篇文章,中心说到为了下降体系的杂乱度,却导致更高的杂乱度)。

有必要依据Struts MVC组件的方法从头考虑和规划运用结构。本来经过树立一个简略的JSP页面就能完结的运用现在变成了多个进程的规划和完结进程。

一切的页面和组件有必要在Struts MVC结构中完结,所以有必要进行附加地开发作业。

Struts MVC自身便是一个十分杂乱的体系,所以选用Struts MVC完结Web运用时,***选一个现成的MVC结构,在此之下进行开发,然后获得事半功倍的作用。现在有许多可供运用的MVC结构,因为Struts有完好的文档而且相对来讲比较简略,所以用它开发MVC体系仍是比较方便地。

2.Struts的结构和处理流程简介

Struts是Apache安排的一个项目,像其他的Apache安排的项目相同,它也是开放源码项目。Struts是一个比较好的MVC结构供给了对开发MVC体系的底层支撑,它选用的首要技能是Servlet,JSP和custom tag library。获取它的运用版别和详细信息能够查阅http://jakarta.apache.org网站。

Struts结构的根本构成由下图所示:

浅谈Struts MVC作业原理及实例(分析一下struts是如何实现MVC的)  struts mvc MVC工作原理 第1张

图 1 struts uml图

作为一个MVC的结构,Struts对Model、View和Controller都供给了对应的完结组件,对应上面的UML图,别离进行介绍,而且看看它们是怎么结合在一起的。

Controller:操控器的作用是从客户端承受恳求,而且挑选履行相应的事务逻辑,然后把呼应成果送回到客户端。在Struts中Controller功用由图中ActionServlet和ActionMapping目标构成:中心是一个Servlet类型的目标ActionServlet,它用来承受客户端的恳求。ActionServlet包含一组依据装备的ActionMapping目标,每个ActionMapping目标完结了一个恳求到一个详细的Model部分中Action处理器目标之间的映射。

Model: Struts MVC体系中的Model部分从概念上能够分为两类――体系的内部状况,和改动体系状况的动作。Struts为Model部分供给了Action和ActionForm目标:一切的Action处理器目标都是开发者从Struts的Action类派生的子类。Action处理器目标封装了详细的处理逻辑,调用事务逻辑模块,而且把呼应提交到适宜的View组件以发生呼应。Struts供给的ActionForm组件目标,它能够经过界说特色描绘客户端表单数据。开发者能够从它派生子类目标,运用它和Struts供给的自界说符号库结合能够完结对客户端的表单数据的杰出封装和支撑,Action处理器目标能够直接对它进行读写,而不再需求和request、response目标进行数据交互。经过ActionForm组件目标完结了对View和Model之间交互的支撑。Struts一般主张运用一组JavaBean表明体系的内部状况,依据体系的杂乱度也能够运用像Entity EJB 和 Session EJB等组件来完结体系状况。Struts主张在完结时把"做什么"(Action)和"怎么做"(事务逻辑)别离。这样能够完结事务逻辑的重用。

View:Struts运用中的View部分是经过JSP技能完结的。Struts供给了自界说的符号库能够运用,经过这些自界说符号能够十分好地和体系的Model部分交互,经过运用这些自界说符号创立的JSP表单,能够完结和Model部分中的ActionForm的映射,完结对用户数据的封装,一起这些自界说符号还供给了像模板定制等多种显现功用。

Struts MVC结构的处理流程清楚的表现了MVC体系的特色,简略的Struts组件结构如图2所示。Struts Controller ActionServlet处理客户恳求,运用装备的ActionMapping目标把恳求映射到Action处理器目标进行处理。Action处理目标拜访ActionForm中的数据,处理和呼应客户恳求,它还调用后台的Bean组件,这些组件封装了详细的事务逻辑。Action处理器目标依据处理成果告诉Controller,Controller进行下一步的处理。

浅谈Struts MVC作业原理及实例(分析一下struts是如何实现MVC的)  struts mvc MVC工作原理 第2张

图2 Struts结构的组件结构图

3.运用Struts结构开发Struts MVC体系要做的作业

因为Struts现已为咱们供给了一个十分好的MVC结构,咱们运用Struts开发MVC体系时能够大大加速开发的速度。在开发时能够选用的一个开发流程如下(引自材料3):

搜集和界说运用需求。

依据数据收集和显现的准则界说和开发"屏幕显现"需求 。

为每一个"屏幕显现"界说拜访途径。

界说ActionMappings树立到运用事务逻辑之间的联络。

开发满意"屏幕显现"需求的一切支撑目标。

依据每一个"屏幕显现"需求供给的数据特色来创立对应的ActionForm目标

开发被ActionMapping调用的Action目标。

开发运用事务逻辑目标 (Bean,EJB,等等)。

对应ActionMapping规划的流程创立JSP页面。

树立适宜的装备文件struts-config.xml , web.xml。

开发/测验/布置

详细在运用Struts结构时,对应各个部分的开发作业首要包含:

Model部分:选用JavaBean和EJB组件,规划和完结体系的事务逻辑。依据不同的恳求从Action派生详细Action处理目标。完结"做什么"的使命来调用由Bean构成的事务组件。创立由ActionForm 的派生类完结对客户端表单数据的封装。

Controller部分:Struts为咱们供给了中心操控部分的完结。咱们只需求装备ActionMapping目标

View部分:为了运用Model中的ActionForm 目标,咱们有必要用Struts供给的自界说符号创立HTML 表单。运用Struts供给的自界说符号库编写用户界面把运用逻辑和显现逻辑别离。Struts结构经过这些自界说符号树立了View和Model之间的联络。Struts的自界说符号还供给了许多定制页面的功用。

一起需求修改两个装备文件:web.xml和struts-config.xml。经过它们装备Struts体系中的各个模块之间的交互。下面临这两个装备文件做一些介绍:

web.xml文件的装备

web运用中的web.xml是***个要装备的当地,它描绘了体系的Controller目标。在web.xml中添加如下符号

<servlet> <servlet-name>action</servlet-name><servlet-class>
org.apache.struts.action.ActionServlet</servlet-class> <init-param>
 <param-name>application</param-name> </servlet>

阐明:这个servlet目标便是Struts供给的Controller,还能够为它指定初始化参数,比如对体系运用特色的支撑。

< SERVLET-MAPPING> < SERVLET-NAME>a ction< /SERVLET-NAME>
< URL-PATTERN>*.do< /URL-PATTERN>< /SERVELT-MAPPING>

阐明:完结客户恳求的url信息和服务器端详细处理的映射联系。

<taglib> <taglib-url>/WEB-INF/struts-bean.tld</taglib-url>
 <taglib-location>/WEB-INF/struts-bean.tld</taglib-location></taglib>

阐明:添加对Struts供给的运用所运用的自界说符号库的引证。

struts-config.xml文件的装备

struts-config.xml是用于树立Controller和Model之间的联系的。它描绘了Controller所运用的把恳求对应到详细处理的规律,一起它还描绘了客户供给的数据与ActionForm组件的对应映射联系。

在struts-config.xml中添加如下符号

<form-beans> <form-bean name="loginForm" type="loginForm" /></form-beans>

阐明:符号描绘一个详细的ActionForm子类目标,经过它和JSP页面中的自定符号的结合运用能够完结ActionForm和View之间的数据映射。


<action-mappings><actionpath="/login"type="loginAction"
name="loginForm"input="/login.jsp" /></action-mappings>


阐明:符号描绘了恳求和处理的1对1映射联系。input和path特色仅有的符号了客户端的一个恳求,name特色描绘封装客户端的数据的ActionForm子类目标。Type特色描绘处理这个恳求的Action子类目标。

经过对两个装备文件的装备,把Struts MVC结构中MVC的各个部分联络起来,完结一个真实的Struts MVC体系。

4.可供参阅的比如

编写一个好的Struts MVC比如演示是比较占篇幅的,能够从http://jakarta.apache.org/ 下载Struts***的宣布包,在这个包中有详细的用户协助和API文档,还有十分好的演示程序可供参阅。详细的装置进程能够参阅顺便的文档。参阅这些比如能够很快地了解怎么运用struts结构开发MVC体系。

【修改引荐】

  1. 在Eclipse中开发struts运用程序
  2. 手把手教你在Eclipse中装备开发Struts
  3. Eclipse下开发struts完好处理乱码问题
  4. Struts相关布景介绍
  5. 运用Easy Struts for Eclipse开发Struts
转载请说明出处
知优网 » 浅谈Struts MVC作业原理及实例(分析一下struts是如何实现MVC的)

发表评论

您需要后才能发表评论