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

        ?

        基于Struts2模型驅(qū)動(dòng)開(kāi)發(fā)方法研究

        2018-11-01 03:50:20王先國(guó)何忠禮王玉娟
        發(fā)明與創(chuàng)新 2018年25期
        關(guān)鍵詞:攔截器源代碼表單

        王先國(guó) 何忠禮 王玉娟

        中山大學(xué)新華學(xué)院 廣東 東莞 523133

        引言

        目前,基于Struts2的模型驅(qū)動(dòng)開(kāi)發(fā)方法十分流行,但很多開(kāi)發(fā)人員對(duì)其開(kāi)發(fā)規(guī)范、工作原理、核心攔截器的組成和攔截機(jī)制知之甚少,這就導(dǎo)致開(kāi)發(fā)效率低,且開(kāi)發(fā)出的軟件質(zhì)量差?;诖?,本文詳細(xì)描述了Struts2的模型驅(qū)動(dòng)工作原理,通過(guò)實(shí)例演示了基于Struts2的模型驅(qū)動(dòng)的開(kāi)發(fā)步驟,為開(kāi)發(fā)人員提供一個(gè)模型驅(qū)動(dòng)的開(kāi)發(fā)示范。

        一、Struts2工作原理2

        1.Struts2體系結(jié)構(gòu)

        Struts2是一個(gè)標(biāo)準(zhǔn)的MVC框架,它簡(jiǎn)化了Web程序的開(kāi)發(fā)過(guò)程,并且降低了程序的耦合度。Struts2體系結(jié)構(gòu)如圖1所示。

        StrutsPrepareAndExcute-Filter(Struts2核心控制器):它是Struts2的調(diào)度中心,由它決定是否處理客戶的Action請(qǐng)求。

        Interceptor(攔截器):攔截器是Stuts2的基石,它是一些無(wú)狀態(tài)的類,攔截器可以自動(dòng)攔截客戶發(fā)送的Action請(qǐng)求??蛻舻乃蠥ction請(qǐng)求,在到達(dá)Action之前,首先要執(zhí)行一序列攔截器,在圖1中,客戶的Action請(qǐng)求到達(dá)Action以前,先要執(zhí)行攔截器1、攔截器2、攔截器3。

        Action(控制器):在圖1中,客戶的請(qǐng)求經(jīng)過(guò)攔截器1、攔截器2、攔截器3后,才到達(dá)Action控制器。Action是程序員編寫(xiě)的控制器,用來(lái)處理客戶的Action請(qǐng)求。

        Resul(結(jié)果)t:Action控制器執(zhí)行完后,返回一個(gè)字符串,這個(gè)字符串就是邏輯視圖。Result根據(jù)邏輯視圖的值,去調(diào)用相應(yīng)的物理視圖。Struts2中支持多種視圖類型,比如Java ServerPages(JSP)、FreeMarker等[1]。

        圖1 Struts2的體系結(jié)構(gòu)

        2.Struts2執(zhí)行流程

        Struts2的模型驅(qū)動(dòng)工作流程如圖2所示。

        圖2 Struts2模型驅(qū)動(dòng)工作流程圖

        客戶端向Struts2控制器發(fā)送一個(gè)Action請(qǐng)求,比如,表單提交;Struts2控制器調(diào)用屬性攔截器(params),屬性攔截器獲取表單請(qǐng)求參數(shù),并將表單參數(shù)封裝為Model(一個(gè)普通的Bean);當(dāng)執(zhí)行流程到達(dá)Action時(shí),Struts2控制器調(diào)用模型攔截器(ModelDriven),模型攔截器獲取模型對(duì)象,并將模型對(duì)象壓入值棧的棧頂;Struts2控制器根據(jù)Action執(zhí)行后返回的結(jié)果值(邏輯視圖),調(diào)用相應(yīng)的JSP頁(yè)面;JSP頁(yè)面將結(jié)果返回(response)給客戶[2]。

        二、模型驅(qū)動(dòng)開(kāi)發(fā)示范

        1.定義模型

        這里的模型就是一個(gè)普通的Bean(People對(duì)象),在模型中必須定義setter和getter方法。下面是People類的源代碼:

        packagewang;

        publicclassPeople{

        Stringname;//本類中的屬性名必須與表單中的屬性name的值一致

        intage; //本類中的屬性名必須與表單中的屬性name的值一致

        publicStringgetName(){

        returnname;

        }

        publicvoidsetName(Stringname){

        this.name=name;

        }

        publicintgetAge(){

        returnage;

        }

        publicvoidsetAge(intage){

        this.age=age;

        } }

        2.定義Action

        使用模型驅(qū)動(dòng)時(shí),繼承ActionSupport類或者實(shí)現(xiàn)接口Action時(shí),必須實(shí)現(xiàn)模型驅(qū)動(dòng)接口ModelDriven。在控制器中,必須重寫(xiě)execute()方法 和 getModel()方法[3]。 下面是PeopleAction的源代碼。

        packagewang.action;

        importwang.People;

        importcom.opensymphony.xwork2.ActionSupport;

        import com.opensymphony.xwork2.ModelDriven;

        publicclassPeopleActionextendsActionSupportimplementsModelDriven<People>{

        Peoplepeople=newPeople ();// 必須初始化

        publicStringexecute()throwsException{

        returnSUCCESS; //此方法必須重寫(xiě)

        }

        publicObjectgetModel(){//此方法必須重寫(xiě)

        returnpeople;

        } }

        3.建立請(qǐng)求Action的表單

        建立一個(gè)向Action提交請(qǐng)求的表單頁(yè)面,下面是請(qǐng)求頁(yè)面(addPeople.jsp)的源代碼。

        <%@taglibprefix="s"uri="/struts-tags"%>

        <html>

        <body>

        <h1>基于Struts2模型驅(qū)動(dòng)</h1>

        <s∶formaction="peopleAction">

        <s∶textfieldname="name"label="姓名"/>

        <s∶textfield name="age"label="年齡 "value=""/>

        <s∶submit/>

        </s∶form>

        </body>

        </html>

        4.建立響應(yīng)頁(yè)面

        建立一個(gè)向Action提交請(qǐng)求的表單頁(yè)面,下面是響應(yīng)頁(yè)面(success.jsp)的源代碼。

        <%@taglibprefix="s"uri="/struts-tags"%>

        <html>

        <body>

        <h1>基于Struts2模型驅(qū)動(dòng)</h1>

        姓名∶<s∶propertyvalue="name"/><br>

        年齡∶<s∶propertyvalue="age"/><br>

        </body>

        </html>

        5.配置文件(struts.xml)

        <?xmlversion="1.0"encoding="UTF-8"?>

        <!DOCTYPEstrutsPUBLIC

        "-//Apache Software Foundation//DTD StrutsConfiguration2.0//EN"

        "http∶//struts.apache.org/dtds/struts-2.0.dtd">

        <struts>

        <constant name="struts.dev-Mode"value="true"/>

        <package name="default"namespace="/"extends="struts-default">

        <actionname="peopleAction"class="wang.action.PeopleAction">

        <result name="success">/success.jsp</result>

        </action>

        </package>

        </struts>

        三、結(jié)語(yǔ)

        本文詳細(xì)展示了基于Struts2的模型驅(qū)動(dòng)的工作原理、程序執(zhí)行流程、開(kāi)發(fā)規(guī)范,用一個(gè)完整的實(shí)例,清晰地再現(xiàn)了程序開(kāi)發(fā)的每個(gè)環(huán)節(jié)、步驟和規(guī)范,為程序開(kāi)發(fā)人員提供了一個(gè)基于Struts2的模型驅(qū)動(dòng)的樣板,降低了開(kāi)發(fā)過(guò)程中出現(xiàn)的錯(cuò)誤率,極大地提高了程序開(kāi)發(fā)效率。

        猜你喜歡
        攔截器源代碼表單
        人工智能下復(fù)雜軟件源代碼缺陷精準(zhǔn)校正
        多動(dòng)能攔截器協(xié)同制導(dǎo)規(guī)律的研究及仿真
        英國(guó)MARSS公司推出新型反無(wú)人機(jī)攔截器
        以色列“天鎖”公司展出新式反無(wú)人機(jī)攔截器
        輕兵器(2022年5期)2022-05-19 00:56:24
        電子表單系統(tǒng)應(yīng)用分析
        華東科技(2021年9期)2021-09-23 02:15:24
        基于TXL的源代碼插樁技術(shù)研究
        軟件源代碼非公知性司法鑒定方法探析
        淺談網(wǎng)頁(yè)制作中表單的教學(xué)
        揭秘龍湖產(chǎn)品“源代碼”
        基于Infopath實(shí)現(xiàn)WEB動(dòng)態(tài)表單的研究
        電子世界(2012年24期)2012-12-17 10:49:06
        成人午夜福利视频镇东影视| 久久中文字幕国产精品| 97超级碰碰人妻中文字幕 | 中文字幕av一区二区三区| 强d乱码中文字幕熟女1000部 | 久久久午夜精品福利内容| 啪啪无码人妻丰满熟妇| 蜜臀av中文人妻系列| 丝袜美腿在线观看视频| 国产极品少妇一区二区| 69一区二三区好的精华| 三年片在线观看免费大全电影| 91极品尤物国产在线播放| 国产午夜三级精品久久久| 蜜桃视频免费进入观看| 午夜色大片在线观看| 久久国产精品波多野结衣av| 国产免费三级三级三级| 侵犯了美丽丰满人妻中文字幕| 亚洲av综合av一区二区三区 | 欧美手机在线视频| 亚洲狠狠久久五月婷婷| 亚洲精品乱码久久久久久| 人妻激情另类乱人伦人妻| 欧美精品AⅤ在线视频| 黄页国产精品一区二区免费 | 小蜜被两老头吸奶头在线观看| 中国精学生妹品射精久久| 青青草免费激情自拍视频| 国产一级黄色片在线播放| 日韩av高清在线观看| 国产乱子乱人伦电影在线观看| 久久精品国产只有精品96| av人妻在线一区二区三区| 80s国产成年女人毛片| 曰批免费视频播放免费直播| 日韩在线观看网址| 在线观看视频亚洲一区二区三区 | 大学生高潮无套内谢视频| 男人边吃奶边做好爽免费视频| 91极品尤物在线观看播放|