Servlet學習(一)

一、基礎接口——javax.servlet.Servlet

 

Servlet接口定義了所有servlet都必須實現的方法。

 

Servlet是一個小型的運行在web服務器上的java程序。Servlet通過通過HTTP協議接收和響應客戶端的請求。

要實現這個接口,可以編寫一個通用的繼承了 javax.servlet.GenericServlet類的servlet,或者是編寫一個繼承了javax.servlet.http.HttpServlet類的HTTP的servlet。

這個接口定義了初始化servlet的方法,service請求,以及從服務器中移除servlet的方法。這些是servlet的生命週期方法,它們按照下面的順序被調用:

  •     servlet類初始化之後,則會調用init()方法進行初始化。
  •     任何客戶端對service()方法的調用都會被處理.
  •     servlet從服務中被移除並且使用destroy()方法銷燬該servlet,之後垃圾收集器會回收該servlet資源。


除了生命週期方法之外,這個接口還提供了getServletConfig()方法,servlet可以使用這個方法獲得任何啓動的信息。而getServletInfo()方法則可以允許servlet返回有關servlet本身的基本信息,比如作者、版本以及版權信息等。

 

javax.servlet.Servlet接口定義的方法如下所示:

 

  • public void init (ServletConfig config) throws ServletException——初始化方法
  • public void service (ServletRequest req, ServletResponse res) throws ServletException, IOException——處理客戶端請求的方法
  • public void destroy ()——銷燬servlet的方法
  • public ServletConfig getServletConfig()——返回包含了關於該servlet本身的初始化和啓動參數信息的ServletConfig對象,該ServletConfig對象會被傳遞給 init () 方法使用。
  • public String getServletInfo()——返回有關servlet本身的基本信息,比如作者、版本以及版權信息。

二、通用的servlet類——javax.servlet.GenericServlet

 

javax.servlet.GenericServlet是一個實現了javax.servlet.Servlet接口以及javax.servlet.ServletConfig接口的抽象類。

 

javax.servlet.GenericServlet抽象類定義了一個通用的、與協議無關的servlet。如果要編寫一個在Web上使用的HTTP servlet,則這個servlet需要繼承javax.servlet.http.HttpServlet 類,而不是繼承javax.servlet.GenericServlet類。

 

javax.servlet.GenericServlet類可以直接被其他servlet繼承,雖然更普遍的是繼承一個指定協議的javax.servlet.GenericServlet類的子類,比如javax.servlet.http.HttpServlet類。

 

 

javax.servlet.GenericServlet類使得servlet更容易編寫。它提供了生命週期方法init()和destroy()的簡單實現版本,也實現了javax.servlet.ServletConfig接口中的方法的簡單實現。javax.servlet.GenericServlet類也實現了log()方法,這個方法在javax.servlet.ServletContext接口中進行了聲明。

 

 

因此,要編寫一個通用的servlet,你必須實現的方法只有抽象方法service() 。.

 

三、HTTP協議使用的servlet——javax.servlet.http.HttpServlet

 

javax.servlet.http.HttpServlet類是抽象類javax.servlet.GenericServlet的子類,這個HttpServlet類是一個適合於web網站的HTTP servlet。javax.servlet.http.HttpServlet的子類必須至少重寫下面這些方法中的一個:

 

  • doGet()方法——如果這個servlet支持HTTP GET請求。
  • doPost()方法——如果這個servlet支持HTTP POST請求。
  • doPut()方法——如果這個servlet支持HTTP DELETE請求。
  • init()和destroy()方法——如果這個servlet需要管理生命週期的資源。
  • getServletInfo()方法——用來提供有關servlet本身的信息。

這裏沒有什麼理由需要重寫service() 方法。service() 方法通過爲每個HTTP請求類型分配處理器方法(上面列出來的doXXX方法)來處理標準的HTTP請求。

 

同樣地,這裏也沒有理由需要重寫doOptions()和doTrace()方法。

Servlet往往運行在多線程的服務器上,因此要意識到一個servlet必須處理併發請求,並且要謹慎處理同步訪問共享資源。共享資源包括內存數據比如實例或者類變量,外部對象比如文件、數據庫連接和網絡連接。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章