【正文】
器端技術 下面是 Marty收到的一些典型問題(大部分問題不止一次的出現(xiàn))。 我們的服務器正在運行 。 我如何將圖像放到 JSP 頁面中?我不知道讀取圖像文件應該使用哪些 JavaI/O 命令。 Tomcat 不支 持 JavaScript,當用戶在圖像上移動鼠標時,我如何使圖像突出顯示呢? 我應該怎么做? Source” (查看源代碼)時,如何阻止他們看到 JSP 標簽? ?但事實上瀏覽器并不了解服務器端的過程。 如果要將使用 Swing組件的 applet 放到網(wǎng)頁中,重要的是瀏覽器的 Java 版本,和服務器的 Java 版本無關。 因此,如同對待靜態(tài)HTML頁面一樣,只需確保 JSP 輸出的 HTML與瀏覽器兼容。 當然 ,您不需要采取什么措施來阻止客戶看到 JSP 標簽,這些標簽在服務器上進行處理,發(fā)送給客戶的輸出中并不出現(xiàn)。 JSP 頁面需要轉換成 servlet。但是每一步發(fā)生在什么時候呢?要回答這個問題,要記住以下兩點: 最常被誤解的項已經(jīng)突出標示出來。同樣,對于初始化,它們使用 jspInit 方法,而非 init 方法。 4. 什么是應用框架 : 框架( framework)是可重用的,半成品的應用程序,可以用來產(chǎn)生專門的定制程序。它們運行在相似的機器上,期望從相同的設備輸入信息,輸出到 相同的顯示設備,并且將數(shù)據(jù)存儲到相同的硬盤設備。構架在這些公共基礎上的應用框架可以為開發(fā)人員提供可以為他們的產(chǎn)品提供可重用服務的基礎架構。如果你自己構建它,在你完成時你就會理解它,但是在你被融入之前又將花費多長時間呢?如果要購買, 你必須得克服學習曲線,同樣,在你可以用它進行工作之前又得花多長時間?這里沒有所謂正確答案,但許多觀察者都會同意,象 Struts 這樣的框架能提供比從頭開始開發(fā)更顯著的投資回報,特別是對于大型項目來說。在其它的資料里面,我們也介紹了一些可以和 Struts 一起使用的框架。與應用框架一樣,這些工具也提供了一些半完成的版本,可以用在用戶的定制組件之中。 Struts 以及本文中涉及的組件卻不是這樣。對于你的工具,如果你可以用來開發(fā) Java, 你就可以用它來開發(fā) Struts。這些技術并不是專門針對Struts,而是所有 Java web 應用都可以使用的。作為一個 Struts 開發(fā)者,你并不需要知曉所有的相關知識,但是這些基本技術的工作原理可能有助于你針對棘手問題設計出創(chuàng)造性的方案。外交協(xié)議主要設計來避免誤解,以及防止談判破裂。這個協(xié)議定義數(shù)據(jù)是如何傳輸,以及它們到達后如何進行解碼。 很多服務器應用程序使用 HTTP 之外的其他協(xié)議。應用服務器可以清楚的知道是誰連接上來,而且何時中斷連接。這稱之為狀態(tài)協(xié)議。 HTTP Server 可以接受來自于各種客戶的各種請求,并提供各種響應,即使是這個響應僅僅是說 No。這也是 Inter 可以擴展到很多計算機的原因。 HTTP 請求 看起來就像一個平常的文本文檔。你甚至可以通過標準的程序如 Tel 來手動畢業(yè)設計外文翻譯 6 傳遞一個 HTTP 請求。 HTTP 請求的第一行包含方法,其后是請求的來源地址和 HTTP 版本。 HTTP 頭向服務器提供額外的信息。 7 種請求方法中, GET 和 POST 是用得最多的。響應的第一行稱為狀態(tài)行,包含了 HTTP 協(xié)議的版本,數(shù)字型狀態(tài),以及狀態(tài)的簡短描述。如上所述, HTTP 并不在請求間保持狀態(tài)信息。 因為簡單和效率,無狀態(tài)協(xié)議不適合于需要跟蹤用戶狀態(tài)的動態(tài)應用。 cookie 是一種特殊的信息包,存儲于用戶的計算機中。這兩種方法都不是無縫的,是用哪一個都意味著在開發(fā)時都要進行額外的工作。它主要是使用請求來定位文件資源,并在響應中返回此資源。 HTML 頁面通常包含一些到其他頁面的超文本連接,也可以顯示其他一些內容比如圖像和視頻等等。標準 web 服務器處理靜態(tài)內容處理得很好,但處 理動態(tài)內容時則需要額外的幫助手段了。這些文件可以隨時改變,但通過瀏覽器請求時,卻不能自動改變。 7. 公共網(wǎng)關接口 (CGI): 第一個普遍用來產(chǎn)生動態(tài)內容的標準是通用網(wǎng)關接口( Common Gateway Interface (CGI))。其他程序可以看到 web server 傳遞過來的請求,并創(chuàng)建一個定制的響應。 CGI 程序運行,并將輸出返回給 Web server, web server 則將輸出響應給瀏覽器。與 HTTP 一樣, CGI 是靈活和易于實現(xiàn)的,并且已經(jīng)有大量現(xiàn)成的 CGI 程序。這是一個相對昂貴的處理方法,對大容量站點來說,每分鐘有 數(shù)千個請求,有可能使站點癱瘓。 畢業(yè)設計外文翻譯 7 Java servlet: Sun公司的 Java Servlet 平臺直接解決了 CGI 程序的兩個主要缺點: 首先, servlet 比常規(guī) CGI 程序提供更好的性能和資源利用。 Servlet看起來好像是一個微小的 web server。但,和常規(guī) web server不同, servlet API 是專門設計來幫助 Java 開發(fā)人員創(chuàng)建動態(tài)應用的。 Servlet 訪問HTTP 特定服務的 API,但它仍然是一個運行于程序之中的 Java 對象,并可以利用所有的 Java 資產(chǎn)。Servlet 容器連接到 Web 服務器。當符合所注冊樣式的請求到達, web server 將請求傳遞給 容器,容器則調用響應的 servlet。一旦容器實例化了一個 servlet,它就僅為每個新的請求創(chuàng)建一個新的線程。 一旦 servlet 被創(chuàng)建,使用它處理額外的請求僅帶來很小的額外開銷。獲得這些資源要耗費數(shù)秒時間,這比大多數(shù)沖浪者愿意等的 時間要長些。學習 servlet 編程,我們推薦 Java Servlets by Example, 作者 Alan R. Williamson[Williamson]。為了產(chǎn)生響應,開發(fā)人員不得不使用大量的 println語句來生成 HTML。 (PAnother line of HTML./P)。也有一些庫有助于你產(chǎn)生 HTML。同時,大多數(shù)項目經(jīng)理更喜歡將團隊分成不同的小組。單獨使用 servlet 的做法鼓勵混合標記和業(yè)務邏輯,很難區(qū)分團隊人員的專業(yè)工作。為創(chuàng)建 JSP 頁面 , 開發(fā)者按創(chuàng)建 HTML 頁面類似的方式創(chuàng)建頁面,使用相同的 HTML 語法。腳本元素是一些標記,封裝了可以被 JSP 識別的邏輯。 為了識別 JSP 頁面,文件需要保存為擴展名 .jsp。在運行時,容器也能檢測 JSP 文件和相應的類的最后更新時間。項目經(jīng)理現(xiàn)在可以將表現(xiàn)層分派給 HTML 開發(fā)人員,將業(yè)務邏輯工作分派給 JAVA 開發(fā)人員。你可以在 servlet 做的,也可以在 JSP 中做。 定義 JavaBean 是一種 JAVA 語言寫成的可重用組件。 JavaBean通過提供符合一致性設計模式的公共訪問方法將內部字段暴露稱為屬性。 我們必須做的如下: 1 . 編 寫 一 個 類 , 通 過 實 現(xiàn) doStart() 或者 doEnd() 方 法 來 實 現(xiàn) 或者 接口。 2.創(chuàng)建一個標簽庫描述文件 (TLD)來將你的新建的類,映射到一個標簽名稱。通過在 JSP 頁面的頂部放置下面的語句: %tagliburi=/tags/ prefix=app %來告訴 JSP 頁面你將使用你自己的標簽庫。關于更多細節(jié),請參考 JSP 標簽庫技術頁面。 Mutator 通常以小寫的 set 前綴開始,后跟屬性名。返回值通常是 void,因為 mutator 僅僅改變屬性的值,而不返回它們。 Mutator 也可根據(jù)其前綴稱為設置器 setters 。 Accessor 通常以小寫的 get 為前綴,后跟屬性名。返回值必須匹配相應的修改器方法的參數(shù)。同樣,訪問器 accessor 也經(jīng)常稱為畢業(yè)設計外文翻譯 9 獲取器 getter。不使用小寫的 get,邏輯屬性的訪問器可以使用小寫的 is 前綴,后跟屬性名。返回值肯定是邏輯值,不管是 boolean 還是 Boolean。 On 屬性的邏輯訪問器的方法體可能是: public boolean isOn() 在使用 JavaBean 時,規(guī)范的方法體簽名扮演了極為重要的角色。如果一個組件在一個 JavaBean 中發(fā)現(xiàn)一個這樣的方法,它就知道這個方法可以用來訪問或者改變 JavaBean 的屬性。 Sun的工程師在開發(fā) JSP 標簽的擴展類時,也被設計來可以和 JavaBean一起工作。 Model 2: Servlet/JSP 規(guī)范的 版描述了在一個應用中使用 servlet 和 JSP 的架構。根據(jù) Model 2, servlet 處理數(shù)據(jù)存取和導航流, JSP 處理表現(xiàn)。 Model 2 應用的一部分發(fā)生改變并不強求其他部分也跟著發(fā)生改變。 Struts 框 架是基于 Model 2 的架構。隨框架也提供一個豐富的標簽庫,以使 Struts 易于和 JSP 一起使用。并介紹了一些基本知識,關于 HTTP, CGI, Java servlet, JSP,以及 JavaBean?,F(xiàn)在你已經(jīng)有關于 Strtus Web 應用程序模樣的初步印象,以后我們將更深入的討論 Strtuts 框架的理論和具體應用。s usual embrace and extend strategy. At this point, Gosling lightheartedly interjected You mean disgrace and distend. Now, the grievance that Gosling was airing was that he felt that this pany would take technology from other panies and suborn it for their own purposes. But guess what? The shoe is on the other foot here. The Java munity did not invent the idea of designing pages as a mixture of static HTML and dynamic code marked with special tags. For example, 畢業(yè)設計外文翻譯 11 ColdFusion did it years earlier. Even ASP (a product from the very software pany of the aforementioned manager) popularized this approach before JSP came along and decided to jump on the bandwagon. In fact, JSP not only adopted the general idea, it even used many of the same special tags as ASP did..So, the question bees: why use JSP instead of one of these other technologies? Our first response is that we are not arguing that everyone should. Several of those other technologies are quite good and are reasonable options in some situations. In other situations, however, JSP is clearly better. Here are a few of the reasons. Versus .NET and Active Server Pages (ASP) . NET is welldesigned technology from Microsoft. is the part that directly petes with servlets and JSP. The advantages of JSP are two , JSP is portable to multiple operating systems and Web servers。t locked into deploying on Windows and IIS. Although the core .NET platform runs on a few nonWindows platforms, the ASP part does not. You cannot expect to deploy serious applications on multiple servers and operating systems. For some applications, this difference does not matter. For others, it matters , for some applications the choice of the underlying language matters greatly. For example, although .NET39。 with JSP you can use Java for the real code a