Servlet--HttpServlet

來源:互聯網
上載者:User

標籤:逾時   伺服器   socket   extends   順序   exception   停止   eric   res   

一.Servlet 介面(javax.servlet)
定義:
     public interface Servlet
     Implemented by: FacesServlet, GenericServlet, JspPage
介紹:
     servlet 是運行在 Web 服務器中的小型 Java 程式。servlet 通常通過 HTTP(超文字傳輸通訊協定 (HTTP))接收和響應來自 網頁用戶端的請求。
     要實現此介面,可以編寫一個擴充 javax.servlet.GenericServlet 的一般 servlet,或者編寫一個擴充 javax.servlet.http.HttpServlet 的 HTTP servlet。
     此介面定義了初始化 servlet 的方法、為請求提供服務的方法和從伺服器移除 servlet 的方法。這些方法稱為生命週期方法,它們是按以下順序調用的:
     1)構造 servlet,然後使用 init 方法將其初始化。
     2)處理來自用戶端的對 service 方法的所有調用。
     3)從服務中取出 servlet,然後使用 destroy 方法銷毀它,最後進行記憶體回收並終止它。
     除了生命週期方法之外,此介面還提供了 getServletConfig 方法和 getServletInfo 方法,servlet 可使用前一種方法獲得任何啟動資訊,而後一種方法允許 servlet     返回有關其自身的基本資料,比如作者、版本和著作權。
常用方法:
     public void destroy():由 servlet 容器調用,指示將從服務中取出該 servlet。此方法僅在 servlet 的 service
                             方法已退出或者在過了逾時期之後調用一次。在調用此方法之後,servlet容器不會再對此 servlet 調用 service 方法。
     public ServletConfig getServletConfig():返回 ServletConfig 對象,該對象包含此 servlet 的初始化和啟動參數。返回的 ServletConfig 對象是傳遞給 init 方法的對象.
                             此介面的實現負責儲存 ServletConfig 對象,以便此方法可以返回該對象。實現此介面的 GenericServlet 類已經這樣做了。
     public String getServletInfo():返回有關 servlet 的資訊,比如作者、版本和著作權.此方法返回的字串應該是純文字,不應該是任何種類的標記(比如 HTML、XML,等等).
     public void init(ServletConfig config) throws ServletException:由 servlet 容器調用,指示將該 servlet 放入服務.servlet 容器僅在執行個體化 servlet 之後調用 init 方法一次。
                                                     在 servlet 可以接收任何請求之前,init 方法必須成功完成.
     public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException:由 servlet 容器調用,以允許 servlet 響應某個請求。此方法僅在 servlet 的 init()
                                                                 方法成功完成之後調用,應該為拋出或發送錯誤的 servlet 設定響應的狀態碼。

二.HttpServlet 類(javax.servlet.http)
繼承關係:
     java.lang.Object--javax.servlet.GenericServlet--javax.servlet.http.HttpServlet
定義:
     public abstract class HttpServlet extends GenericServlet implements Serializable
介紹:
     提供將要被子類化以建立適用於 Web 網站的 HTTP servlet 的抽象類別。HttpServlet 的子類至少必須重寫一個方法,該方法通常是以下這些方法之一:
         doGet,如果 servlet 支援 HTTP GET 請求
         doPost,用於 HTTP POST 請求
         doPut,用於 HTTP PUT 請求
         doDelete,用於 HTTP DELETE 請求
         init 和 destroy,用於管理 servlet 的生命週期內儲存的資源
         getServletInfo,servlet 使用它提供有關其自身的資訊
構造方法:
     public HttpServlet():不執行任何操作,因為這是一個抽象類別。
常用方法:
     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{}:由伺服器調用(通過 service 方法),以允許 servlet 處理 GET 請求。
                                                                             req 包含用戶端對 servlet 發出的請求的 HttpServletRequest 對象;
                                                                             resp 包含 servlet 向用戶端發送的響應的 HttpServletResponse 對象.
     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{}:由伺服器調用(通過 service 方法),以允許 servlet 處理 POST 請求。
                                                                             HTTP POST 方法允許用戶端一次將不限長度的資料發送到 Web 服務器,這在發送諸如信用卡號之類的資訊時很有用.       
     protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException,IOException{}:由伺服器調用(通過 service 方法),以允許 servlet 處理 PUT 請求,
                                                                             PUT 操作允許用戶端將檔案放在伺服器上,類似於通過 FTP 傳送檔案。
     public void service(ServletRequest req, ServletResponse res) throws ServletException,IOException:將用戶端請求分發給受保護的 service 方法。無需重寫此方法。

三.web執行流程
     1.實現項目,發布到伺服器下(Tomcat的webapps檔案夾下);
     2.啟動Tomcat伺服器(實際上是啟動了ServerSocket對象,監聽8080連接埠,等待用戶端串連);
     3.當使用者在瀏覽器地址欄輸入網址時,即向伺服器發起請求(此時瀏覽器底層建立起Socket對象,將HTTP的請求部分(請求行/要求標頭/請求體)發送至伺服器);
     4.伺服器(Servlet介面或其實作類別)分析請求,通過service方法判斷是請求動態資源還是靜態資源,如果是動態資源則使用反射技術,建立對象;如果是靜態資源,則直接讀取檔案夾中的內容;
     5.伺服器(Tomcat)結合http協議響應部分和輸出資料流向用戶端進行響應;
     6.瀏覽器通過輸入資料流接收來自伺服器的資料,進行解析和處理,並展現給使用者;

四.Servlet生命週期
1_當使用者通過瀏覽器首次訪問某個Servlet時,tomcat會調用servlet的建構函式建立一個Servlet對象,之後調用servlet下的init方法(僅執行一次);
2_調用servlet下的service方法,在service方法中判斷本次是GET/POST方法,調用servlet下的doget/dopost方法;
3_以後從用戶端瀏覽器每次向服務端對當前servlet發起請求,僅僅只執行其下的service__>doget/dopost;
4_停止伺服器(正常/中斷)/重新附加元件目 servlet銷毀;
   正常停止伺服器/重新附加元件目會執行destory方法
     注意: 單一實例多線程模式,會有效率問題,安全問題

Servlet--HttpServlet

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.