亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于MVC設(shè)計(jì)模式Struts框架的應(yīng)用方法

        2009-01-20 01:55:54王雅軒
        計(jì)算機(jī)教育 2009年24期

        頊 聰 王雅軒

        摘要:Struts 是當(dāng)前應(yīng)用開發(fā)中最為流行的框架之一。它提供一個(gè)非常好的MVC框架,在Web應(yīng)用開發(fā)中把界面和業(yè)務(wù)邏輯分離,提高了代碼的可重用性和靈活性,便于組件式開發(fā)。文章簡要介紹MVC設(shè)計(jì)模式和Struts框架的體系結(jié)構(gòu)和工作原理,然后結(jié)合一個(gè)實(shí)例,講述Struts實(shí)現(xiàn)MVC模式Web應(yīng)用的過程。

        關(guān)鍵詞:MVC模式;Struts;Web應(yīng)用

        中圖分類號:G642 文獻(xiàn)標(biāo)識(shí)碼:A

        傳統(tǒng)的Web應(yīng)用開發(fā)工具(ASP、JSP)將頁面顯示、商業(yè)邏輯和數(shù)據(jù)處理大部分都集中在頁面代碼中,Web應(yīng)用擴(kuò)展維護(hù)比較困難,在大型Web應(yīng)用開發(fā)中愈發(fā)顯得力不從心。MVC設(shè)計(jì)模式將頁面顯示、商業(yè)邏輯和數(shù)據(jù)處理相分離,最大限度地降低系統(tǒng)各部分之間的耦合性,提高代碼重用率,易于分工協(xié)作。而Struts是一個(gè)為開發(fā)基于MVC模式的應(yīng)用架構(gòu)的開源框架。

        1MVC設(shè)計(jì)模式

        MVC設(shè)計(jì)模式是一種著名的用戶界面軟件開發(fā)設(shè)計(jì)模式,它是模型-視圖-控制器(Model-View-Controller)縮寫。在MVC設(shè)計(jì)模式中,它把應(yīng)用程序分成了3個(gè)核心部分,原理如圖1所示。

        (1) 模型(Model)。模型封裝了用戶數(shù)據(jù)和處理數(shù)據(jù)的業(yè)務(wù)邏輯,體現(xiàn)了應(yīng)用程序的當(dāng)前狀態(tài),而且可以將用戶數(shù)據(jù)狀態(tài)的變化提供給多個(gè)顯示該數(shù)據(jù)的視圖共用。

        (2) 視圖(View)。視圖提供了用戶界面,是用戶和應(yīng)用程序的交互的窗口,既接受用戶輸入,也把模型數(shù)據(jù)狀態(tài)顯示給用戶,但是視圖不負(fù)責(zé)任何業(yè)務(wù)邏輯處理,僅僅是將用戶輸入數(shù)據(jù)傳遞給控制器或?qū)⒛P蛿?shù)據(jù)顯示給用戶。

        (3) 控制器(Controller)。控制器連接了模型和視圖,根據(jù)用戶請求判斷將請求交給哪個(gè)模型來完成,然后調(diào)用視圖來顯示模型處理后的用戶請求結(jié)果。

        MVC設(shè)計(jì)模式將應(yīng)用程序進(jìn)行了分層,提高了軟件的可擴(kuò)展性、可維護(hù)性。

        2Struts框架

        Struts框架繼承了MVC設(shè)計(jì)模式的特性,是J2EE體系架構(gòu)的一種輕量級實(shí)現(xiàn)。其工作原理如圖2所示:

        (1) 控制器的實(shí)現(xiàn)。Struts框架中采用了ActionServlet和Action類以及Struts-config.xml配置文件作為控制器的實(shí)現(xiàn)。其中,Struts-config.xml配置文件配置了不同用戶請求及對應(yīng)的具體業(yè)務(wù)邏輯組件來供ActionServlet類查詢。ActionServlet類是中心Servlet,負(fù)責(zé)處理所有的用戶請求。當(dāng)用戶提出請求,ActionServlet類最先對請求進(jìn)行處理,它將根據(jù)Struts-config.xml配置文件將用戶請求映射到具體的Action類;而當(dāng)Action類調(diào)用模型組件處理好用戶請求,并返回了處理結(jié)果后,仍然由ActionServlet類根據(jù)Struts-config.xml配置文件將結(jié)果轉(zhuǎn)發(fā)到視圖提供給用戶,或者轉(zhuǎn)發(fā)另外一個(gè)Action做進(jìn)一步處理。Action類實(shí)現(xiàn)了具體的業(yè)務(wù)邏輯,它接受用戶的輸入,然后調(diào)用具體的模型組件來完成用戶請求。

        (2) 視圖的實(shí)現(xiàn)。Struts構(gòu)架主要采用了JSP作為視圖的實(shí)現(xiàn),它提供了豐富的JSP標(biāo)簽庫支持應(yīng)用程序的開發(fā),而且引入了ActionForm組件(實(shí)質(zhì)為JavaBean)作為用戶表單的封裝來完成數(shù)據(jù)的傳輸。

        (3) 模型的實(shí)現(xiàn)。Struts框架對模型——即復(fù)雜的數(shù)據(jù)持久化層沒有提供太多的支持,但是這也就是說開發(fā)人員有更多自由來選擇合適量級的持久化技術(shù),比如Hibernate、EJB等。

        3Struts工作流程

        對于采用Struts 框架的Web應(yīng)用,其具體工作流程如下:

        (1) 客戶端通過本地瀏覽器向服務(wù)器發(fā)出一個(gè)請求;

        (2) 控制器接收請求,找到對應(yīng)的Action;

        (3) Action類執(zhí)行建立在模型組件基礎(chǔ)上的業(yè)務(wù)邏輯;

        (4) 一旦Action類處理完業(yè)務(wù)邏輯,它把控制權(quán)返回給ActionServlet;

        (5) 當(dāng)ActionServlet把Action類的處理結(jié)果傳送到指定的視圖中。

        4Web開發(fā)中的應(yīng)用

        以一個(gè)Web考試系統(tǒng)中的考生注冊子系統(tǒng)為例,說明Struts 在Web程序開發(fā)中的應(yīng)用??忌谧皂撁嫔陷斎肟忌?、密碼等相關(guān)信息,若注冊成功,控制將轉(zhuǎn)向一個(gè)顯示注冊成功的頁面,否則控制將轉(zhuǎn)向一個(gè)顯示失敗的頁面。具體步驟如下:

        (1) 項(xiàng)目建立。

        (2) 實(shí)現(xiàn)視圖功能的用戶界面的設(shè)計(jì)。Struts中,JSP 頁面中利用Struts框架提供的taglib 標(biāo)記庫的標(biāo)記能夠大大提高開發(fā)效率。在該系統(tǒng)中,其注冊頁面reguserinfo.jsp 概要如下:

        //引用Struts bean 標(biāo)記

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

        UserName:

        Password:

        (3) 實(shí)現(xiàn)模型功能的組件設(shè)計(jì)。模型部分包含了應(yīng)用程序的業(yè)務(wù)邏輯。

        ① 系統(tǒng)狀態(tài)組件(FormBean),即實(shí)體模型類,它繼承自ActionForm類,用來存放表單數(shù)據(jù),與注冊頁面的表單對應(yīng)的數(shù)據(jù)Bean如下:

        …;

        public class UserForm extends ActionForm{

        public String getUserID(){return userID;}

        public void setUserID(String userID)

        {this.userld= userID;}

        }

        ② 指令類組件(ActionBean),它擴(kuò)展了Action 類,主要是用來控制應(yīng)用程序的流程,當(dāng)注冊考生按“Submit”按鈕后,來自用戶的請求被Servlet 送到指令類組件RegUserAction,指令類調(diào)用相應(yīng)的業(yè)務(wù)邏輯進(jìn)行處理,然后把請求轉(zhuǎn)發(fā)給相關(guān)的JSP,其程序概要為:

        …;

        public class RegUserAction extends Action

        {

        public ActionForward perform(ActionMapping

        mapping, ActionForm form, HttpServletRequest

        req, HttpServletResponse response) {

        //獲取注冊信息,并據(jù)此做相應(yīng)操作

        }

        }

        (4) 實(shí)現(xiàn)控制器功能的指令??刂破黝怉ctionServlet的核心是Struts-config.xml 配置文件,它包含了應(yīng)用程序的整個(gè)邏輯流程。在考生注冊信息過程中,用reguserinfo.jsp實(shí)現(xiàn)注冊頁面;用UserForm(擴(kuò)展了ActionForm)封裝了表單數(shù)據(jù);用RegUserAction實(shí)現(xiàn)了考生注冊信息并控制了應(yīng)用程序流程;而在Struts-config.xml 配置文件里實(shí)現(xiàn)了注冊頁面(reguserinfo.jsp)、數(shù)據(jù)Bean(UserForm)、邏輯Bean(RegUserAction)之間的聯(lián)系,其配置信息為:

        name="userForm"scope="request">

        當(dāng)在注冊頁面上單擊“Submit”按鈕時(shí),考生請求被提交給ActionServlet, ActionServlet 根據(jù)Struts-config.xml 中的配置信息,把/reguser.do 的URL映射到RegUserAction,把考生注冊信息封裝到UserForm,由RegUserAction 完成

        注冊操作,然后轉(zhuǎn)發(fā)給“/regsuccess.jsp”。

        (5) 系統(tǒng)運(yùn)行。 完成整個(gè)系統(tǒng)的功能實(shí)現(xiàn)。

        5總結(jié)

        Struts體系框架自從2001年7月發(fā)布了1.0版之后,已經(jīng)越來越得到Java開發(fā)者的支持,實(shí)踐證明,Struts體系框架的確是一個(gè)優(yōu)秀的框架,大大縮短了Java Web應(yīng)用程序的開發(fā)周期,提高了系統(tǒng)開發(fā)效率。

        參考文獻(xiàn):

        [1] 孫衛(wèi)琴. 精通Struts:基于MVC的JavaWeb設(shè)計(jì)與開發(fā)[M]. 北京:電子工業(yè)出版 ,2004.

        [2] 閻宏. Java與模式[M].北京:電子工業(yè)出版社,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

        亚洲av无码av制服另类专区| 亚洲啪啪色婷婷一区二区| 99久久免费看精品国产一| 成年男女免费视频网站点播| 日本一区二区在线免费视频| 中字幕人妻一区二区三区| 国产又黄又大又粗的视频| 亚洲国产cao| 亚洲大胆视频在线观看| 国产乱子伦一区二区三区国色天香| 无码喷潮a片无码高潮| 国产成人精品999在线观看| 亚洲欧美另类精品久久久| 午夜国产精品一区二区三区| 亚洲 欧美 偷自乱 图片| 岛国av无码免费无禁网站| 99久久精品国产成人综合| 国内视频一区| 成年男人午夜视频在线看| 亚洲综合精品亚洲国产成人| 久激情内射婷内射蜜桃| 99久久综合精品五月天| 国产日韩乱码精品一区二区 | 国产的自拍av免费的在线观看| av狠狠色丁香婷婷综合久久| 人妻在卧室被老板疯狂进入国产| 国产高清丝袜美腿视频在线观看| 91视色国内揄拍国内精品人妻 | 蜜桃18禁成人午夜免费网站| 亚洲女同一区二区| 久久97精品久久久久久久不卡| 蜜桃av噜噜一区二区三区香| 国产三级视频在线观看国产 | 亚洲一区二区综合色精品| 日韩美女人妻一区二区三区| 插鸡网站在线播放免费观看| 人妻少妇看a偷人无码精品| 亚洲AV成人无码天堂| 国产亚洲av成人噜噜噜他| 无码人妻精品一区二区在线视频| 中文字幕久久久久久久系列|