版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 由金·海伊馮,Java 技術(shù)顧問(wèn)馬克·羅斯,</p><p> JavaServerPages 2.0 說(shuō)明 公司領(lǐng)導(dǎo)</p><p><b> 2003年2月 </b></p><p> 作為JavaServer Pages(JSP)技術(shù)正變得被廣泛地在網(wǎng)上的應(yīng)用過(guò)程中采用, 很多JSP 程序員
2、和從事于網(wǎng)絡(luò)開(kāi)發(fā)與維護(hù)這些網(wǎng)絡(luò)用途的開(kāi)發(fā)者面臨著一個(gè)左右為難的窘境,這和許多JAVA程序員面臨的窘境是一樣的,就是:"我們?cè)鯓咏M織JSP 代碼,使它容易讀寫(xiě)并且一貫保持?"</p><p> 在這篇文章里, 我們?yōu)閷?xiě)JSP 頁(yè)(第1.1 版本和1.2)提出一套標(biāo)準(zhǔn)協(xié)定,那應(yīng)該由使用網(wǎng)組成部分的一項(xiàng)典型的軟件項(xiàng)目遵循。文章依據(jù)了一個(gè)JAVA程序語(yǔ)言模板的編碼協(xié)定,這種協(xié)議用作鑒定各種各樣的重要
3、的元素, 那種元素應(yīng)該被在一種編碼的協(xié)定說(shuō)明(對(duì)JSP 技術(shù)相關(guān))過(guò)程中提出。 尤其, 它地址文件名字和組織,凹口,說(shuō)明,指令,申明,scriptlets,表達(dá)方式,白色的空間,命名約定和編程慣例。 因?yàn)檫@在提出一套JSP編碼約定時(shí)是我們的第一個(gè)嘗試, 你對(duì)這些建議的任何反饋對(duì)于我們都十分感興趣。 請(qǐng)把全部反饋送到j(luò)sp-codeconv-comments@sun.com。</p><p> JavaServe
4、r第2.0 頁(yè)說(shuō)明, 當(dāng)有第1.2 版本完全向后相容時(shí), 考慮到一種無(wú)書(shū)寫(xiě)的編程風(fēng)格(如果沒(méi)有申明,scriptlets和表達(dá)方式)和有許多新特征預(yù)計(jì)逐步形成這些約定。 可能的話,這篇文章選擇將調(diào)控新JSP的約定為2.0個(gè)技術(shù)特征。 </p><p> 最后,我們假定你象已經(jīng)為你的工程由你的組織采用的那樣熟悉JSP 技術(shù),Java 技術(shù)和Java 代碼約定。 如果不,我們推薦你從在這里的Java 技術(shù)和在這里的
5、JSP 技術(shù)開(kāi)始。 </p><p> 為什么有代碼約定? </p><p> 代碼約定的許多原因?qū)Τ绦騿T和網(wǎng)內(nèi)容開(kāi)發(fā)者來(lái)說(shuō)是重要的: </p><p> 他們改進(jìn)軟件人工制品的易讀性,</p><p> 他們降低訓(xùn)練管理和努力 </p><p> 他們的機(jī)構(gòu)化的約定朝著標(biāo)準(zhǔn)化平衡</p>&l
6、t;p><b> 文件的名字和位置</b></p><p> 命名文件給工具賣(mài)方和網(wǎng)絡(luò)容器一種方法來(lái)決定文件的類型和相應(yīng)的說(shuō)明他們</p><p> 下述表格列舉我們建議的文件后綴和位置。 </p><p> 文件類型文件后綴推薦位置</p><p> JSP 技術(shù) .jsp <context ro
7、ot>/<subsystem path>/ </p><p> JSP碎片 .jsp<context root>/<subsystem path>/ </p><p> .jspf<context root>/WEB-INF/jspf/<subsystem path>/ </p><p>
8、 級(jí)聯(lián)樣式表 .css <context root>/css/ </p><p> JavaScript 技術(shù) .js <context root>/js/ </p><p> HTML網(wǎng)頁(yè) .html <context root>/<subsystem path>/ </p><p> 網(wǎng)絡(luò)資源 .gi
9、f, .jpg, etc. <context root>/images/ </p><p> 標(biāo)記庫(kù)描述符 .tld <context root>/WEB-INF/tld/ </p><p> 當(dāng)讀上面的表格時(shí),有一些事情記住。 首先,<context root>是網(wǎng)絡(luò)應(yīng)用(在一個(gè).war 文件里面的根目錄)的上下文的根。 其次,<subs
10、ystem path>用來(lái)提供精煉的動(dòng)態(tài)和靜止的網(wǎng)頁(yè)內(nèi)容的邏輯組。 對(duì)小型網(wǎng)絡(luò)應(yīng)用來(lái)說(shuō),這可能是一根空的串 。</p><p> 第三,我們使用術(shù)語(yǔ)JSP碎片指的是能被歸入另一JSP 網(wǎng)頁(yè)的一JSP 網(wǎng)頁(yè)。 在JSP 2.0 說(shuō)明里注意到,術(shù)語(yǔ)"JSP程序段"被改為使用作為術(shù)語(yǔ)"JSP碎片"被超載。 JSP碎片能使用.jsp或者.jspf作為后綴, 并且能分別被安置
11、或者在/WEB-INF/ jspf或者有其余靜止內(nèi)容。 并非整頁(yè)總是使用那些后綴.jspf的JSP的碎片應(yīng)該總能被安置在/WEB-INF/ jspf。第4, 雖然JSP 說(shuō)明為JSP碎片建議.jspf和.jsp為可能的擴(kuò)展, 我們推薦.jspf同.jsf可能被JavaServer Faces詳細(xì)提出使用。</p><p> 最后, 這是一個(gè)通常的方法通常,就是安置描述符庫(kù)的描述符文件和任何其他非公眾內(nèi)容在WEB
12、-INF/或者隸屬于它的子目錄之下的方法。 以這種方法,那些內(nèi)容對(duì)于那些客戶將越來(lái)越不易于接近和看不見(jiàn) ,因?yàn)槟切┚W(wǎng)絡(luò)存儲(chǔ)器將不為隸屬于WEB-INF/的任何文件提供服務(wù)。 </p><p> 一個(gè)可選擇的受歡迎的文件的名字, 象在部署描述符(web.xml)的受歡迎文件的要素里申明的那樣, 如果將產(chǎn)生動(dòng)態(tài)的內(nèi)容,應(yīng)該是index.jsp,或者如果受歡迎的頁(yè)網(wǎng)是靜止的,則是index.html。</p&g
13、t;<p> 當(dāng)使JSP 文件國(guó)際化時(shí),我們推薦你通過(guò)他們的地點(diǎn)把JSP 頁(yè)把歸類進(jìn)目錄。 例如,英文版的index.jsp將出現(xiàn)在下/en_US/ index.jsp而那些日本版本的相同文件的出現(xiàn)將在/ja _ JP / index.jsp下。 通常,Java指導(dǎo)課提供關(guān)于使Java 代碼國(guó)際化的附加信息, 并且那些利用J2EE 平臺(tái)預(yù)先設(shè)計(jì)計(jì)劃的申請(qǐng)書(shū)為企業(yè)提供關(guān)于網(wǎng)應(yīng)用的國(guó)際化的信息。</p><
14、;p><b> 文件組織</b></p><p> 一個(gè)好的結(jié)構(gòu)的源頭代碼文件不僅容易讀,并且更迅速的在文件內(nèi)部安置信息。 在下面的部分,我們將介紹關(guān)于JSP和標(biāo)記庫(kù)描述符文件的結(jié)構(gòu)。 </p><p> JSP 文件/ JSP碎片文件</p><p> 一個(gè)JSP文件由以下部分組成,這些部分按順序列出: </p>
15、<p><b> 公開(kāi)的注釋</b></p><p><b> JSP 網(wǎng)頁(yè)指令</b></p><p><b> 可選擇的標(biāo)簽庫(kù)指令</b></p><p> 可選擇的JSP 文件申明</p><p> HTML 和JSP 代碼</p>&l
16、t;p><b> 公開(kāi)的注釋</b></p><p> 一個(gè)JSP文件或者碎片文件用一個(gè)服務(wù)器方面風(fēng)格的注釋開(kāi)始</p><p><b> <%-- </b></p><p> - Author(s):</p><p><b> - Date:</b>&l
17、t;/p><p> - Copyright Notice:</p><p><b> - @(#)</b></p><p> - Description: </p><p><b> --%></b></p><p> 這條注釋只在服務(wù)器方面是可見(jiàn)的,因?yàn)樗贘S
18、P網(wǎng)頁(yè)面轉(zhuǎn)換期間被除去。 在這條注釋內(nèi)是作者,日期和修正的版權(quán)申明, 關(guān)于網(wǎng)開(kāi)發(fā)者的JSP 頁(yè)的一個(gè)標(biāo)識(shí)符和描述。這些"@(#)" 特點(diǎn)的結(jié)合被確定的程序作為指明標(biāo)識(shí)符的開(kāi)始辨認(rèn)。 當(dāng)這樣的程序很少被使用時(shí),使用這個(gè)串是沒(méi)有害處。 另外, 這結(jié)合有時(shí)添加"$Id$"作為鑒定信息自動(dòng)被插入JSP 網(wǎng)頁(yè)中, 以一些版本控制程序。 說(shuō)明部分提供簡(jiǎn)明的關(guān)于JSP 頁(yè)的目的的信息。 它不止持續(xù)一個(gè)段落。&l
19、t;/p><p> 在有些情況下, 公開(kāi)的注釋需要在翻譯期間被保留并且真實(shí)性和有法律目的傳播到客戶端(對(duì)一個(gè)瀏覽器可見(jiàn))。 這可能通過(guò)使注釋塊分裂成兩個(gè)部分被取得; 首先,客戶端風(fēng)格的注釋: </p><p><b> <!--</b></p><p> - Author(s):</p><p><b>
20、; - Date:</b></p><p> - Copyright Notice:</p><p><b> --></b></p><p> 以及一條更短的服務(wù)器端風(fēng)格的注釋: </p><p><b> <%-- </b></p><p&g
21、t;<b> - @(#)</b></p><p> - Description: </p><p><b> --%></b></p><p><b> JSP 網(wǎng)頁(yè)指令</b></p><p> 一個(gè)JSP網(wǎng)頁(yè)的指令在翻譯同時(shí)給與JSP 網(wǎng)頁(yè)相關(guān)的確定的指令
22、下定義。 JSP 說(shuō)明不把限制條件強(qiáng)加給那JSP 頁(yè)指令可能被在相同的頁(yè)內(nèi)確定。 因此(除了第一個(gè)例子在輸出的時(shí)候以兩行額外的空白行作為開(kāi)頭),以下的二個(gè)代碼例子相等: </p><p><b> 代碼樣品1: </b></p><p> <%@ page session="false" %></p><p>
23、; <%@ page import="java.util.*" %></p><p> <%@ page errorPage="/common/errorPage.jsp" %></p><p> 如果任何指令的長(zhǎng)度, 例如一指令的頁(yè),超過(guò)一個(gè)JSP 頁(yè)(80 個(gè)字符)的正常寬度,指令插入多產(chǎn)品: 代碼樣品2: <
24、/p><p> <%@ page session="false" </p><p> import="java.util.*"</p><p> errorPage="/common/errorPage.jsp" </p><p><b> %><
25、;/b></p><p> 通常,例子2 對(duì)于指令的頁(yè)的代碼樣品來(lái)說(shuō)比代碼第1 樣品是更好的選擇適合確定。 當(dāng)復(fù)雜的JAVA包需要被輸入到JSP 頁(yè)時(shí),一個(gè)例外發(fā)生,導(dǎo)致非常長(zhǎng)時(shí)間的輸入把歸于: </p><p> <%@ page session="false"</p><p> import="java.ut
26、il.*,java.text.*,</p><p> com.mycorp.myapp.taglib.*,</p><p> com.mycorp.myapp.sql.*, ..."</p><p><b> ...</b></p><p><b> %></b></p
27、><p> 在這情況內(nèi),象下面一樣拆解這頁(yè)指令更合適: </p><p> <%-- all attributes except import ones --%></p><p><b> <%@ page </b></p><p><b> ...</b></p>
28、<p><b> %></b></p><p> <%-- import attributes start here --%></p><p> <%@ page import="java.util.*" %></p><p> <%@ page import=&qu
29、ot;java.text.*" %></p><p><b> ...</b></p><p> 注意到通常,輸入陳述遵循地方代碼約定給JAVA技術(shù)。 例如, 當(dāng)能達(dá)到來(lái)自相同的包的3 種種類被使用時(shí),它可能一般被接受為那個(gè), 輸入應(yīng)該申明具體的獨(dú)特的類,而不是他們的包裹。 超出3 種種類,決定是分別列舉那些種類還是使用\是一個(gè)網(wǎng)開(kāi)發(fā)者的責(zé)任&qu
30、ot;。 *\"表達(dá)式。 在以前例子中, 鑒定一種外部種類使生活更容易, 特別是當(dāng)你努力找到一種輕便馬車(chē)種類或者理解JSP 頁(yè)怎樣與Java 代碼相互作用時(shí)。 例如, 不通知被輸入的JAVA包就象如下所示的那樣, 為了找到一種用戶種類,一個(gè)網(wǎng)開(kāi)發(fā)者必須通過(guò)所有這些包搜尋: </p><p> <%@ page import="com.mycorp.bank.savings.*"
31、; %></p><p> <%@ page import="com.thirdpartycorp.cashmanagement.*" %></p><p> <%@ page import="com.mycorp.bank.foreignexchange.*" %></p><p><
32、b> ...</b></p><p> 在后面例子中,書(shū)面JSP 頁(yè)更整潔,但是找到種類是難的。 通常,如果一JSP 頁(yè)有太多輸入指令,它很可能包含太多Java 代碼。 更好的選擇將是使用更多的JSP 標(biāo)簽(在這篇文章里過(guò)后討論)。 可選擇標(biāo)簽庫(kù)一指令的標(biāo)簽庫(kù)申明風(fēng)俗標(biāo)簽庫(kù)以JSP 頁(yè)使用的指令(s)。 短的指令被在一條單個(gè)的線內(nèi)申明。 多標(biāo)簽庫(kù)指令在JSP \ 頁(yè)內(nèi)在相同的位置一同被堆積&
33、#39;身體: </p><p> <%@ taglib uri="URI1" prefix="tagPrefix1" %></p><p> <%@ taglib uri="URI2" prefix="tagPrefix2" %></p><p><b
34、> ...</b></p><p> 正象用指令頁(yè), 一指令的標(biāo)簽庫(kù)的長(zhǎng)度超過(guò)一JSP 頁(yè)(80 字符)的正常寬度如果,指令插入多產(chǎn)品:</p><p> <%@ taglib </p><p> uri="URI2" </p><p> prefix="tagPrefix2&q
35、uot; </p><p><b> %></b></p><p> 只正被在一頁(yè)里使用的標(biāo)簽庫(kù)應(yīng)該被輸入。</p><p> 從JSP 1.2 說(shuō)明, 非常推薦JSP標(biāo)準(zhǔn)標(biāo)簽庫(kù)(JSTL)被在幫助降低對(duì)JSP scriptlets的需要的你的網(wǎng)申請(qǐng)內(nèi)使用, 在你的頁(yè)里。 使用JSTL的頁(yè),通常,容易讀并且保持。 </p>
36、;<p> 可選擇的JSP 申明</p><p> 申明JSP 申明通過(guò)一JSP 頁(yè)擁有的方法和變量。 這些方法和變量在JAVA編程語(yǔ)言不不同于申明, 因此相關(guān)的代碼約定應(yīng)該被跟隨。 申明被喜歡被包含在單人房里<百分之! ...百分之>塊申明JSP,集中' 身體s在那些\ 頁(yè)JSP的一個(gè)地區(qū)內(nèi)的申明。 這是一個(gè)例子: Disparate declaration blocks
37、Preferred declaration block </p><p> <%! private int hitCount; %></p><p> <%! private Date today; %></p><p><b> ...</b></p><p> <%! pu
38、blic int getHitCount() {</p><p> return hitCount;</p><p><b> }</b></p><p><b> %></b></p><p><b> <%! </b></p><p&
39、gt; private int hitCount;</p><p> private Date today; </p><p> public int getHitCount() {</p><p> return hitCount;</p><p><b> }</b></p><p>
40、;<b> %></b></p><p> HTML 和JSP 代碼</p><p> 這部分的JSP 頁(yè)包括JSP網(wǎng)頁(yè)HTML主體和JSP代碼,如JSP的表達(dá)式,字體,和JavaBeans的說(shuō)明。 </p><p><b> 標(biāo)簽庫(kù)描述符</b></p><p> 標(biāo)簽庫(kù)描述符(T
41、LD)文件必須以合適的XML申明和正確的DTD描述開(kāi)頭。 例如,一JSP 1.2 TLD 文件必須以下面為開(kāi)始: </p><p> <?xml version="1.0" encoding="ISO-8859-1" ?></p><p> <!DOCTYPE taglib</p><p> PUBLI
42、C "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"</p><p> "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"></p><p> 這立即隨后有一條服務(wù)器方面風(fēng)格的意見(jiàn),列舉作者,日期,版權(quán),鑒定信息, 以及關(guān)于庫(kù)
43、的短的描述: </p><p><b> <!--</b></p><p> - Author(s):</p><p><b> - Date:</b></p><p> - Copyright Notice:</p><p><b> - @(#)
44、</b></p><p> - Description:</p><p><b> --></b></p><p> 使用這些要素為指南的規(guī)章和指導(dǎo)方針與關(guān)于對(duì)為JSP 文件/碎片文件定義的那些是一樣的。</p><p> 文檔剩下部分包含以下部分,以它們出現(xiàn)的順序?yàn)樾颍?lt;/p>
45、<p> 對(duì)正確的標(biāo)簽庫(kù)的可選擇的申明</p><p> 對(duì)事件響應(yīng)者的可選擇的申明</p><p> 對(duì)一個(gè)或多個(gè)激活的標(biāo)簽的申明</p><p> 建議你為T(mén)LD文檔的要素加入以下可選擇的副要素。這些副要素為標(biāo)簽設(shè)計(jì)者提供地址記錄來(lái)記錄行為和額外的TLD文檔的信息,然后對(duì)網(wǎng)絡(luò)部分開(kāi)發(fā)者開(kāi)放它們。</p><p> JS
46、P1.2建議TLD要素</p><p> JSP1.1建議副要素</p><p><b> 副要素</b></p><p> 性質(zhì)描述(JSP1.2)</p><p> 開(kāi)始程序描述(JSP1.2)</p><p> 標(biāo)簽顯示名稱,描述,例子名,信息</p><p&g
47、t; taglib uri,顯示名稱,uri描述,信息</p><p> 正確描述(JSP1.2)</p><p> 多種描述(JSP1.2)</p><p><b> 首行縮排</b></p><p> 缺口必須被空格符填滿。標(biāo)簽符引起不同編輯者對(duì)空格符的不同理解,不能在JSP頁(yè)面里使用缺口。除非被特殊集成開(kāi)
48、發(fā)環(huán)境(IDE)工具限制.這兒是一個(gè)例子: </p><p> <myTagLib:forEach var="client" items="${clients}"></p><p> <myTagLib:mail value="${client}" /></p><p> &l
49、t;/myTagLib:forEach></p><p> 持續(xù)缺口會(huì)使前一行里固有的點(diǎn)調(diào)整隨后一系列阻塞。持續(xù)缺口是正常缺口復(fù)合的單元(多組的4空符):</p><p> <%@ page attribute1="value1" </p><p> attribute2="value2"</p&
50、gt;<p><b> ...</b></p><p> attributeN="valueN" </p><p><b> %></b></p><p><b> 正本要素的缺口</b></p><p> 當(dāng)一個(gè)JSP正本要素
51、(如申明、正本、表達(dá)式)不適合單行,則采用的正本語(yǔ)言缺口條約適合要素主體。主體從同一行開(kāi)始以要素標(biāo)記<%=開(kāi)頭,開(kāi)始新的一行也是以<%=開(kāi)頭。主體然后以結(jié)束標(biāo)記(%>)在單獨(dú)一行表示結(jié)束。如:</p><p> <%= (Calendar.getInstance().get(Calendar.DAY_OF_WEEK)</p><p> =Calendar.SUN
52、DAY) ? </p><p> "Sleep in" : </p><p> "Go to work" </p><p><b> %></b></p><p> JSP,HTML和Java的混合缺口。</p><p> 因?yàn)镴SP要素混合
53、著Java代碼和暫時(shí)文檔,混和缺口對(duì)于降低理解JSP來(lái)源文件是必要的。這是因?yàn)樾问缴系恼5娜笨诳赡苁箍匆?jiàn)JSP源文件很困難。作為普遍規(guī)則,對(duì)每個(gè)在另外被引用的要素要使用一個(gè)多余的正常缺口單元。注意這會(huì)改變客戶端的最終輸出的缺口致使顯示。然而多余的缺口經(jīng)常被瀏覽器忽略,致使瀏覽器上的輸出無(wú)效。例如,在TABLE標(biāo)簽前加入多個(gè)空格不會(huì)改變表格的位置。所以,采用這種缺口形式能使之看上去更好看。 </p><p>&l
54、t;b> <table></b></p><p> <% if ( tableHeaderRequired ) { %></p><p><b> <tr></b></p><p> <th>Last Name</th></p><p&g
55、t; <th>First Name</th></p><p><b> </tr></b></p><p><b> <% } %></b></p><p> <c:forEach var="customer" items="${
56、customers}"></p><p><b> <tr></b></p><p> <td><c:out value="${customer.lastName}"/></td></p><p> <td><c:out value=&q
57、uot;${customer.firstName}"/></td></p><p><b> </tr></b></p><p> </c:forEach></p><p><b> </table></b></p><p>&l
58、t;b> 比這種要好: </b></p><p><b> <table></b></p><p> <% if ( tableHeaderRequired ) { %></p><p><b> <tr></b></p><p>
59、<th>Last Name</th></p><p> <th>First Name</th></p><p><b> </tr></b></p><p><b> <% } %></b></p><p> <c
60、:forEach var="customer" items="${customers}"></p><p><b> <tr></b></p><p> <td><c:out value="${customer.lastName}"/></td><
61、;/p><p> <td><c:out value="${customer.firstName}"/></td></p><p><b> </tr></b></p><p> </c:forEach></p><p><b>
62、 </table></b></p><p><b> 標(biāo)注</b></p><p> 標(biāo)注謹(jǐn)慎的被用來(lái)描述多余的信息或者周?chē)a的目的。這里我們看一下兩種JSP文檔的標(biāo)注:JSP和客戶端的評(píng)注。</p><p><b> JSP標(biāo)注</b></p><p> JSP標(biāo)
63、注(也稱為服務(wù)端評(píng)注)只對(duì)服務(wù)端可視(也就是客戶端是無(wú)法看見(jiàn))。純JSP標(biāo)注要比用scripting語(yǔ)言寫(xiě)的JSP標(biāo)注更好,因?yàn)榍罢卟淮笠蕾囉诨镜膕cripting語(yǔ)言,更容易演變成JSP2.0類型的頁(yè)面。接下來(lái)的表格說(shuō)明了:</p><p> 用scripting語(yǔ)言標(biāo)注的JSP,JSP純標(biāo)注行</p><p> 單行 <% /** ... */ %></
64、p><p> <% /* ... */ %></p><p> <% // ... %> </p><p> <%-- ... --%></p><p><b> 多行 <% </b></p><p><b> /*
65、</b></p><p><b> *</b></p><p><b> ...</b></p><p><b> *</b></p><p><b> */ </b></p><p><b> %&
66、gt;</b></p><p><b> <%--</b></p><p><b> -</b></p><p><b> ...</b></p><p><b> -</b></p><p><b&
67、gt; -- %></b></p><p><b> <% </b></p><p><b> //</b></p><p><b> //</b></p><p><b> ...</b></p><
68、p><b> //</b></p><p><b> %></b></p><p><b> 客戶端的標(biāo)注</b></p><p> 客戶端的標(biāo)注(<!-- ... -->)能被用來(lái)注解發(fā)給用戶關(guān)于反饋的多余信息的反應(yīng)。不應(yīng)該包含服務(wù)端申請(qǐng)或引起反應(yīng)的代碼的行為和內(nèi)部結(jié)
69、構(gòu)的信息。</p><p> 使用客戶端標(biāo)注通常不被鼓勵(lì),因?yàn)榭蛻?用戶不需要讀這些標(biāo)注只要能直接把收到的反饋翻譯過(guò)來(lái)。真實(shí)性和合法性的目的是例外如辨認(rèn)版權(quán)信息像上面描述的。另一個(gè)例外就是HTML作者使用少量HTML標(biāo)注能體現(xiàn)HTML文檔結(jié)構(gòu)的方針。如: </p><p> <!-- toolbar section --></p><p><b
70、> ...</b></p><p> <!-- left-hand side navigation bar --></p><p><b> ...</b></p><p> <!-- main body --></p><p><b> ...</b&
71、gt;</p><p> <!-- footer --></p><p><b> ...</b></p><p><b> 多行標(biāo)注阻塞</b></p><p> 一個(gè)多行標(biāo)注阻塞,無(wú)論它是JSP還是客戶端,由短橫線“-”標(biāo)記。在XML說(shuō)明書(shū)里,雙橫線“——”不允許出現(xiàn)在XML
72、評(píng)注阻塞中。所以,為了和這個(gè)說(shuō)明書(shū)相容和一貫,沒(méi)有雙橫線用在多行評(píng)注阻塞點(diǎn)綴評(píng)論行中。下面的表格顯示了使用客戶端評(píng)注的優(yōu)勢(shì)。</p><p><b> <!--</b></p><p><b> - line 1</b></p><p><b> - line 2</b></p>
73、;<p><b> ...</b></p><p><b> --></b></p><p><b> <!--</b></p><p><b> -- line 1</b></p><p><b> -- l
74、ine 2</b></p><p><b> ...</b></p><p><b> --></b></p><p><b> JSP申明</b></p><p> 每個(gè)Java代碼段,相同類型變量的申明應(yīng)該在不同的行:</p><
75、;p> 不建議 <%! private int x, y; %></p><p> <%! private int x; %></p><p> <%! private int y; %></p><p> JavaBeans的組成部分不需要申明和使用JSP申明例子但要使用<jsp:useBean>
76、激活標(biāo)簽。</p><p> 總的來(lái)說(shuō),JSP對(duì)變量的申明不提倡因?yàn)樗麄儗?dǎo)致使用scripting語(yǔ)言引起買(mǎi)賣(mài)邏輯波動(dòng)和Java代碼進(jìn)入JSP頁(yè)面,而該頁(yè)面設(shè)計(jì)用來(lái)展示目的的,由于全局掌握變量的范圍。</p><p> JSP Scriptlets</p><p> 無(wú)論標(biāo)簽庫(kù)是否提供公式功能只要有可能就避免使用JSP scriptlets。這能使頁(yè)面更容易讀
77、和保持,幫助從表現(xiàn)邏輯中區(qū)分事務(wù)邏輯,將會(huì)使你的頁(yè)面更易發(fā)展成JSP2.0版本的頁(yè)面(JSP2.0版本支持但不強(qiáng)調(diào)使用scriptlets)。在下面的例子,每個(gè)數(shù)據(jù)類型代表顧客,不同的scriptlet應(yīng)該這樣寫(xiě):</p><p> 客戶作為Customers數(shù)組</p><p><b> <table></b></p><p>
78、; <% for ( int i=0; i<customers.length; i++ ) { %></p><p><b> <tr></b></p><p> <td><%= customers[i].getLastName() %></td></p><p> &
79、lt;td><%= customers[i].getFirstName() %></td></p><p><b> </tr></b></p><p><b> <% } %></b></p><p><b> </table></
80、b></p><p><b> 客戶端作為計(jì)數(shù)</b></p><p><b> <table></b></p><p> <% for ( Enumeration e = customers.elements();</p><p> e.hasMoreElemen
81、ts(); ) { </p><p> Customer customer = (Customer)e.nextElement();</p><p><b> %></b></p><p><b> <tr></b></p><p> <td><%= cu
82、stomer.getLastName() %></td></p><p> <td><%= customer.getFirstName() %></td></p><p><b> </tr></b></p><p><b> <% } %><
83、/b></p><p><b> </table></b></p><p> 不過(guò),如果一座共同標(biāo)簽庫(kù)被使用,在使用用戶的不同的類型方面有一種更高的靈活性。 例如,在JSP內(nèi),標(biāo)準(zhǔn)標(biāo)簽庫(kù),JSP 代碼的下列部分將支持兩個(gè)陣列兩個(gè)列舉用戶的表現(xiàn): </p><p><b> <table></b
84、></p><p> <c:forEach var="customer" items="${customers}"></p><p><b> <tr></b></p><p> <td><c:out value="${customer.la
85、stName}"/></td></p><p> <td><c:out value="${customer.firstName}"/></td></p><p><b> </tr></b></p><p> </c:forEach>
86、;</p><p><b> </table></b></p><p> 不過(guò),如果一座共同標(biāo)簽庫(kù)被使用,在使用用戶的不同的類型方面有一種更高的靈活性。 例如,在JSP內(nèi),標(biāo)準(zhǔn)標(biāo)簽庫(kù),JSP 代碼的下列部分將支持兩個(gè)陣列兩個(gè)列舉用戶的表現(xiàn): </p><p><b> <%</b></p>
87、;<p> // NOT RECOMMENDED TO BE DONE AS A SCRIPTLET!</p><p> Connection conn = null;</p><p><b> try {</b></p><p> // Get connection</p><p> Initi
88、alContext ctx = new InitialContext();</p><p> DataSource ds = (DataSource)ctx.lookup("customerDS");</p><p> conn = ds.getConnection();</p><p> // Get customer names<
89、/p><p> Statement stmt = conn.createStatement();</p><p> ResultSet rs = stmt.executeQuery("SELECT name FROM customer");</p><p> // Display names</p><p> whil
90、e ( rs.next() ) {</p><p> out.println( rs.getString("name") + "<br>");</p><p><b> }</b></p><p> } catch (SQLException e) {</p><p&
91、gt; out.println("Could not retrieve customer names:" + e);</p><p> } finally {</p><p> if ( conn != null ) </p><p> conn.close();</p><p><b> }</
92、b></p><p><b> %></b></p><p> JSP 代碼的下列部分更好, 作為代表它那些與數(shù)據(jù)庫(kù)那兒相互作用在myTags 標(biāo)簽?zāi)切╋L(fēng)俗:隱藏那些從屬性的那些它實(shí)施的代碼數(shù)據(jù)庫(kù)的密封并且的dataSource: </p><p> <myTags:dataSource</p><p
93、> name="customerDS"</p><p> table="customer" </p><p> columns="name"</p><p> var="result" /></p><p> <c:forEach va
94、r="row" items="${result.rows}"></p><p> <c:out value="${row.name}" /></p><p><b> <br /></b></p><p> </c:forEach><
95、;/p><p> 結(jié)果以風(fēng)俗介紹的一個(gè)寫(xiě)稿的變量把myTags:dataSource并入保存挽回那些用戶從用戶數(shù)據(jù)庫(kù)的名字的結(jié)果。 JSP 代碼也能提高產(chǎn)生不同種類的產(chǎn)量(HTML,XML,WML)基于客戶動(dòng)力需要, 沒(méi)有影響后端代碼(對(duì)dataSource 標(biāo)簽來(lái)說(shuō))。 一種更好的選擇將授予進(jìn)行數(shù)據(jù)檢索的一位前面控制人員servlet這, 提供給JSP 頁(yè)通過(guò)請(qǐng)求scoped的結(jié)果把歸于。 看見(jiàn)JAVA一個(gè)例子的
96、藍(lán)圖的企業(yè)部分。 總之: JSP scriptlets 應(yīng)該最好在JSP 頁(yè)里是不存在的,以便JSP 頁(yè)不依賴命令式語(yǔ)言程序, 并且在JSP 頁(yè)內(nèi)的業(yè)務(wù)邏輯實(shí)施被避免。 如果不可能, 使用價(jià)值目標(biāo)(零部件JavaBeans)適合把信息傳播往返于那些邊服務(wù)器,并且用JSP scriptlets 改變價(jià)值反對(duì)客戶產(chǎn)量。 使用風(fēng)俗標(biāo)簽(標(biāo)簽處理機(jī))無(wú)論何時(shí)適合被處理的信息在服務(wù)器面上可提供。 JSP 表達(dá)方式JSP 表達(dá)方式應(yīng)該被使用就和JS
97、P Scriptlets一樣節(jié)約。 為了說(shuō)明這,讓\ ' s作為完成等效的任務(wù)的以下的3 個(gè)例子看: </p><p> Example 1 (with explicit Java code): </p><p> <%= myBean.getName() %></p><p> Example 2 (with JSP tag):</
98、p><p> <jsp:getProperty name="myBean" property="name" /></p><p> Example 3 (with JSTL tag):</p><p> <c:out value="${myBean.name}" /></p&
99、gt;<p> 例子1以為一個(gè)寫(xiě)稿的稱為myBean的變量被申明。 其它二個(gè)例子以為myBean,scoped把可能被發(fā)現(xiàn)使用PageContext.findAttribute歸于()。 也的第2 例子以為myBean被介紹到那些頁(yè)使用。 在3 個(gè)例子中,JSTL 標(biāo)簽例子被更喜歡。 它幾乎象JSP 表示一樣短,讀是一樣容易的,更容易保持, 并且它不依賴JAVA scriptlets(哪個(gè)將要求網(wǎng)開(kāi)發(fā)者熟悉語(yǔ)言和API打
100、電話)。 而且,逐步形成成JSP 2.0個(gè)體例程序設(shè)計(jì)更容易做頁(yè),在那里等價(jià)物可能通過(guò)僅僅打印美元被完成 {myBean.name }用模板正文。 那選擇收養(yǎng),在開(kāi)發(fā)者和在生產(chǎn)JSP 頁(yè)在相同的工程內(nèi)的全部始終如一的網(wǎng)中一致同意。 應(yīng)當(dāng)指出 JSTL例子實(shí)際上有點(diǎn)不同它得myBean從頁(yè)上下文的價(jià)值而不是從寫(xiě)稿易變的一地方JAVA那里。 最后,JSP 表達(dá)方式比依賴基礎(chǔ)的寫(xiě)稿的語(yǔ)言的句法的相等的JSP scriptlets有優(yōu)先權(quán)。 例
101、如, </p><p> <%= x %> 被結(jié)束更喜歡 <% out.print( x ); %></p><p> 白色空間白色空間更進(jìn)一步以美化JSP 代碼降低含義和維護(hù)努力提高凹口。 尤其,空白的線和空間必要的話應(yīng)該在一個(gè)JSP 文件里被在各種各樣的位置插入。 空白的空白產(chǎn)品產(chǎn)品節(jié)約被使用改進(jìn)可讀性那兒<罷工>頁(yè)JSP, 假若他們不對(duì)生
102、產(chǎn)產(chǎn)生不需要的影響。 對(duì)于下面的例子來(lái)說(shuō), 一空白產(chǎn)品在二JSP表情在街區(qū)叫的<預(yù)>的一HTML 里面之間插入引起一額外產(chǎn)品在可見(jiàn)的HTML 產(chǎn)量?jī)?nèi)插入, 在內(nèi)客戶\ ' s 瀏覽器。 如果那些空白產(chǎn)品不在里面,不過(guò)一<預(yù)>塊,那些影響不可見(jiàn)在那些\ 瀏覽器內(nèi)',產(chǎn)量s。</p><p> 對(duì)客戶的JSP 陳述HTML 生產(chǎn) </p><p>&l
103、t;b> <pre></b></p><p> <%= customer.getFirstName() %></p><p> <%= customer.getLastName() %></p><p><b> </pre></b></p><p&g
104、t;<b> Joe</b></p><p><b> Block</b></p><p><b> <pre></b></p><p> <%= customer.getFirstName() %></p><p> <%= custo
105、mer.getLastName() %></p><p><b> </pre></b></p><p><b> Joe</b></p><p><b> Block</b></p><p> <%= customer.getFirstName
106、() %></p><p> <%= customer.getLastName() %></p><p><b> Joe Block</b></p><p> 空白一白色的空格符(顯示為)應(yīng)該被在一個(gè)JSP 標(biāo)簽和它的身體之間插入。 例如,如下內(nèi)容 </p><p> <%= custo
107、mer.getName() %>更喜歡結(jié)束 <%=customer.getName()%></p><p> 也應(yīng)該有分開(kāi)JSP 意見(jiàn)標(biāo)簽和意見(jiàn)的空格符: </p><p><b> <%--</b></p><p> - a multi-line comment broken into pieces, ea
108、ch of which</p><p> - occupying a single line.</p><p><b> --%></b></p><p> <%-- a short comment --%></p><p> 使用命名約定的命名約定制造你的更容易鑒定,在工程里分類并且協(xié)調(diào)的網(wǎng)零
109、部件要素。 在這個(gè)部分里,我們將看僅限于JSP 技術(shù)的這些約定。 JSP名字一個(gè)JSP(文件)名字應(yīng)該總是從一個(gè)小寫(xiě)字母開(kāi)始。 名字可能由多話組成,在這種情況下,話安置立即臨近和每句話從一個(gè)大寫(xiě)字母開(kāi)始。 一個(gè)JSP名字可能只是簡(jiǎn)單的名詞或者一個(gè)短的句子。 一個(gè)僅用于動(dòng)詞的JSP名字應(yīng)該被避免,因?yàn)樗话炎銐虻男畔魉徒o開(kāi)發(fā)者。 例如: </p><p> perform.jsp不像 performLogin.
110、jsp 那么清楚</p><p> 就一個(gè)動(dòng)詞作為一個(gè)JSP名字的一部分而論, 現(xiàn)在時(shí)形式應(yīng)該使用,一行動(dòng)經(jīng)由處理的后端被表示: </p><p> showAccountDetails.jsp被結(jié)束更喜歡 showingAccountDetails.jsp </p><p> 標(biāo)簽名字標(biāo)簽處理機(jī)和相關(guān)種類的命名約定被顯示如下: </p><
111、;p> Description Class Name </p><p> XXX tag extra info (extending from javax.servlet.jsp.tagext.TagExtraInfo) XXXTEI </p><p> XXX tag library validator (extending from javax.servlet.jsp.ta
112、gext.TagLibraryValidator) XXXTLV </p><p> XXX tag handler interface (extending from javax.servlet.jsp.tagext.Tag/IterationTag/BodyTag) XXXTag </p><p> XXX tag handler implementation XXXTag <
113、;/p><p> 另外,標(biāo)簽名字不可而在相關(guān)代碼習(xí)俗給JAVA技術(shù)內(nèi)指定違犯班級(jí)和接口的命名約定。 為了更進(jìn)一步離其他種類區(qū)分一種相關(guān)標(biāo)簽的種類,包裹后綴,標(biāo)簽或者taglib 能被用于種類的包裹名字。 例如: </p><p> com.mycorp.myapp.tags.XXXTag</p><p> 前綴標(biāo)簽應(yīng)該的名字前綴標(biāo)簽一短然而箱標(biāo)題和下檔那些第一個(gè)字
114、符有意義名詞。 一個(gè)附加語(yǔ)前綴不應(yīng)該包含非字母字符。 這是一些例子:</p><p> Example OK? </p><p> mytaglib no </p><p> myTagLib yes </p><p> MyTagLib no </p><p> MyTagLib1 no </p>
115、;<p> My_Tag_Lib no </p><p> My$Tag$Lib no </p><p> 用XML句法JSP的JSP 頁(yè)提供兩不同的句法: 為為寫(xiě)JSP 頁(yè)作為一份XML 資料寫(xiě)JSP 頁(yè)和\"XML句法\"的\"標(biāo)準(zhǔn)句法\"。 被使用標(biāo)準(zhǔn)句法寫(xiě)的JSP 頁(yè)被稱為\"JSP 頁(yè)。 \"被使用X
116、ML句法寫(xiě)的JSP 頁(yè)被稱為\"JSP 資料\"。 主要的這篇文章地址JSP 頁(yè),但是大多數(shù)概念也能被用于JSP 資料。 當(dāng)XML 變得更流行時(shí),使用JSP 資料預(yù)計(jì)增加, 寄給這JSP 2.0種說(shuō)明將介紹友好得多的XML句法。 應(yīng)當(dāng)指出XML句法常常作者JSP 頁(yè)與不同,并且經(jīng)常同混淆起來(lái)XML一JSP 頁(yè)的意見(jiàn)。 頁(yè)作者對(duì)作者使用標(biāo)準(zhǔn)或者XML句法一JSP 頁(yè)。 集裝箱然后翻譯進(jìn)它XML 意見(jiàn)的JSP 頁(yè),哪個(gè)是
117、與接觸給庫(kù)Validators加標(biāo)簽。 </p><p> JSP 資料結(jié)構(gòu)JSP 資料有以下的基本的結(jié)構(gòu): </p><p> <? xml version="1.0" ?></p><p><b> <!-- </b></p><p> - Author(s): <
118、/p><p><b> - Date:</b></p><p> - Copyright Notice:</p><p><b> - @(#)</b></p><p> - Description:</p><p><b> --></b>
119、</p><p> <jsp:root xmlns:jsp="http://java.sun.com/JSP/Page"</p><p> xmlns:prefix1="URI-for-taglib1"</p><p> xmlns:prefix2="URI-for-taglib2"<
120、/p><p> version="1.2"></p><p> JSP Document ...</p><p> </jsp:root></p><p> 首行是把頁(yè)定義為一份XML 資料的一篇可選擇的XML序言。 在可選擇的序言為資料變成那些意見(jiàn)之后。 那些元素作為資料JSP 確定這并且出現(xiàn)不作為
121、那些元素根必須。 jsp namespace 必須被輸入,并且全部標(biāo)簽庫(kù)必須被使用這種根要素輸入。 版本把歸于要求并且指定JSP 說(shuō)明的版本正被使用哪個(gè)。 真實(shí)滿足那些JSP的資料作為subelements 出現(xiàn)一定被被等效的他們的XML那里替換,例如。 欲了解詳細(xì)信息,參見(jiàn)JSP 說(shuō)明。 XML 說(shuō)明JSP 指定對(duì)是否XML 樣式說(shuō)明被在生產(chǎn)上拆開(kāi)不清楚, 因此如果一條意見(jiàn)意圖是達(dá)成客戶,是安全的, 它應(yīng)該隨函附上在內(nèi)一節(jié)點(diǎn),如下:
122、</p><p><b> ...</b></p><p> <jsp:text><![CDATA[</p><p><b> <!--</b></p><p> - Multiline comment</p><p> - to be se
123、nt to client.</p><p><b> --></b></p><p> ]]></jsp:text></p><p><b> ...</b></p><p> 在JSP 資料里的Java 代碼, 當(dāng)在申明,scriptlets 和表情里面給JAVA代
124、碼寫(xiě)信時(shí),一種CDATA 要素只應(yīng)該被使用, 必要保證你的代碼不傳播開(kāi)資料結(jié)構(gòu)時(shí)。 </p><p><b> ...</b></p><p> <jsp:scriptlet></p><p> for( int level = 0; level < 3; level++ ) {</p><p
125、> </jsp:scriptlet></p><p><b> <tr></b></p><p><b> <td></b></p><p> <jsp:expression><![CDATA[</p><p> "&l
126、t;h" + level + ">Text</h" + level + ">"</p><p> ]]></jsp:expression></p><p><b> </td></b></p><p><b> </tr>
127、;</b></p><p> <jsp:scriptlet></p><p><b> }</b></p><p> </jsp:scriptlet></p><p><b> ...</b></p><p> 與在標(biāo)準(zhǔn)句法方面的
128、那些不同,不管一種要素的內(nèi)容,XML 凹口規(guī)章應(yīng)該被跟隨。 編程慣例通常,避免寫(xiě)JAVA代碼(申明,scriptlets 和表情)在你的JSP 頁(yè)內(nèi),適合下列理由: 用在一JSP 頁(yè)里的Java 代碼的句法錯(cuò)誤直到頁(yè)被部署才被發(fā)現(xiàn)。 用標(biāo)簽庫(kù)和servlets的句法錯(cuò)誤, 另一方面,在部署之前被發(fā)現(xiàn)。 在JSP 頁(yè)里的Java 代碼更難調(diào)試。 特別為可能不是Java專家的頁(yè)作者,在JSP 頁(yè)里的Java 代碼更難保持。 不使復(fù)雜的業(yè)務(wù)邏
129、輯與贈(zèng)送邏輯混合一般被接受為實(shí)踐。 JSP 頁(yè)主要傾向于贈(zèng)送邏輯。 包含Java 代碼,HTML 的代碼和為指令寫(xiě)稿子的另一個(gè)可能難讀。 JSP 2.0 說(shuō)明是贊成一種非常簡(jiǎn)單表達(dá)式語(yǔ)言的deemphasizing scriptlets。 如果Java 代碼沒(méi)被在你的頁(yè)里使用,把你的JSP 頁(yè)逐步形成成JSP 2.0個(gè)體例程序設(shè)計(jì)將更容易。 看見(jiàn)JAVA更多的指南和細(xì)節(jié)的藍(lán)圖的企業(yè)部分。 JavaBeans 零部件預(yù)置JSP 技術(shù)提供一
130、種便利的要素初始化全部PropertyDescriptor 鑒定的一個(gè)JavaBeans 零部件的特性</p><p> <jsp:setProperty name="bankClient" property="*"/></p><p> 不過(guò),這應(yīng)該被謹(jǐn)慎使用。 首先,如果豆有特性,比如說(shuō),數(shù)量, 并且在當(dāng)今的ServletRequ
131、est 物體里沒(méi)有這樣的參數(shù)(數(shù)量)或者參數(shù)價(jià)值是\"\",沒(méi)有什么被做: JSP 頁(yè)甚至不使用空行確定豆的那特別的財(cái)產(chǎn)。 因此,任何價(jià)值已經(jīng)被分配在bankClient 豆內(nèi)合計(jì)未受影響。 第二, 不讓人確定PropertyEditors的非初步特性可能不含蓄從ServletRequest 物體的線價(jià)值初始化,明確變換可能被需要。 第三,存心不良的用戶能增加另外的請(qǐng)求參數(shù)并且確定豆的非故意的特性,如果應(yīng)用沒(méi)被仔細(xì)設(shè)
132、計(jì)。 你仍然喜歡使用財(cái)產(chǎn)= \"* \"在jsp內(nèi):為了生產(chǎn)更整潔的代碼的setProperty 標(biāo)簽, 然后我們推薦,那你增加意見(jiàn)在之前那些jsp:大約參數(shù)的標(biāo)簽setProperty 期望存在于要初始化那些豆的目標(biāo)ServletRequest。 因此,在下列例子里,從意見(jiàn)我們知道firstName和lastName被要求初始化bankClient 豆: </p><p><b>
133、 <%--</b></p><p> - requires firstName and lastName from the ServletRequest </p><p><b> --%></b></p><p> <jsp:setProperty name="bankClient"
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 計(jì)算機(jī)畢業(yè)論文外文翻譯
- 計(jì)算機(jī)英語(yǔ)畢業(yè)論文外文翻譯
- 計(jì)算機(jī)專業(yè)畢業(yè)論文外文翻譯15
- 計(jì)算機(jī)專業(yè)畢業(yè)論文外文翻譯--計(jì)算機(jī)病毒介紹
- 計(jì)算機(jī)專業(yè)畢業(yè)論文外文翻譯7
- 計(jì)算機(jī)畢業(yè)論文外文翻譯--asp概述
- 計(jì)算機(jī)專業(yè)畢業(yè)論文外文翻譯2篇
- 計(jì)算機(jī)專業(yè)畢業(yè)論文翻譯
- 鍋爐的計(jì)算機(jī)控制畢業(yè)論文外文翻譯
- 無(wú)線局域網(wǎng)-計(jì)算機(jī)畢業(yè)論文外文翻譯
- 計(jì)算機(jī)畢業(yè)論文范文畢業(yè)論文計(jì)算機(jī)專業(yè)
- 計(jì)算機(jī)畢業(yè)論文外文翻譯---面向?qū)ο蠛蚦++
- 計(jì)算機(jī)專業(yè)畢業(yè)論文外文翻譯--數(shù)據(jù)傳送指令
- 計(jì)算機(jī)畢業(yè)論文
- 計(jì)算機(jī)畢業(yè)論文
- 計(jì)算機(jī)畢業(yè)論文文獻(xiàn)翻譯資料
- 計(jì)算機(jī)專業(yè)畢業(yè)論文外文翻譯--輸入輸出訪問(wèn)
- 計(jì)算機(jī)專業(yè)畢業(yè)外文翻譯
- 計(jì)算機(jī)專業(yè)畢業(yè)論文外文翻譯--數(shù)據(jù)類型和值域
- 計(jì)算機(jī)專業(yè)畢業(yè)論文---報(bào)表設(shè)計(jì)器開(kāi)發(fā)(含外文翻譯)
評(píng)論
0/150
提交評(píng)論