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

?

Struts框架技術(shù)簡(jiǎn)析

2012-09-25 01:29:10王剛
關(guān)鍵詞:表單開(kāi)發(fā)人員實(shí)例

王剛

(陜西財(cái)經(jīng)職業(yè)技術(shù)學(xué)院信息工程系,陜西咸陽(yáng) 712000)

Struts框架技術(shù)簡(jiǎn)析

王剛

(陜西財(cái)經(jīng)職業(yè)技術(shù)學(xué)院信息工程系,陜西咸陽(yáng) 712000)

本文簡(jiǎn)要介紹了Struts框架技術(shù)及其相關(guān)內(nèi)容,并著重對(duì)Struts框架的組件和Struts框架的高級(jí)特性進(jìn)行了深入的探討。

Struts框架;Struts框架的組件;Struts框架的高級(jí)特性

1 Struts概述

作為Sun JavaEE平臺(tái)下MVC模式的Struts框架,來(lái)源于Craig McClanahan最初的構(gòu)思,它包含兩個(gè)主要的技術(shù)——Servlet和JSP。Struts是Apache組織提供的一項(xiàng)開(kāi)放源碼工程,使用起來(lái)簡(jiǎn)單、方便,實(shí)現(xiàn)的速度快,對(duì)于應(yīng)用系統(tǒng)的開(kāi)發(fā)可以很好地滿足。Struts主要指的是使用在建筑和舊式飛機(jī)中的起支撐作用的金屬架。之所以把這個(gè)框架命名為“Struts”,是提醒我們要記住那些在房屋、建筑物、橋梁以及踩高蹺時(shí)起著一定支撐作用的基礎(chǔ)支架,這也是對(duì)Struts最為典型的描述。建造一個(gè)建筑物時(shí),建筑工程師會(huì)考慮給建筑物的每一層建造相應(yīng)的支柱,以起到對(duì)整個(gè)建筑物的支撐作用。同樣,軟件工程師使用Struts的時(shí)候,會(huì)給業(yè)務(wù)應(yīng)用的每個(gè)層次提供相應(yīng)的支持,就是為了幫助開(kāi)發(fā)人員在采用MVC設(shè)計(jì)模型開(kāi)發(fā)Web應(yīng)用程序時(shí),減少相應(yīng)系統(tǒng)的開(kāi)發(fā)時(shí)間。如果想混合使用Servlets和JSP的優(yōu)點(diǎn)來(lái)構(gòu)建可擴(kuò)展的應(yīng)用,Struts將會(huì)是非常好的選擇。

Struts是一個(gè)通用的用來(lái)實(shí)現(xiàn)MVC模式的框架,其中包括模型、視圖、控制器和一個(gè)XML文件。在這個(gè)框架中,系統(tǒng)的狀態(tài)和業(yè)務(wù)邏輯是模型的主要表現(xiàn)形式,其中ActiomFormBean表現(xiàn)的是系統(tǒng)的有關(guān)狀態(tài),而JavaBean或EJB組件主要用來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯;而通過(guò)JSP就可以建立一個(gè)視圖,同時(shí)由于視圖本來(lái)就含有那些自定義的可用于擴(kuò)充的標(biāo)簽 (Tag1ib),因而就可以大大地簡(jiǎn)化相應(yīng)用戶界面的實(shí)現(xiàn)過(guò)程。通常是通過(guò)ActionServlet類和Action類來(lái)實(shí)現(xiàn)Struts框架的控制器,作為Struts框架中的核心組件ActionServlet類,它的主要作用就是把用戶相關(guān)的HTTP請(qǐng)求接收起來(lái),并與配置信息進(jìn)行核對(duì),將請(qǐng)求轉(zhuǎn)發(fā)到相應(yīng)的Action對(duì)象。然而調(diào)用模型的有關(guān)方法是由Action類來(lái)完成的,它可以對(duì)模型的狀態(tài)進(jìn)行更新,同時(shí)還應(yīng)輔助進(jìn)行對(duì)應(yīng)用程序的流程控制;Struts有兩個(gè)相應(yīng)的配置文件web.xml和struts-config.xml,其中web.xml除了要對(duì)ActionServlet進(jìn)行相應(yīng)的配置以外,還要對(duì)Web表示層中使用的有關(guān)struts標(biāo)簽庫(kù)進(jìn)行相應(yīng)的聲明。而Strutsconfig.xml則描述的是與Struts相關(guān)的文件,主要是用來(lái)存儲(chǔ)描述用戶請(qǐng)求的路徑以及相應(yīng)的Action映射關(guān)系的配置信息的。

JSP技術(shù)對(duì)動(dòng)態(tài)頁(yè)面處理邏輯進(jìn)行封裝,通常通過(guò)Java編程語(yǔ)言類的XML標(biāo)簽和scriptlets來(lái)進(jìn)行。與此同時(shí),借助于tags和scriptlets相關(guān)的網(wǎng)頁(yè)還可以把保存在服務(wù)端的資源的應(yīng)用邏輯調(diào)用出來(lái)。將網(wǎng)頁(yè)邏輯與網(wǎng)頁(yè)設(shè)計(jì)和顯示分開(kāi)來(lái),通過(guò)JSP技術(shù)就可實(shí)現(xiàn)。因此,JSP技術(shù)可以更好地支持可復(fù)用的基于構(gòu)件的系統(tǒng)設(shè)計(jì),因而采用JSP技術(shù)可以輕易地實(shí)現(xiàn)Web應(yīng)用程序。如果要訪問(wèn)JSP頁(yè)面的請(qǐng)求,那么首先必須把其中相關(guān)的程序通過(guò)Web服務(wù)器執(zhí)行,然后客戶端會(huì)接收到程序執(zhí)行的結(jié)果以及JSP文件中有關(guān)的HTML代碼。JSP通常把一個(gè)有關(guān)的HTML文本回傳給客戶端,那么客戶通過(guò)瀏覽器很容易對(duì)相關(guān)內(nèi)容進(jìn)行直接瀏覽。

HTML源程序代碼以及嵌入HTML之中的Java源程序代碼組合在一起就構(gòu)成了JSP的頁(yè)面。通常,借助于頁(yè)面客戶端發(fā)出請(qǐng)求,服務(wù)器接收到請(qǐng)求以后,通過(guò)對(duì)這些Java源程序代碼加工,就可以生成相應(yīng)的HTML頁(yè)面,然后將其傳遞給客戶端瀏覽器。JavaServlet是JSP必不可少的組成部分,是JSP的技術(shù)基礎(chǔ),要成功實(shí)現(xiàn)大型的Web應(yīng)用系統(tǒng),只有把JavaServlet和JSP很好地結(jié)合起來(lái)才能實(shí)現(xiàn)。與Java技術(shù)相同,JSP操作簡(jiǎn)單,實(shí)現(xiàn)容易,是一種完全面向?qū)ο蟮姆椒ǎ磺移渚哂衅脚_(tái)無(wú)關(guān)性,開(kāi)發(fā)出的系統(tǒng)穩(wěn)定、可靠,主要面向互聯(lián)網(wǎng)等特征??梢杂靡粋€(gè)簡(jiǎn)單的公式來(lái)表示JSP,即JSP=HTML+Java。

Struts最大的一個(gè)優(yōu)點(diǎn)就是它是一種開(kāi)源軟件,同時(shí),標(biāo)簽庫(kù)和頁(yè)面導(dǎo)航也在某些方面反映出了Struts的優(yōu)勢(shì)。標(biāo)簽庫(kù)是Struts的標(biāo)記庫(kù),靈活運(yùn)用可以極大地提高開(kāi)發(fā)效率。由于頁(yè)面導(dǎo)航的存在,因而開(kāi)發(fā)出來(lái)的系統(tǒng)結(jié)構(gòu)更加合理,層次也比以前更清晰,所以它是Struts今后主要發(fā)展的對(duì)象。只要配置好一個(gè)文件,通過(guò)該文件就可以輕易地把系統(tǒng)相應(yīng)的各個(gè)部分聯(lián)系起來(lái),所以非常有利于系統(tǒng)今后的維護(hù)工作。特別是要繼續(xù)去實(shí)現(xiàn)某個(gè)項(xiàng)目,而又換了一批不同的技術(shù)人員時(shí),它的這種優(yōu)點(diǎn)表現(xiàn)得更加突出。雖然Struts具備這些優(yōu)勢(shì),但初次接觸該技術(shù)的開(kāi)發(fā)人員仍需要不斷地學(xué)習(xí),有時(shí)還需要打亂技術(shù)人員編寫(xiě)網(wǎng)頁(yè)的固有方式。

2 Struts框架的組件分析

2.1 ActionServlet

在Struts中,ActionServlet主要是接收來(lái)自于用戶的HTTP請(qǐng)求,同時(shí)依據(jù)系統(tǒng)配置信息的要求,把相應(yīng)的請(qǐng)求傳遞給有關(guān)的的Action對(duì)象。在實(shí)施的過(guò)程中,首先要判斷有沒(méi)有Action對(duì)象,如果沒(méi)有,應(yīng)該設(shè)計(jì)出來(lái)相應(yīng)的對(duì)象;然后在請(qǐng)求被接收的同時(shí),會(huì)有一個(gè)相應(yīng)的Action實(shí)例收到通過(guò)控制器傳來(lái)的Action對(duì)象,當(dāng)然,在進(jìn)行傳遞的時(shí)候也會(huì)判斷有沒(méi)有相應(yīng)的實(shí)例,如果沒(méi)有,同樣應(yīng)該先把相應(yīng)實(shí)例的execute()方法設(shè)計(jì)出來(lái)。

在Struts的框架中,ActionServlet主要承擔(dān)的是中心控制器的角色,會(huì)自動(dòng)地去繼承javax.servlet.http包中的HttpServlet類。為了對(duì)來(lái)自終端的請(qǐng)求及時(shí)響應(yīng),通常它會(huì)把中心的一個(gè)位置給留下來(lái)。ActionServlet控制器所起的主要作用就是把HTTP客戶端的請(qǐng)求信息組合起來(lái),通過(guò)相應(yīng)的已經(jīng)配置好的文件進(jìn)行描述,將其傳遞到相應(yīng)的處理器中。通常,中心控制器會(huì)給所有表示層的請(qǐng)求提供一個(gè)集中的訪問(wèn)點(diǎn)。一旦開(kāi)發(fā)人員在開(kāi)發(fā)過(guò)程中遇到問(wèn)題,只要通過(guò)這個(gè)控制器的一些有關(guān)概念,這些問(wèn)題的困難程度就被有效地降低了,如管理視圖、會(huì)話及表單數(shù)據(jù)。相應(yīng)地,它也具備某些通用機(jī)制,如錯(cuò)誤及異常處理、導(dǎo)航、國(guó)際化、數(shù)據(jù)驗(yàn)證、數(shù)據(jù)轉(zhuǎn)換。

當(dāng)用戶的請(qǐng)求被傳遞到服務(wù)器端的時(shí)候,首先ActionServlet控制器會(huì)獲得相應(yīng)的信息。當(dāng)控制器接收到相關(guān)的請(qǐng)求后,會(huì)把這些請(qǐng)求信息傳遞到相應(yīng)的輔助類中去,此時(shí)這些輔助的類就會(huì)去處理那些相關(guān)的業(yè)務(wù)操作,而這些相關(guān)的操作必須對(duì)應(yīng)用戶的請(qǐng)求。在上面提到的Struts那個(gè)輔助類就是 org.apache.struts. action.Action。一般情況下,開(kāi)發(fā)人員應(yīng)該主動(dòng)去繼承Aciton類,那樣有助于實(shí)現(xiàn)開(kāi)發(fā)人員自己的Action實(shí)例。

2.2 Action

一個(gè)Action類的角色,就是作為行動(dòng)和業(yè)務(wù)邏輯處理適配器之間的客戶端的請(qǐng)求,其主要做的就是需要把它從業(yè)務(wù)邏輯中分離開(kāi)來(lái)。為了實(shí)現(xiàn)這種分離,有映射點(diǎn)存在于多個(gè)客戶請(qǐng)求和Action類之間。通常情況下,Action類還有很多的輔助功能,如:認(rèn)證(授權(quán))、日志(記錄)、數(shù)據(jù)驗(yàn)證(驗(yàn)證)。

Execute()是Action主要使用的方法。當(dāng)客戶發(fā)出的請(qǐng)求被Controller收到的時(shí)候,這個(gè)請(qǐng)求將被移動(dòng)到一個(gè)相應(yīng)的Action實(shí)例中,如果找不到相應(yīng)的實(shí)例,控制器就會(huì)重新創(chuàng)建一個(gè)實(shí)例,然后找到這個(gè)重新創(chuàng)建出來(lái)的Action實(shí)例的execute()方法,再去調(diào)用它。對(duì)于應(yīng)用系統(tǒng)中的Action類來(lái)說(shuō),Struts框架會(huì)為每個(gè)類創(chuàng)建一個(gè)相應(yīng)的實(shí)例。因?yàn)橥粋€(gè)實(shí)例被所有用戶使用,就必須保證在多線程環(huán)境下運(yùn)行客戶的Action類。圖1就是execute()方法如何被訪問(wèn)的過(guò)程:

圖1 Action實(shí)例的execute()方法

2.3 ActionForm

ActionForm主要用于對(duì)用戶的請(qǐng)求參數(shù)進(jìn)行封裝。為了使請(qǐng)求參數(shù)順利地通過(guò)JSP頁(yè)面的表單域,一定要保證表單域的名稱和ActionForm參數(shù)是相同的。同時(shí),要在struts-config.xml文件中對(duì)所有的Action進(jìn)行配置,該文件還包含有表單元素。因而ActionForm中定義的所有元素,都應(yīng)該對(duì)應(yīng)一個(gè)相應(yīng)的表單form-bean元素。

請(qǐng)求對(duì)象的參數(shù)一般被保存在ActionForm派生的對(duì)象中,他們和用戶之間是緊密相關(guān)的。通常,通過(guò)RequestProcessor來(lái)創(chuàng)建出一個(gè)相應(yīng)的ActionForm的類。這是發(fā)生在已經(jīng)完成向前的一個(gè)URL,該URL是映射到控制器servlet而不是JSP和相應(yīng)的動(dòng)作映射指定表單的屬性的。出現(xiàn)這個(gè)情況時(shí),如果在特定的范圍之內(nèi)沒(méi)有發(fā)現(xiàn),RequestProcessor將利用各種可能的方法嘗試著實(shí)現(xiàn)一個(gè)新的ActionForm對(duì)象的表單bean。在特定范圍內(nèi),可利用元素之中的屬性name找到相應(yīng)的ActionForm對(duì)象。此時(shí)RequestProcessor就會(huì)對(duì)表單的屬性進(jìn)行重新設(shè)置,填寫(xiě)表單與請(qǐng)求中的參數(shù),再通過(guò)調(diào)用表單對(duì)象的相關(guān)驗(yàn)證方法,通過(guò)服務(wù)器端對(duì)用戶的有關(guān)輸入進(jìn)行驗(yàn)證。作為一種默認(rèn)的行為,如果想要去調(diào)用一種驗(yàn)證方法,只有給驗(yàn)證ActionMapping對(duì)象的值設(shè)置為true的屬性。如果是g.apache.struts.taglib.html.Errors Tag來(lái)通知用戶驗(yàn)證的結(jié)果是不正確的,那就說(shuō)明此次最終驗(yàn)證的就是一個(gè)ActionErrors對(duì)象。ActionForm還有一個(gè)作用,那就是保存一個(gè)視圖引用的中間模型狀態(tài)給用戶。

如果RequestProcessor查找到了一個(gè)相應(yīng)的表單對(duì)象,它就會(huì)把這個(gè)表單對(duì)象轉(zhuǎn)送給請(qǐng)求處理器相應(yīng)的execute(…)方法。通常,一個(gè)ActionForm對(duì)象也可以通過(guò)請(qǐng)求處理器來(lái)實(shí)現(xiàn)。實(shí)現(xiàn)表單對(duì)象就是為了給中間模型狀態(tài)使用的JSP提供一個(gè)合適的請(qǐng)求范圍,這就可以保證有效期滿后對(duì)象是不存在的。在沒(méi)有特別聲明的情況下,全部表單的保存形式都表現(xiàn)為會(huì)話范圍。在會(huì)話過(guò)程中,如果表單對(duì)象脫離了有效性而獨(dú)立存在,極有可能出現(xiàn)浪費(fèi)內(nèi)存的情況;同時(shí),必須保持相同請(qǐng)求處理器存儲(chǔ)在會(huì)話中的對(duì)象的生命周期的軌道。通過(guò)使用相應(yīng)的表單bean為那些橫跨多個(gè)用戶交互形式的有關(guān)表單來(lái)獲取相應(yīng)的表單數(shù)據(jù)。在進(jìn)行反饋的時(shí)候表單bean可以被用來(lái)保存中間模型的狀態(tài),而這個(gè)狀態(tài)就是通過(guò)自定義標(biāo)簽發(fā)生變化的。盡最大的可能不要使視圖的標(biāo)簽用法和Java代碼相結(jié)合,所以要做好相應(yīng)的工作分工。通常由web制作組來(lái)解決標(biāo)志的有關(guān)問(wèn)題,而由應(yīng)用程序的開(kāi)發(fā)組來(lái)解決Java代碼的相關(guān)問(wèn)題。

3 Struts框架的高級(jí)特性

3.1 驗(yàn)證

通常情況下,不會(huì)對(duì)用戶的輸入進(jìn)行驗(yàn)證,但是,一旦出現(xiàn)下面所描述的情況時(shí),就需要通過(guò)使用表單bean來(lái)進(jìn)行驗(yàn)證: (1)表單bean覆蓋超類的驗(yàn)證方法; (2)元素作為Struts配置文件,它的驗(yàn)證屬性已經(jīng)確定或者將其默認(rèn)的值設(shè)為T(mén)RUE。一般情況下,bean能夠具備的相關(guān)驗(yàn)證也是針對(duì)那些比較起來(lái)不是很難的問(wèn)題,因?yàn)閎ean中通常就沒(méi)有那些與業(yè)務(wù)邏輯有關(guān)的應(yīng)用程序的信息。比如,是否每個(gè)用戶都在必需的字段中輸入了相應(yīng)的數(shù)據(jù)?Struts框架的各個(gè)組成部分可以進(jìn)行核查。

3.2 使用異常處理聲明

如果要對(duì)應(yīng)用程序的相關(guān)邏輯流程進(jìn)行定義,不要通過(guò)寫(xiě)死在代碼中來(lái)實(shí)現(xiàn),這是一個(gè)較成熟的經(jīng)驗(yàn),通常推薦使用的是在代碼以外通過(guò)使用配置的方法來(lái)進(jìn)行。這樣的例子在J2EE中是非常多的。從實(shí)現(xiàn)EJB的安全性和事務(wù)性行為到描述JMS消息和目的地之間的關(guān)系,很多時(shí)候都可以在程序以外對(duì)其運(yùn)行時(shí)的有關(guān)處理流程進(jìn)行定義。在先前版本的Struts框架中,開(kāi)發(fā)人員必須自己來(lái)處理在Struts應(yīng)用之中發(fā)生錯(cuò)誤的情況。在最新的版本中,這一點(diǎn)已經(jīng)得到了很大的改善。其中,為了便于在系統(tǒng)缺省處理action類實(shí)施過(guò)程中出現(xiàn)的錯(cuò)誤,Struts Framework通常會(huì)提供一個(gè)內(nèi)置的名為ExceptionHandler的類來(lái)實(shí)現(xiàn)。這作為一個(gè)技巧,也是很多有關(guān)framework可擴(kuò)展的接口之一。

通常,作為Struts的默認(rèn)異常處理程序類,其運(yùn)行的結(jié)果就是生成一個(gè)相應(yīng)的ActionError對(duì)象,與此同時(shí),還應(yīng)注意要把其保存在特定域內(nèi)(Scope)的對(duì)象之中。如果用戶遇到一系列相關(guān)的問(wèn)題,可通過(guò)使用JSP頁(yè)面利用錯(cuò)誤類來(lái)告訴用戶所發(fā)生的問(wèn)題。這樣,如果用戶還不滿意的話,可以輕易地去實(shí)現(xiàn)屬于自己的ExcepionHandler類。

3.3 使用應(yīng)用模塊

由于應(yīng)用模塊這個(gè)概念的出現(xiàn),Struts的應(yīng)用可以被劃分為不同的模塊,而各個(gè)模塊都有屬于自己的Struts配置文件,如JSP頁(yè)面和Action。這個(gè)功能非常好地解決了開(kāi)發(fā)人員在開(kāi)發(fā)過(guò)程中遇到的一些難以處理的問(wèn)題。允許同時(shí)出現(xiàn)多個(gè)配置文件,解決了文件配置單一的問(wèn)題,使得并行開(kāi)發(fā)更加可行。如果應(yīng)用模塊同意,Struts可以按照應(yīng)用系統(tǒng)本身所具有的功能對(duì)這些相應(yīng)的模塊進(jìn)行分解。實(shí)踐證明這樣是最符合邏輯的,也是最好的。

如果沒(méi)有必要將一個(gè)項(xiàng)目劃分成為很多模塊,一個(gè)缺省的應(yīng)用模塊會(huì)被Struts框架所支持。這樣,就能創(chuàng)建相關(guān)的應(yīng)用程序,且該應(yīng)用程序還具有較好的可移植性,因?yàn)閼?yīng)用程序會(huì)自動(dòng)作為缺省的應(yīng)用模塊。每一個(gè)Struts的應(yīng)用模塊都應(yīng)該設(shè)計(jì)好一個(gè)屬于自己的單獨(dú)的配置文件。創(chuàng)建的Action和ActionForm是屬于自己的且和其他模塊是相對(duì)獨(dú)立的,對(duì)異常處理而言那是更多的。在每個(gè)應(yīng)用模塊創(chuàng)建好屬于自己獨(dú)立的配置文件后,各個(gè)模塊中的Action就應(yīng)該準(zhǔn)備好被調(diào)用了。因而,Struts框架所準(zhǔn)備好的SwitchAction類就被用到了。同時(shí),應(yīng)用模塊的名字也會(huì)被Struts主動(dòng)加入到URL中,就和應(yīng)用程序的名字被Struts主動(dòng)加入到URL中是一樣的。作為對(duì)框架新的擴(kuò)展的應(yīng)用模塊,它是非常有利于使用并行方式的團(tuán)隊(duì)開(kāi)發(fā)的。如果團(tuán)隊(duì)是非常小的,那就沒(méi)必要用到這個(gè)特性了,也沒(méi)有必要使用模塊化了。當(dāng)然,就算是只有一個(gè)應(yīng)用模塊,系統(tǒng)還是一樣應(yīng)該正常地運(yùn)作。

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

[2]李智淵.采用Struts框架實(shí)現(xiàn)MVC設(shè)計(jì)模式[J].甘肅科技縱橫,2005(4):13-14.

[3]蔡劍,景楠.Java Web應(yīng)用開(kāi)發(fā):J2EE和Tomcat[M].2版.北京:清華大學(xué)出社,2005.

Technical Overview of the Struts Framework

WANG Gang
(Information Engineering Department of Shanxi Technical College of Finance&Economics, Xianyang 712000,China)

This article briefly introduces the Struts framework and related contents,and mainly discusses the components and advanced features of the Struts framework.

Struts framework;components of Struts framework;advanced features of Struts framework

TP312

A

1008-178X(2012)09-0025-04

2012-02-03

王 剛(1978-),男,陜西咸陽(yáng)人,陜西財(cái)經(jīng)職業(yè)技術(shù)學(xué)院信息工程系講師,從事計(jì)算機(jī)應(yīng)用研究。

猜你喜歡
表單開(kāi)發(fā)人員實(shí)例
電子表單系統(tǒng)應(yīng)用分析
華東科技(2021年9期)2021-09-23 02:15:24
Semtech發(fā)布LoRa Basics 以加速物聯(lián)網(wǎng)應(yīng)用
淺談網(wǎng)頁(yè)制作中表單的教學(xué)
讓W(xué)indows 10進(jìn)入開(kāi)發(fā)者模式
電腦迷(2015年12期)2015-04-29 23:22:51
后悔了?教你隱藏開(kāi)發(fā)人員選項(xiàng)
完形填空Ⅱ
完形填空Ⅰ
基于Infopath實(shí)現(xiàn)WEB動(dòng)態(tài)表單的研究
電子世界(2012年24期)2012-12-17 10:49:06
動(dòng)態(tài)表單技術(shù)在教學(xué)管理中的應(yīng)用*
三星SMI擴(kuò)展Java論壇 開(kāi)發(fā)人員可用母語(yǔ)
阿克苏市| 罗田县| 瑞丽市| 顺昌县| 松潘县| 巧家县| 定日县| 澄江县| 明溪县| 门头沟区| 皮山县| 甘肃省| 文成县| 新乡市| 古浪县| 富阳市| 内乡县| 黄石市| 宜宾县| 固原市| 泾川县| 剑阁县| 什邡市| 高陵县| 襄樊市| 郯城县| 白城市| 澄城县| 菏泽市| 竹北市| 连南| 思茅市| 乐至县| 星子县| 秦安县| 神农架林区| 乳山市| 阳东县| 彭州市| 元阳县| 绥芬河市|