成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Servlets和JSP最佳實踐

開發 后端
本文介紹Java Servlet和JSP技術使Java服務器端技術,目前他們控制了整個服務器端Java技術市場,并且逐漸成為構建商業Web應用的標準。

Java Servlet和JSP技術使Java服務器端技術,目前他們控制了整個服務器端Java技術市場,并且逐漸成為構建商業Web應用的標準。Java開發者喜歡這些技術是由于很多的原因,包括:這些技術很容易學習,一次編寫,處處運行(Write Once, Run Anywhere)。更重要的是,如果更高效地采用了下面的實踐,Servlet和JSP能夠幫助分開Web的表示與內容。“***實踐”是被證明為開發高質量、可重用與易維護的基于Servlet和JSP的Web應用的較好方法。與此相對應的是,將Java代碼混合在HTML中,這樣很容易產生低效率、不易重用、難于維護的復雜應用程序。***實踐將改變這些弊端。

本文將描述為Servlet和JSP準備的***實踐的重要性;這里假設讀者已經了解兩者的基本工作原理。這篇文章將涵蓋以下內容:

類似于通用網關接口(CGI)腳本,servlets支持請求響應編程模式。當客戶端給服務器發送請求時,服務器將請求發送給servlet。然后,servlet構建一個響應,服務器將該響應發送回客戶端。然而,跟CGI腳本不同的是,servlets和HTTP服務器運行在同一個進程內。

當發出客戶端請求的時候,調用service 方法并傳遞一個請求和響應對象。Servlet首先判斷該請求是GET 操作還是POST 操作。然后它調用下面的一個方法:doGet 或 doPost。如果請求是GET就調用doGet方法,如果請求是POST就調用doPost方法。doGet和doPost都接受請求 (HttpServletRequest)和響應(HttpServletResponse)。

最簡單地說,servlets是能夠使用print語句產生動態HTML內容的Java類。然而,有一點必須要提一下,那就是servlets是在一個容器內運行的,并且APIs 提供了對會話和對象的生命周期的管理。因此,當你使用servlets時,你就能獲得Java平臺的所有優勢,它包括沙箱 (安全)、通過JDBC的數據庫存取API和具有跨平臺可移植性的servlets。

Java Server Pages (JSP)

JSP技術是Servlet技術的一個較高層次的抽象。它是Sun公司開發、開放的技術,是與Microsoft公司的ASP動態網頁技術相似的一種技術,并且它是Java2 企業版(J2EE)的一個關鍵組件。目前,很多商業的應用服務器(例如BEA WebLogic, IBM WebSphere, Live JRun, Orion等等)都支持JSP。

JSP頁面如何工作?

JSP頁面實際上是一個帶有傳統HTML和Java代碼的Web頁面。JSP頁面的文件擴展名是.jsp而并不是.html或.htm,該擴展名告訴服務器該頁面需要特殊的處理,該特殊處理必須由服務器擴展或插件實現。

當一個JSP頁面被讀取時,他首先將被編譯(JSP引擎來做這件事情)為一個Servlet。這時候這個Servlet就像其他Servlet一樣被交給Servlet引擎來處理。然后Servlet引擎讀取那個Servlet對應的類(用 ClassLoader)并且執行它,產生一個動態HTML頁面(圖1)。這個Servlet創建一些必需的元件,然后將這些元件作為一個字符串寫入輸出流(OutputStream),并顯示在瀏覽器中。

調用JSP頁面時,首先會將它編譯成一個 (通過JSP引擎) Java servlet。這時,servlet引擎處理該servlet,就像處理任何其他servlet一樣。然后,servlet引擎加載servlet類 (使用類加載器) 并執行它創建動態HTML發送給瀏覽器,如圖1所示。Servlet創建所有必需的對象,并將所有對象作為字符串寫入到輸出流中,并在瀏覽器中顯示。

Servlet創建所有必需的對象


下次請求該頁面的時候,JSP引擎執行早就裝載的servlet除非JSP頁面早就更改,在這種情況下,會將它自動重新編譯進一個servlet中并執行。

***實踐

在本節中,將描述在Servelt,特別是JSP中的***實踐。強調JSP***實踐是因為JSP比Servlet得到更為廣泛的應用(也許是因為JSP技術促進了表示與邏輯的分離)。一個集成Servlet和JSP的***實踐是“模型-顯示-控制器”設計模式(Model View Controller, MVC),將在本文的后面部分進行討論。

在HTML頁面中不要過多使用Java代碼:將所有的Java代碼直接放在JSP頁面中,對于小項目而言沒有問題,但是過度使用將會導致意大利面條似的代碼,難于閱讀,難于理解。減少Java代碼的方法是編寫獨立的Java類來實現計算等邏輯。一旦測試了這些類,就創建了實例。

選擇合適的include機制: ***將頁眉、頁腳和導航條內容存儲在單個文件中,并且不要重新動態產生它們。一旦將這些內容存儲在各個獨立的文件中,使用下面include機制中的任何一個就能在所有的頁面中引入它們:

Include 指令: <%@ include file="filename" %>

Include行為: <jsp:include page="page.jsp" flush="true" />

當JSP正在轉換成Servlet時,***種include機制將包含指定文件的內容(轉換階段),對于第二種include機制來說,當該頁面執行后時,頁面包含了用Response產生的內容。當被包含的頁面不太改變的時候,我推薦使用***種include指令方式,這種方式比較快,性能較好;當被包含的文件經常改變(其中也有動態內容)時,并且在執行主頁的時候不能確定所要引入的的頁面的時候,使用第二種include行為方式。

另一種include機制是使用JSP標準標記庫(JSTL)中的<c:import> 行為標記。可以使用這種方式來包含本地的或者遠程的文件,下面是一些例子:

  1. <c:import url="./copyright.html"/><c:import url=
    "http://www.somewhere.com/hello.xml"/> 

不要將業務邏輯和表示混合起來:在更為復雜的應用中,并且更多的代碼被引入時,很重要的一點是不要將業務邏輯與表示混在同一個文件中。分開業務邏輯與表示使得當其中的任何一方需要改動是不至于影響到另外一方。JSP僅僅被作為前臺的表示。那么,該如何實現業務邏輯部分呢?這就是JavaBeans的用武之地了。JavaBeans技術是輕便的、平臺無關的組建模型,它使開發人員編寫組件并且可以處處運行。在JSP環境中,JavaBeans組件處理業務邏輯并返回數據給JSP頁面,這反過來格式化從JavaBeans組件返回的數據,以便在瀏覽器中顯示。JSP頁面通過調用JavaBeans組件的get方法和set方法來操作Bean 的各項屬性。使用JavaBeans技術的好處如下:

可重用:不同的應用可以使用同一個組件。

分離業務邏輯與表示:可以在JSP頁面上改變數據的顯示外觀而不影響業務邏輯。換而言之,網頁設計師只需要關注設計,Java開發人員只需要關注業務邏輯。

保持源代碼的安全性,保護自己的知識產權。

如果在你的應用程序中使用了Enterprise JavaBeans (EJBs)組件,必須將業務邏輯保留在EJB組件中,提供生命周期管理,事務支持與對多客戶端對域對象(實體Beans)的存取。可以在 Enterprise BluePrints 獲得更為詳細的資料。

使用自定義標記:并不是所有HTML內容開發者都喜歡將Java代碼(或scriptlets)嵌入在HTML文檔中的,可能是因為他們不了解Java語言并且也不樂意學習它的語法。但是不能使用JavaBeans組件封裝很多Java代碼,在JSP頁面中使用它們仍然要求內容開發者具有Java語法的知識。

JSP技術允許你通過標記庫設備引入新的自定義標記。作為一個Java開發者,你可以通過引入能夠部署并在HTML這類語法中使用的自定義標記擴展 JSP頁面。自定義標記通過進一步分隔業務邏輯和表示邏輯也允許你提供更好的封裝。另外,它們提供了自定義表示的方法,而使用JSTL卻很難做到這一點。

自定義標記的好處:

他們能夠消除JSP應用程序中的scriptlets。標記必需的參數可以作為屬性或內容體傳遞,因此,不需要Java代碼初始化或設置組件屬性。它們的語法非常類似。Scriptlets是使用Java代碼編寫的,但是可以在類似于HTML語法中使用自定義標記。它們能夠提高非程序員內容開發者的生產率,允許它們執行HTML不行完成的任務。它們是可重用的。節省了開發和測試的時間。Scriptlets不是可重用的,除非你通過剪切粘貼 來“重用”。簡而言之,你可以使用和使用HTML創建表達式一樣的方法來通過自定義標記完成復雜的任務。編寫自定義標記庫的時候,可以使用下列編程指南:保持簡單性:如果需要在一個標記中包含多個屬性,那么***將它分為多個標記。使它具有可用性:咨詢標記的使用者(HTML開發者)從而獲得高可用性。不要在JSP頁面中發明一種編程語言:不要開發自定義標記讓用戶編寫顯式的程序。盡量不要重新發明輪子:目前有多個JSP標記庫可用,如Jakarta Taglibs Project。查看這些標記庫,看看是否有你所想要的東西。

不要重新發明輪子:雖然自定義標記提供了重用寶貴的組件的方法,但是仍然要創建、測試和調試它們。另外,開發者仍然要不斷地重新發明輪子,該解決方案的效率不是***的。問題就是通過提供一組顆重用的標準標記解決JavaServer Pages Standard Tag Library (JSTL) 。JSTL定義了一組在任何地方都一樣工作的標準標記庫,這樣你就不再需要使用scriptlet(或各類供應商提供的迭代標記)在集合中進行迭代。 JSTL 包括各類標記,循環、不使用Java語法就讀取屬性、迭代各類數據結構、有條件地計算表達式、通過一種精確的方式設置屬性和腳本變量并分析XML文檔。

使用JSTL表達式語言: 使用JSP范圍屬性和請求參數將信息傳遞給JSP頁面。表達式語言 (EL)是為頁面作者特別設計的語言,將JSP范圍屬性提升為業務邏輯到JSP頁面通訊的標準方法。然而Servlet和JSP,注意,然而EL是JSP技術的一個關鍵方面.

【編輯推薦】

  1. JSP IIS的***解決方案實例分析
  2. JSP能否再掀Web狂潮
  3. Servlet和JSP中的多線程同步問題
  4. JSP是不是Java發展史上的一大敗筆?
  5. JSP像烏云般擋住了JSF的光芒
責任編輯:佚名 來源: IT168
相關推薦

2009-07-09 16:24:31

Servlets和JS

2009-06-30 13:38:37

SERVLET和JSP

2009-07-09 16:16:06

Servlets和JSJRun安裝

2009-07-03 11:50:26

Java ServleJSP

2009-03-16 15:07:20

JSP分頁window.openJSP表單

2010-02-04 11:55:27

ibmdwDB2

2010-12-02 10:30:09

Apache Hado反模式Map Reduce

2011-09-01 14:36:38

敏捷

2011-08-18 11:05:21

jQuery

2023-07-21 01:12:30

Reactfalse?變量

2022-07-26 08:00:00

測試工具回歸測試軟件功能

2012-11-05 09:27:00

VDI網絡傳輸WAN

2013-01-16 14:45:47

HadoopApache Hado

2022-06-28 13:25:19

K8sPrometheusGrafana

2023-06-09 19:01:03

軟件開發

2015-09-23 09:08:38

java反射

2011-12-21 13:52:27

JavaJFreeChart

2023-09-11 08:50:03

Maven工具關系管理

2012-08-09 09:10:56

代碼審查代碼

2024-08-21 08:02:47

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 波多野吉衣久久 | 国产精品久久久久久久久动漫 | 亚洲欧美在线观看 | 免费在线黄 | 亚洲一本 | 久久久久久久久久久久久久久久久久久久 | 亚洲情综合五月天 | 精品一区二区三区在线观看 | 狠狠操电影 | 国产精品视频在线观看 | 欧美成人aaa级毛片在线视频 | 日韩一区二区成人 | 一区二区三区精品 | 日本欧美在线观看视频 | 成人av片在线观看 | 久久久高清 | 婷婷开心激情综合五月天 | 日韩中出| 一区二区在线不卡 | 成人国产精品久久 | 激情五月婷婷综合 | 色婷婷九月 | 国产午夜精品久久 | 日本高清精品 | caoporn地址| 欧美三级久久久 | 免费在线色 | 99精品网 | 国产精品久久九九 | 成人在线精品视频 | 欧美日韩成人在线观看 | 日日操夜夜干 | 国产精品欧美精品 | 羞羞在线观看视频 | 亚洲一区二区三区四区五区中文 | 在线观看免费av网站 | 色婷婷精品久久二区二区蜜臂av | 欧美专区在线视频 | 最新毛片网站 | 国产99小视频 | 国产高清久久 |