【正文】
小結(jié): 在本文中,我們介紹了 Struts 應(yīng)用框架。在其后的規(guī)范中, Model 2 這個(gè)叫法消失了,但它已經(jīng)在 Java web開發(fā)人員中非常通用了。邏輯訪問器在其方法體中不能 接受參數(shù)。 屬性名的第一個(gè)字母必須大寫。 JavaBean 設(shè)計(jì)模式提供兩種類型的方式來訪問 bean 的內(nèi)部狀態(tài):訪問器( accessor) 用來讀 JavaBean的狀態(tài),修改器( mutator )用來改變 JavaBean 的狀態(tài)。眾所周知,屬性名稱也符合這種模式,其他 JAVA 類可以通過自省機(jī) 制發(fā)現(xiàn)和操作這些 JavaBean 屬性。如果, JSP 文件自上次編譯以來被修改了,容器將重新翻譯和編譯 JSP文件。 為解決這個(gè)問題, Sun 提出了一個(gè)將腳本和模板技術(shù)結(jié)合到一個(gè)組件中的服務(wù)器頁面技術(shù)( JavaServer Pages)。比如這樣的代碼: (POne line of HTML./P)。 Java線程可比使用 CGI程序的服務(wù)器處理開銷小多了。 xxx大學(xué)畢業(yè)設(shè)計(jì)(論文)外文翻譯 —— 譯文 4 Servlet 本身是要編譯成字節(jié)碼的 Java類,就像其他 Java對象一樣。 CGI的主要缺點(diǎn)是它必須為每個(gè)請求運(yùn)行一個(gè)程序。相反,動態(tài)內(nèi)容是臨時(shí)產(chǎn)生的,典型地,它是針對瀏覽器的個(gè)別請求的響應(yīng)。對其本身來說,標(biāo)準(zhǔn)的 HTTP web服務(wù)器并不傳輸動態(tài)內(nèi)容。狀態(tài)行后,服務(wù)器將返回一個(gè) HTTP 響應(yīng)頭,類似于 HTTP 請求頭。當(dāng) HTTP響應(yīng)返回時(shí),它也是一個(gè)開發(fā)者可以直接閱讀的平面文本。 相反, HTTP是一個(gè)無狀態(tài)協(xié)議。同樣,當(dāng)計(jì)算機(jī)間需要對話,它們也遵循一個(gè)正式的協(xié)議。你可以在很多環(huán)境中來開發(fā) Struts: Visual Age for Java, JBuilder, Eclipse, Emacs, 甚至使用 Textpad。 框架向開發(fā)人員提供一系列具有以下特征的骨架組件: 1.已經(jīng)知道它們在其它程序上工作得很好; 2.它們隨時(shí)可以在下一個(gè)項(xiàng)目 中使用; 3.它們可以被組織的其它團(tuán)隊(duì)使用; 對于框架是典型的構(gòu)建還是購買命題。 (PAnother line of HTML./P)。它們運(yùn)行在相似的機(jī)器上,期望從相同的設(shè)備輸入信息,輸出到相同的顯示設(shè)備,并且將數(shù)據(jù)存儲到相同的硬盤設(shè)備。與應(yīng)用框架一樣,這些工具也提供了一些半完成的版本,可以用在用戶的定制組件之中。作為一個(gè) Struts開發(fā)者,你并不需要知曉所有的相關(guān)知識,但是這些基本技術(shù)的工作原理可能有助于你針對棘手問題設(shè)計(jì)出創(chuàng)造性的方案。應(yīng)用服務(wù)器可以清楚的知道是誰連接上來,而且何時(shí)中斷連接。 HTTP 請求看起來就像一個(gè)平常的文本文檔。 7 種請求方法中, GET和 POST是用得最多的。 cookie是一種特殊的信息包,xxx大學(xué)畢業(yè)設(shè)計(jì)(論文)外文翻譯 —— 譯文 3 存儲于用戶的計(jì)算機(jī)中。標(biāo)準(zhǔn) web服務(wù)器處理靜態(tài)內(nèi)容處理得很好,但處理動態(tài)內(nèi)容時(shí)則需要額外的幫助手段了。 CGI程序運(yùn)行,并將輸出返回給 Web server, web server 則將輸出響應(yīng)給瀏覽器。Servlet看起來好像是一個(gè)微小的 web server。當(dāng)符合所注冊樣式的請求到達(dá), web server 將請求傳遞給容器,容器則調(diào)用響應(yīng)的 servlet。學(xué)習(xí) servlet 編程,我們推薦 Java Servlets by Example, 作者 Alan R. Williamson[Williamson]。同時(shí),大多數(shù)項(xiàng)目經(jīng)理更喜歡將團(tuán)隊(duì)分 成不同的小組。 為了識別 JSP頁面,文件需要保存為擴(kuò)展名 .jsp。 定義 JavaBean 是一種 JAVA 語言寫成的可重用組件。通過在 JSP 頁面的頂部放置下面的語句: %tagliburi=/tags/ prefix=app %來告訴 JSP 頁面你將使用你自己的標(biāo)簽庫。 Mutator也可根據(jù)其前綴稱為設(shè)置器 setters 。不使用小寫的 get,邏輯屬性的訪問器可以使用小寫的 is 前綴,后跟屬性名。 Sun 的工程師在開發(fā) JSP標(biāo)簽的擴(kuò)展類時(shí),也被設(shè)計(jì)來可以和 JavaBean一起工作。 Struts 框架是基于 Model 2的架xxx大學(xué)畢業(yè)設(shè)計(jì)(論文)外文翻譯 —— 譯文 7 構(gòu)?,F(xiàn)在你已經(jīng)有關(guān)于 Strtus Web應(yīng)用程序模樣的初步印象,以后我們將更深入的討論 Strtuts 框架的理論和具體實(shí)踐沈陽航空航天大學(xué)畢業(yè)設(shè)計(jì)(論文)外文翻譯 — — 譯文 8 。 Model 2應(yīng)用的一部分發(fā)生改變并不強(qiáng)求其他部分也跟著發(fā)生改變。如果一個(gè)組件在一個(gè) JavaBean 中發(fā)現(xiàn)一個(gè)這樣的方法,它就知道這個(gè)方法可以用來訪問或者改變 JavaBean 的屬性。同樣,訪問器 accessor 也經(jīng)常稱為獲取器 getter。返回值通常是 void,因?yàn)?mutator 僅僅改變屬性的值,而不返回它們。 2.創(chuàng)建一個(gè)標(biāo)簽庫描述文件 (TLD)來將你的新建的類,映射到一個(gè)標(biāo)簽名稱。你可以在 servlet做的,也可以在 JSP中做。腳本元素是一些標(biāo)記,封裝了可以被 JSP識別的邏輯。也有一些庫有助于你產(chǎn)生 HTML。獲得這些資源要耗費(fèi)數(shù)秒時(shí)間,這比大多數(shù)沖浪者愿意等的時(shí)間要長些。 Servlet容器連接到 Web 服務(wù)器。 Java servlet: Sun公司的 Java Servlet平臺直接解決了 CGI程序的兩個(gè)主要缺點(diǎn): 首先, servlet 比常規(guī) CGI 程序提供更好的性能和資源利用。其他程序可以看到 web server傳遞過來的請求,并創(chuàng)建一個(gè)定制的響應(yīng)。 HTML頁面通常包含一些到其 他頁面的超文本連接,也可以顯示其他一些內(nèi)容比如圖像和視頻等等。 因?yàn)楹唵魏托?,無狀態(tài)協(xié)議不適合于需要跟蹤用戶狀態(tài)的動態(tài)應(yīng)用。 HTTP 頭向服務(wù)器提供額外的信息。這也是 Inter 可以擴(kuò)展到很多計(jì)算機(jī)的原因。 很多服務(wù)器應(yīng)用程序使用 HTTP之外的其他協(xié)議。這些技術(shù)并不是專門針對xxx大學(xué)畢業(yè)設(shè)計(jì)(論文)外文翻譯 —— 譯文 2 Struts,而是所有 Java web 應(yīng)用都可以使用的。在其它的資料里面,我們也介紹了一些可以和 Struts 一起使用的框架。 they do not retrieve them. The mutator for a simple property takes only one parameter in its signature, which can be of any type. Mutators are often nicknamed setters after their prefix. The mutator method signature for a weight property of the type Double would be: public void setWeight(Double weight) A similar design pattern is used to create the accessor method signature. Accessor methods are always prefixed with the lowercase token get, followed by the property name. The first character in the property name must be uppercase. The return value will match the method parameter in the corresponding mutator. Accessors for simple properties cannot accept parameters in their method signature. Not surprisingly, accessors are often called getters. The accessor method signature for our weight property is: public Double getWeight() If the accessor returns a logical value, there is a variant pattern. Instead of using the lowercase token get, a logical property can use the prefix is, followed by the property name. The first character in the property name must be uppercase. The return value will always 8 be a logical value— either boolean or Boolean. Logical accessors cannot accept parameters in their method signature. The boolean accessor method signature for an on property would be public boolean isOn() The canonical method signatures play an important role when working with Java Beans. Other ponents are able to use the Java Reflection API to discover a JavaBean’s properties by looking for methods prefixed by set, is, or get. If a ponent finds such a signature on a JavaBean, it knows that the method can be used to access or change the bean’s properties. Sun introduced JavaBeans to work with GUI ponents, but they are now used with every aspect of Java development, including web applications. When Sun engineers developed the JSP tag extension classes, they designed them to work with JavaBeans. The dynamic data for a page can be passed as a JavaBean, and the JSP tag can then use the bean’s properties to customize the output. For more on JavaBeans, we highly remend The Awesome Power of JavaBeans, by Lawrence H. Rodrigues [Rodrigues]. The definitive source for JavaBean information is the JavaBean Specif