• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于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ā)。文章簡(jiǎn)要介紹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)用

    中圖分類號(hào):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ù)用戶請(qǐng)求判斷將請(qǐng)求交給哪個(gè)模型來完成,然后調(diào)用視圖來顯示模型處理后的用戶請(qǐng)求結(jié)果。

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

    2Struts框架

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

    (1) 控制器的實(shí)現(xiàn)。Struts框架中采用了ActionServlet和Action類以及Struts-config.xml配置文件作為控制器的實(shí)現(xiàn)。其中,Struts-config.xml配置文件配置了不同用戶請(qǐng)求及對(duì)應(yīng)的具體業(yè)務(wù)邏輯組件來供ActionServlet類查詢。ActionServlet類是中心Servlet,負(fù)責(zé)處理所有的用戶請(qǐng)求。當(dāng)用戶提出請(qǐng)求,ActionServlet類最先對(duì)請(qǐng)求進(jìn)行處理,它將根據(jù)Struts-config.xml配置文件將用戶請(qǐng)求映射到具體的Action類;而當(dāng)Action類調(diào)用模型組件處理好用戶請(qǐng)求,并返回了處理結(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)用具體的模型組件來完成用戶請(qǐng)求。

    (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框架對(duì)模型——即復(fù)雜的數(shù)據(jù)持久化層沒有提供太多的支持,但是這也就是說開發(fā)人員有更多自由來選擇合適量級(jí)的持久化技術(shù),比如Hibernate、EJB等。

    3Struts工作流程

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

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

    (2) 控制器接收請(qǐng)求,找到對(duì)應(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)中的考生注冊(cè)子系統(tǒng)為例,說明Struts 在Web程序開發(fā)中的應(yīng)用??忌谧?cè)頁面上輸入考生名、密碼等相關(guān)信息,若注冊(cè)成功,控制將轉(zhuǎn)向一個(gè)顯示注冊(cè)成功的頁面,否則控制將轉(zhuǎn)向一個(gè)顯示失敗的頁面。具體步驟如下:

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

    (2) 實(shí)現(xiàn)視圖功能的用戶界面的設(shè)計(jì)。Struts中,JSP 頁面中利用Struts框架提供的taglib 標(biāo)記庫的標(biāo)記能夠大大提高開發(fā)效率。在該系統(tǒng)中,其注冊(cè)頁面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ù),與注冊(cè)頁面的表單對(duì)應(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)注冊(cè)考生按“Submit”按鈕后,來自用戶的請(qǐng)求被Servlet 送到指令類組件RegUserAction,指令類調(diào)用相應(yīng)的業(yè)務(wù)邏輯進(jìn)行處理,然后把請(qǐng)求轉(zhuǎn)發(fā)給相關(guān)的JSP,其程序概要為:

    …;

    public class RegUserAction extends Action

    {

    public ActionForward perform(ActionMapping

    mapping, ActionForm form, HttpServletRequest

    req, HttpServletResponse response) {

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

    }

    }

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

    name="userForm"scope="request">

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

    注冊(cè)操作,然后轉(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

    平度市| 丽江市| 磴口县| 电白县| 甘洛县| 阳新县| 梓潼县| 宁德市| 彭泽县| 海林市| 故城县| 咸阳市| 万安县| 永州市| 公安县| 界首市| 门源| 乌拉特前旗| 隆德县| 阜平县| 靖宇县| 修水县| 岑巩县| 南和县| 青州市| 聂拉木县| 资中县| 万年县| 柘城县| 郧西县| 镇原县| 赣州市| 广平县| 奎屯市| 洪江市| 应城市| 湖南省| 商丘市| 土默特左旗| 阆中市| 西青区|