国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

JBuilder2005 Servlet開發之開發必備

2024-07-21 02:15:18
字體:
來源:轉載
供稿:網友
  用servlet可以創建協議、平臺無關的web應用程序,applet運行于瀏覽器的jre中,而servlet則運行于web應用服務器的servlet容器中,servlet沒有用戶圖形界面,servlet和web應用服務器的servlet容器交互以接收請求返回響應。請求最先由web應用服務器的servlet容器處理并傳給servlet,servlet通過web應用服務器返回響應給客戶端。客戶端程序可以使用任何可向web應用服務器發送請求的語言開發。

  servlet最大的優勢在于它的高性能,servlet采用了和cgi截然不同的運行方式,首先servlet在第一次初始化時裝載并駐留在內存中,以后直接從內存中運行;其次,在默認情況下servlet以單實例多線程的方式工作,一個新請求到達后,servlet實例開啟一個新的線程服務這個請求。

  servlet 結構和線程安全

  所有的servlet都直接或間接地實現javax.servlet.servlet接口,這些接口規定了servlet如何與servlet容器進行通訊的方法,此外還定義了servlet的生命周期。genericservlet是和協議無關的通用servlet,httpservlet是專門針對http協議開發的servlet,web應用程序的servlet都直接繼承httpservlet。其類的繼承體系如下圖所示:


圖 1 servlet的類繼承體系

  javax.servlet.servlet接口包括了3個控制servlet生命周期的方法,它們分別是:

  ·init(servletconfig config)方法

  當servlet初始化時,init()方法被調用執行初始化servlet的工作,init()方法只被調用一次。servlet初始化后就進入就緒態,隨時準備響應客戶端的請求。

  ·service(servletrequest req, servletresponse resp)方法

  servlet容器調用service()方法處理請求并返回響應。servletrequest和servletresponse作為入參傳給service(),servletrequest封裝了請求的信息而servletresponse封裝了響應的信息。

  ·destroy()方法

  servlet容器可以在任何時候卸載servlet,此時destory()被調用,你可以在這兒釋放servlet所占用的資源。

  而javax.servlet.http包中的類用于支持http協議,創建html網頁。http協議是基于請求/響應工作模式,這些http的請求方式包括:

  get

  post

  put

  delete

  head

  trace

  connect

  options

  javax.servlet.http.httpservlet定義了多個服務http協議的方法,這些方法名為doxxx()的樣式命名和http請求方式名相呼應:如http get請求方式對應doget(),而http post對應dopost()等。httpservlet最初以service(httpservletrequest req, httpservletresponse resp)響應客戶端請求,并依據http的請求方式調用相應的doxxx()方法來處理。

  一般的,你僅需要覆蓋doget()或dopost()方法,如果希望得到更多的控制,你也可以覆蓋doput()和dodelete()方法,其他的方法一般很少使用。如果你使用jbuilder的servlet向導,你可以具體指定創建哪些方法。

  特別需要指出的是servlet是以多線程的方式工作的,servlet可以同時處理多個請求。作為開發人員,需要注意servlet成員變量的線程安全,在doget()、dopost()中的局部域變量是線程安全的,而servlet的成員變量則有線程安全的隱患。所以除非你有意需要應用這種特性,在一般情況下,不宜將一些可改寫的變量定義成servlet的成員變量,否則一定要采取線程同步的措施確保線程安全。

  servlet的特性及適用場合

  雖然servlet也可以用于生成動態網頁,但這個功能已經逐漸讓位給新銳jsp了,不過servlet并沒有因為江山代有才人而成為java歷史博物館的古董,它依然身懷絕技笑傲江湖:

  ·自動啟動

  一般情況下,jsp只有在客戶端第一次調用后,方才進行編譯并初始化,而servlet則可以通過web.xml的<load-on-startup>配置,使其在web容器啟動時自動初始化。可使用servlet這個特性完成web應用程序的初始化工作:如下載字典表、控制表、初始化配置信息等,啟動某個后臺進程等。

  ·路徑匹配映射

  servlet可以通過web.xml 中<servlet-mapping>用通配符配置uri映射,對多個匹配的uri進行響應,而jsp只能通過一個具體的uri調用。這個特性可以使你在請求進入某個具體的頁面前截獲并處理它,許多web應用框架,如struts、spring都利用了servlet的這個特性,在此基礎上創建構架。

  ·servlet過濾器

  servlet過濾器繼承于javax.servlet.servlet并實現javax.servlet.filter的類,在請求到達服務程序前和響應發往客戶端前進行加工處理。如果有大量的頁面都需要進行相同的處理,則可以使用一個servlet過濾器對此一并處理。如你可以用servlet過濾器進行編碼轉換、或者為每個頁面添加一個統一的標題頭等。

  ·servlet監聽器

  j2ee定義了多個web事件監聽器接口,servlet監聽器是繼承javax.servlet.servlet并實現這些事件監聽接口的類。如果web應用服務器對某個web容器的事件感興趣,就可以構造一個實現該事件監聽接口的servlet,以便在該事件發生時做相應的處理。靈活使用servlet監聽器,可以使一些原來很難實現的操作變得易如反掌。

  此外,如果一個動態網頁的頁面展現邏輯少,而業務處理邏輯多,如一個計算圓周率并返回結果頁面的請求,這時使用servlet比jsp更適合。所以需要創建一個動態網頁,在到底使用servlet還是jsp的問題上舉棋不定時,請這記住下面這句經典的話:servlet是包含html代碼的java程序,而jsp是包含java代碼的html網頁。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 左云县| 高碑店市| 武胜县| 诏安县| 金昌市| 枣强县| 闵行区| 茌平县| 固镇县| 万盛区| 宜都市| 淳安县| 潞城市| 五峰| 盐城市| 南雄市| 新乡县| 武隆县| 昌宁县| 松江区| 嘉峪关市| 西乡县| 沈阳市| 娱乐| 德钦县| 铁岭市| 临江市| 中山市| 永仁县| 麦盖提县| 贵溪市| 承德县| 虎林市| 屏东市| 九龙县| 太仓市| 武宁县| 南汇区| 霸州市| 武鸣县| 广宁县|