亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

基于MVC模式的Struts框架研究與應用

2019-11-17 06:18:42
字體:
來源:轉載
供稿:網友

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

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

MVC設計模式

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

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

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

圖1 MVC模式框架

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

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

控制器用于治理用戶與視圖發生的交互。一旦用戶想對模型進行處理時,它不能直接去執行模型,而是通過控制器來間接地實現??刂破髂軓囊晥D中取值,然后將相應的值傳給模型進行處理。控制器接受用戶的輸入并調用模型和視圖去完成用戶的需求。

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

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

Struts框架

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

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

圖2 Struts框架圖

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

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

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

基于MVC模式的Struts框架的應用

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

具體在使用Struts框架時,對應各個部分的開發工作主要包括:

1、構建視圖

在Struts框架中,視圖的實現主要采用JSP技術,但與傳統的JSP相比有兩個顯著的不同。

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

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

下面給出資料錄入頁面的部分實現代碼:

<%@ 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>

前期預備資料錄入

</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指出調用的Action組件的絕對路徑,標記<html:form>和</html:form>封裝了表單數據,在業務層中用相應的ActionForm組件可以將輸入的數據全部得到。

可以看出在視圖中沒有進行任何的業務邏輯的處理,其主要作用是給出客戶端顯示的信息和處理結果,以及請求的轉發,它是和用戶交互的接口。

2、構建模型

模型采用JavaBean和EJB組件,設計和實現系統的業務邏輯。根據不同的請求從Action派生具體Action處理對象,完成“做什么”的任務來調用由Bean構成的業務組件,創建由ActionForm 的派生類實現對客戶端表單數據的封裝。

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

……

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

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

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、構建控制器

在Struts應用框架中,中心控制器(ActionServlet)是由Struts框架本身所提供,開發人員一般無須對該ActionServlet進行再次開發;負責具體業務處理的Action類則是開發者開發實現的重點,在這些Action對象中會進行所有的業務操作,處理完畢,由Struts的ActionServlet轉向到jsp頁面,將處理結果返回給客戶端。

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

4、建立配置文件

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

結束語

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品国产精品三级精品av网址| 日韩av观看网址| 亚洲第一综合天堂另类专| 欧美激情第6页| 亚洲人成网站免费播放| 最近中文字幕mv在线一区二区三区四区| 97视频在线观看视频免费视频| 国产亚洲精品综合一区91| 日韩精品视频在线观看免费| 一夜七次郎国产精品亚洲| 色诱女教师一区二区三区| 欧美日韩福利在线观看| 欧美在线视频免费观看| 亚洲97在线观看| 亚洲精品国精品久久99热一| 国产日韩精品一区二区| 欧美裸身视频免费观看| 亚洲国产精品中文| 国产精国产精品| 久久亚洲精品网站| 欧美成年人视频网站欧美| 免费97视频在线精品国自产拍| 成人午夜小视频| 日韩在线视频二区| 亚洲人成毛片在线播放| 78m国产成人精品视频| 日韩电影中文字幕在线观看| 精品动漫一区二区| 日韩成人中文电影| 久久人人97超碰精品888| 欧美理论电影在线观看| 欧美三级xxx| 久久免费国产视频| 国产福利精品av综合导导航| 欧美日韩中文字幕在线视频| 亚洲午夜国产成人av电影男同| 亚洲成人国产精品| 久久久久久国产精品三级玉女聊斋| 成人欧美一区二区三区黑人| 欧美另类高清videos| 岛国av一区二区| 日韩电影大片中文字幕| 国产国语videosex另类| 久久精品国产69国产精品亚洲| 国产视频精品xxxx| 亚洲国产精品国自产拍av秋霞| xxxxxxxxx欧美| 欧美激情精品久久久久久黑人| 中文字幕精品国产| 欧美日韩成人在线观看| 精品亚洲精品福利线在观看| 精品亚洲永久免费精品| 国内精品模特av私拍在线观看| 国产成人精彩在线视频九色| 日本免费一区二区三区视频观看| 一色桃子一区二区| 精品在线观看国产| 精品一区二区三区电影| 日韩精品中文字幕有码专区| 欧美激情一二区| 国产综合色香蕉精品| 精品亚洲一区二区| 亚洲图片在线综合| 国产女同一区二区| 亚洲综合日韩在线| 国产精品日韩在线一区| 久久久久久久久久国产精品| 91久久夜色精品国产网站| 日本一区二区不卡| 国产午夜精品全部视频在线播放| 亚洲精品久久久久中文字幕欢迎你| 国产精品一区二区三区免费视频| 自拍偷拍亚洲精品| 55夜色66夜色国产精品视频| 亚洲一区第一页| 久久精品成人欧美大片古装| 人人澡人人澡人人看欧美| 亚洲精品资源在线| 秋霞午夜一区二区| 亚洲毛片在线免费观看| 欧美整片在线观看| 国产精品成人一区| 热久久视久久精品18亚洲精品| 久久资源免费视频| 久久久电影免费观看完整版| 免费97视频在线精品国自产拍| 成人免费网视频| 91九色视频导航| 中文字幕亚洲欧美| 国产精品一区专区欧美日韩| 欧美成人黑人xx视频免费观看| 国产视频999| 国产欧美精品一区二区三区-老狼| 亚洲人成在线观看| 国产91精品视频在线观看| 国语自产精品视频在线看抢先版图片| 国产视频欧美视频| 久久久av亚洲男天堂| 国产精品99免视看9| 欧美激情视频在线免费观看 欧美视频免费一| 欧美美最猛性xxxxxx| 欧美国产高跟鞋裸体秀xxxhd| 欧美性xxxxxxxxx| 久久久久国产精品www| 成人羞羞国产免费| 日本成人免费在线| 亚洲精品aⅴ中文字幕乱码| 国产欧美在线播放| 国产精品天天狠天天看| 亚洲色图美腿丝袜| 91亚洲一区精品| 久久久久久久久久久免费精品| 2021国产精品视频| 夜夜躁日日躁狠狠久久88av| 久久精品国产69国产精品亚洲| 国产成人精品最新| 97视频在线看| 久久av在线播放| 国产精品伦子伦免费视频| 日韩免费看的电影电视剧大全| 欧美日韩在线观看视频小说| 国产精品视频一区二区三区四| 91精品啪aⅴ在线观看国产| 国产精品99久久99久久久二8| 亚洲精品视频久久| 亚洲欧美成人网| 欧美日韩一区二区免费视频| 日本精品一区二区三区在线| 国模精品系列视频| 欧美精品一区三区| 久久久国产精品免费| 久久精品国产亚洲一区二区| 亚洲永久在线观看| 国产精品天天狠天天看| 91精品国产成人www| 成人a级免费视频| 国产精品7m视频| 国产丝袜精品第一页| 国产va免费精品高清在线观看| 欧洲日本亚洲国产区| 亚洲free性xxxx护士白浆| 国产成人精品一区二区三区| 成人xvideos免费视频| 国外成人在线直播| 国产免费一区视频观看免费| 亚洲男人天堂2019| 国产香蕉精品视频一区二区三区| 亚洲精品丝袜日韩| 欧美视频13p| 一本色道久久综合狠狠躁篇怎么玩| 91九色视频在线| 日韩精品视频免费在线观看| 国产欧美精品在线播放| 色一情一乱一区二区| 91免费精品国偷自产在线| 欧美一级片久久久久久久| 亚洲最新av在线| 91青草视频久久| 久久99精品国产99久久6尤物| 色综合久久中文字幕综合网小说| 亚洲视频视频在线| 国产精品久久久久久亚洲影视| 成人妇女淫片aaaa视频| 性视频1819p久久|