麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

基于MVC模式的Struts框架研究與應(yīng)用

2019-11-17 06:18:42
字體:
供稿:網(wǎng)友

摘要:Struts框架具有組件的模塊化,靈活性和重用性的優(yōu)點,同時簡化了基于MVC的web應(yīng)用程序的開發(fā)。本文討論了Struts框架實現(xiàn)MVC模式的原理與方法,給出了一個具體的應(yīng)用實例。

分布式企業(yè)應(yīng)用軟件結(jié)構(gòu)復(fù)雜、涉及多種技術(shù),對設(shè)計開發(fā)人員提出了很高的要求。在此情況下,運用設(shè)計模式――可復(fù)用的設(shè)計方案進行軟件的設(shè)計開發(fā)十分必要。MVC模式已被證實是一種成功的軟件設(shè)計模式,本文主要討論了一種實現(xiàn)MVC模式的應(yīng)用框架――Struts,并通過一個實例展示了Struts框架實現(xiàn)MVC模式的方法。

MVC設(shè)計模式

MVC(Modle-View-Controller,模型-視圖-控制器)模式是Xerox PARC在20世紀80年代為編程語言Smalltalk-80所設(shè)計的一種軟件設(shè)計模式,至今已被廣泛使用,并被推薦為Sun公司J2EE平臺的設(shè)計模式,其為開發(fā)交互式應(yīng)用系統(tǒng)提供了一個優(yōu)秀的設(shè)計模式,受到越來越多開發(fā)者的歡迎。

MVC模式主要由3個部分組成:模型、視圖和控制器,其結(jié)構(gòu)如圖1所示。

基于MVC模式的Struts框架研究與應(yīng)用(圖一)

圖1 MVC模式框架

模型表示業(yè)務(wù)邏輯和業(yè)務(wù)規(guī)則等,在MVC的三個部件中擁有最多的處理任務(wù)。它可以用javaBean和EJB等組件技術(shù)來處理數(shù)據(jù)庫的訪問。模型能為多個視圖提供數(shù)據(jù)。由于應(yīng)用于模型的代碼只需寫一次就可以被多個視圖重用,所以減少了代碼的重復(fù)性。

視圖是屏幕上的顯示。模型進行操作之后,其結(jié)果就是通過視圖來顯示的。在視圖中其實沒有真正的處理發(fā)生,只是作為一種輸出數(shù)據(jù)并答應(yīng)用戶操作的方式。

控制器用于治理用戶與視圖發(fā)生的交互。一旦用戶想對模型進行處理時,它不能直接去執(zhí)行模型,而是通過控制器來間接地實現(xiàn)。控制器能從視圖中取值,然后將相應(yīng)的值傳給模型進行處理。控制器接受用戶的輸入并調(diào)用模型和視圖去完成用戶的需求。

由上述可知,MVC模式的處理過程是:首先由控制器接收用戶的請求,并決定應(yīng)該調(diào)用哪個模型來進行處理,然后模型用業(yè)務(wù)邏輯來處理用戶的請求并返回數(shù)據(jù),最后控制器用相應(yīng)的視圖返回數(shù)據(jù),并通過表達層呈現(xiàn)給用戶。

MVC本身就是一個非常復(fù)雜的系統(tǒng),所以采用MVC實現(xiàn)Web應(yīng)用時,最好選一個現(xiàn)成的MVC框架,在此之下進行開發(fā),從而取得事半功倍的效果。現(xiàn)在有很多可供使用的MVC框架,由于Struts有完整的文檔并且相對來講比較簡單,所以用它開發(fā)MVC系統(tǒng)還是比較方便地。

Struts框架

Struts是Apache組織的一個開放源碼項目。Struts是一個比較好的MVC框架,提供了對開發(fā)MVC系統(tǒng)的底層支持,它采用的主要技術(shù)是Servlet,jsp和Custom tag library。其基本構(gòu)成如圖2所示。

基于MVC模式的Struts框架研究與應(yīng)用(圖二)

圖2 Struts框架圖

由圖2可以看出,在Struts框架中Controller功能由ActionServlet和ActionMapping對象構(gòu)成,核心是一個Servlet類型的對象ActionServlet,它用來接受客戶端的請求。ActionServlet包括一組基于配置的ActionMapping對象,每個ActionMapping對象實現(xiàn)了一個請求到一個具體的Model部分中Action處理器對象之間的映射。

Model部分由Action和ActionForm對象構(gòu)成。所有的Action處理器對象都是開發(fā)者從Struts的Action類派生的子類。Action處理器對象封裝了具體的處理邏輯,調(diào)用業(yè)務(wù)邏輯模塊,并且把響應(yīng)提交到合適的View組件以產(chǎn)生響應(yīng)。Struts提供的ActionForm組件對象可以通過定義屬性描述客戶端表單數(shù)據(jù)。開發(fā)者可以從它派生子類對象,利用它和Struts提供的自定義標記庫結(jié)合可以實現(xiàn)對客戶端的表單數(shù)據(jù)的良好封裝和支持,Action處理器對象可以直接對它進行讀寫,而不再需要和request、response對象進行數(shù)據(jù)交互。通過ActionForm組件對象實現(xiàn)了對View和Model之間交互的支持。

View部分是通過JSP技術(shù)實現(xiàn)的。Struts提供了自定義的標記庫,通過這些自定義標記可以非常好地和系統(tǒng)的Model部分交互,通過使用這些自定義標記創(chuàng)建的JSP表單,可以實現(xiàn)和Model部分中的ActionForm的映射,完成對用戶數(shù)據(jù)的封裝。

基于MVC模式的Struts框架的應(yīng)用

下面通過一個具體實例說明如何應(yīng)用Struts框架構(gòu)建應(yīng)用程序。該實例是一個全面預(yù)算治理系統(tǒng)中的預(yù)算資料模塊,包括資料錄入、資料查詢、資料修改和資料刪除四個功能,用于完成預(yù)算資料的錄入、查詢、修改及刪除。

具體在使用Struts框架時,對應(yīng)各個部分的開發(fā)工作主要包括:

1、構(gòu)建視圖

在Struts框架中,視圖的實現(xiàn)主要采用JSP技術(shù),但與傳統(tǒng)的JSP相比有兩個顯著的不同。

首先,在Struts下使用JSP開發(fā)視圖,在頁面中沒有包含任何的腳本程序,只是單純的完成數(shù)據(jù)傳送以及接收和顯示返回的數(shù)據(jù)。對數(shù)據(jù)的處理以及頁面的跳轉(zhuǎn)都在業(yè)務(wù)層中來實現(xiàn)。這樣做實現(xiàn)了業(yè)務(wù)邏輯和表示邏輯的完全分離,提高了一個應(yīng)用程序的性能和可擴展性,并有利于程序的復(fù)用。

第二,Struts框架提供了一組可擴展的自定義標記庫,主要包括: Bean標記、 Logic標記、Html標記和模板標記。通過使用標記,可以簡化創(chuàng)建用戶界面的過程,并且更好地實現(xiàn)數(shù)據(jù)的封裝。通過使用這些自定義標記創(chuàng)建的JSP表單,可以實現(xiàn)和業(yè)務(wù)層中的ActionForm的映射,非常好地和系統(tǒng)的業(yè)務(wù)邏輯部分交互。

下面給出資料錄入頁面的部分實現(xiàn)代碼:

<%@ page contentType="text/html; charset=GBK" %>
<%@ taglib uri="/WEB-INF/struts-html.tld" <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
<%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
<html>
<head>
<title>

前期預(yù)備資料錄入

</title>
<link rel="stylesheet" type="text/
CSS" href="../images/mobile.css">
</head>
<body bgcolor="#ffffff">
<html:form action="/information/budgetinfoadd" enctype="mult<table width="95%" border="1" cellspacing="1" cellpadding="2" bordercolor="#CBE7F8" align="center">
<tr bgcolor="#F2F9FD">
<td width="20%">類型:</td>
<td>
<html:select property="infoType" styleClass="input2">
<html:options collection="TypeList" property="id" labelProperty="typeName"/>
</html:select>
</td>
</tr>
……
</table>
</html:form>
</body>
</html>

程序中首先引入了HTML、Bean和Logic標記庫,然后用action指出調(diào)用的Action組件的絕對路徑,標記<html:form>和</html:form>封裝了表單數(shù)據(jù),在業(yè)務(wù)層中用相應(yīng)的ActionForm組件可以將輸入的數(shù)據(jù)全部得到。

可以看出在視圖中沒有進行任何的業(yè)務(wù)邏輯的處理,其主要作用是給出客戶端顯示的信息和處理結(jié)果,以及請求的轉(zhuǎn)發(fā),它是和用戶交互的接口。

2、構(gòu)建模型

模型采用JavaBean和EJB組件,設(shè)計和實現(xiàn)系統(tǒng)的業(yè)務(wù)邏輯。根據(jù)不同的請求從Action派生具體Action處理對象,完成“做什么”的任務(wù)來調(diào)用由Bean構(gòu)成的業(yè)務(wù)組件,創(chuàng)建由ActionForm 的派生類實現(xiàn)對客戶端表單數(shù)據(jù)的封裝。

下面以BudgetInfoAddForm這個ActionForm Bean進行說明:

……

public final class BudgetInfoAddForm extends ActionForm {
private String infoType;
private String title;
private String content;
private FormFile infoFile;

這里表示BudgetInfoAddForm繼續(xù)于ActionForm,在這個Bean中定義了視圖中所要顯示數(shù)據(jù)信息的參數(shù),包括infoType,資料分類;title,資料標題;content,資料內(nèi)容;infoFile, 資料文件。同時在BudgetInfoAddForm中提供了設(shè)定和訪問這些參數(shù)的方法:

public String getInfoType()
public void setInfoType(String infoType)
public String getTitle()
public void setTitle(String title)
public String getContent()
public void setContent(String content)
public FormFile getInfoFile()
public void setInfoFile(FormFile infoFile)
public void reset(ActionMapping mapping, HttpServletRequest request) {
title = null;
content = null;
infoFile = null;
}

3、構(gòu)建控制器

在Struts應(yīng)用框架中,中心控制器(ActionServlet)是由Struts框架本身所提供,開發(fā)人員一般無須對該ActionServlet進行再次開發(fā);負責具體業(yè)務(wù)處理的Action類則是開發(fā)者開發(fā)實現(xiàn)的重點,在這些Action對象中會進行所有的業(yè)務(wù)操作,處理完畢,由Struts的ActionServlet轉(zhuǎn)向到j(luò)sp頁面,將處理結(jié)果返回給客戶端。

在預(yù)算資料模塊中,實現(xiàn)了四個Action:BudgetInfoAddAction,用于資料錄入; BudgetInfoContentAction,用于資料查詢; BudgetInfoUpdateAction,用于資料修改;BudgetInfoDelAction,用于資料刪除。

4、建立配置文件

Struts框架中有兩個配置文件web.xml和struts-config.xml,用于配置Struts系統(tǒng)中的各個模塊之間的交互。通過對這兩個配置文件的配置,把Struts框架中MVC的各個部分聯(lián)系起來,實現(xiàn)了一個真正的MVC系統(tǒng)。

結(jié)束語

Struts是一種基于MVC設(shè)計模式的企業(yè)級Web應(yīng)用開發(fā)框架,它的設(shè)計目的是從整體上減輕構(gòu)造企業(yè)Web應(yīng)用的負擔。其自帶的標記庫,能大大提高開發(fā)效率,同時提高了系統(tǒng)的可維護性和可擴充性。本文在總結(jié)Struts框架技術(shù)及其工作原理的基礎(chǔ)上給出了一個應(yīng)用實例,為今后更好的應(yīng)用Struts框架開發(fā)Web應(yīng)用程序提供了參考。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 久久久久久久久久久久久久国产 | 91精品国产乱码久久久久久久久 | 国产精品久久久久久久模特 | av噜噜在线 | 一区二区三区在线观看免费 | 久久久久中精品中文字幕19 | 日本网站一区 | 黄色午夜剧场 | 91久久国产露脸精品免费 | 特级无码毛片免费视频尤物 | 日韩视频在线一区二区三区 | 羞羞草视频 | 在线亚洲欧美 | 成人nv在线观看 | 91久久久久久亚洲精品禁果 | 成人在线观看免费高清 | 亚洲一区二区中文 | 久久国产精品久久久久久电车 | 亚洲人成网站免费播放 | 国产高潮好爽受不了了夜色 | 777zyz色资源站在线观看 | 成人做爰s片免费看网站 | 午夜在线视频一区二区三区 | 亚洲精品在线观看免费 | 久久精品网 | 精品国产91久久久久久久妲己 | 成人做爽爽爽爽免费国产软件 | 99精品视频一区二区 | 羞羞网站在线观看入口免费 | 日日夜av| 7777在线观看| 一级视频在线播放 | 国产精品久久久久久久久久东京 | 国产乱轮视频 | 一本精品999爽爽久久久 | 国内精品伊人久久久久网站 | 精品成人av一区二区三区 | av在线免费观看不卡 | 精品国产九九九 | 国产美女三级做爰 | 性欧美极品xxxx欧美一区二区 |