国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Struts2模型驅(qū)動開發(fā)方法研究

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

王先國 何忠禮 王玉娟

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

引言

目前,基于Struts2的模型驅(qū)動開發(fā)方法十分流行,但很多開發(fā)人員對其開發(fā)規(guī)范、工作原理、核心攔截器的組成和攔截機制知之甚少,這就導(dǎo)致開發(fā)效率低,且開發(fā)出的軟件質(zhì)量差?;诖耍疚脑敿毭枋隽薙truts2的模型驅(qū)動工作原理,通過實例演示了基于Struts2的模型驅(qū)動的開發(fā)步驟,為開發(fā)人員提供一個模型驅(qū)動的開發(fā)示范。

一、Struts2工作原理2

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

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

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

Interceptor(攔截器):攔截器是Stuts2的基石,它是一些無狀態(tài)的類,攔截器可以自動攔截客戶發(fā)送的Action請求。客戶的所有Action請求,在到達Action之前,首先要執(zhí)行一序列攔截器,在圖1中,客戶的Action請求到達Action以前,先要執(zhí)行攔截器1、攔截器2、攔截器3。

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

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

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

2.Struts2執(zhí)行流程

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

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

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

二、模型驅(qū)動開發(fā)示范

1.定義模型

這里的模型就是一個普通的Bean(People對象),在模型中必須定義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ū)動時,繼承ActionSupport類或者實現(xiàn)接口Action時,必須實現(xiàn)模型驅(qū)動接口ModelDriven。在控制器中,必須重寫execute()方法 和 getModel()方法[3]。 下面是PeopleAction的源代碼。

packagewang.action;

importwang.People;

importcom.opensymphony.xwork2.ActionSupport;

import com.opensymphony.xwork2.ModelDriven;

publicclassPeopleActionextendsActionSupportimplementsModelDriven<People>{

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

publicStringexecute()throwsException{

returnSUCCESS; //此方法必須重寫

}

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

returnpeople;

} }

3.建立請求Action的表單

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

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

<html>

<body>

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

<s∶formaction="peopleAction">

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

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

<s∶submit/>

</s∶form>

</body>

</html>

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

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

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

<html>

<body>

<h1>基于Struts2模型驅(qū)動</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é)語

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

猜你喜歡
攔截器源代碼表單
人工智能下復(fù)雜軟件源代碼缺陷精準校正
計算機仿真(2023年8期)2023-09-20 11:23:42
多動能攔截器協(xié)同制導(dǎo)規(guī)律的研究及仿真
英國MARSS公司推出新型反無人機攔截器
無人機(2022年2期)2022-05-20 06:43:32
以色列“天鎖”公司展出新式反無人機攔截器
輕兵器(2022年5期)2022-05-19 00:56:24
電子表單系統(tǒng)應(yīng)用分析
華東科技(2021年9期)2021-09-23 02:15:24
基于TXL的源代碼插樁技術(shù)研究
軟件源代碼非公知性司法鑒定方法探析
淺談網(wǎng)頁制作中表單的教學(xué)
揭秘龍湖產(chǎn)品“源代碼”
基于Infopath實現(xiàn)WEB動態(tài)表單的研究
電子世界(2012年24期)2012-12-17 10:49:06
长阳| 合作市| 南宁市| 丹巴县| 双柏县| 江山市| 惠水县| 河西区| 滨州市| 新源县| 双峰县| 威信县| 洛扎县| 玉树县| 新巴尔虎右旗| 长治市| 明水县| 仙居县| 临猗县| 延边| 沙坪坝区| 南丹县| 治县。| 务川| 南溪县| 兴安县| 永吉县| 白银市| 广州市| 晋中市| 仙居县| 临洮县| 延寿县| 将乐县| 荆门市| 尼玛县| 两当县| 洛浦县| 福泉市| 全州县| 宿迁市|