91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

深入淺析 Servlet 在Java中的運行原理

發布時間:2020-11-11 14:50:23 來源:億速云 閱讀:95 作者:Leah 欄目:開發技術

深入淺析 Servlet 在Java中的運行原理?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

1 Servlet基本執行過程

Web容器(如Tomcat)判斷當前請求是否第一次請求Servlet程序 。

如果是第一次,則Web容器執行以下任務:

  • 加載Servlet類。
  • 實例化Servlet類。
  • 調用init方法并傳入ServletConfig對象

如果不第一次執行,則:

  • 調用service方法,并傳入request和response對象

Web容器在需要刪除Servlet時(例如,在停止服務器或重新部署項目時)將調用destroy方法。

2 Web容器如何處理Servlet請求

Web容器負責處理請求。讓我們看看它如何處理請求。

  • 將用戶請求與web.xml文件中的Servlet進行映射。
  • 創建請求和響應對象
  • 創建新的線程,并在該線程上調用Servlet的service方法
  • 在public的service方法內部調用protected的service方法
  • protected的service方法根據請求的類型調用doGet方法。
  • doGet方法生成響應并將其傳遞給客戶端。
  • 發送響應后,Web容器將刪除請求和響應對象。該線程是繼續留在線程池中還是被刪除取決于服務器實現。
     

3 public的service方法部分源碼

public的service方法將ServletRequest對象轉換為HttpServletRequest類型,而ServletResponse對象轉換為HttpServletResponse類型。然后,調用傳遞這些對象的服務方法。讓我們看一下內部代碼:

public void service(ServletRequest req, ServletResponse res) 
  throws ServletException, IOException 
{ 
  HttpServletRequest request; 
  HttpServletResponse response; 
  try 
  { 
    request = (HttpServletRequest)req; 
    response = (HttpServletResponse)res; 
  } 
  catch(ClassCastException e) 
  { 
    throw new ServletException("non-HTTP request or response"); 
  } 
  service(request, response); 
} 

4 protected的service方法部分源碼

protected的service方法判斷請求的類型,如果請求類型為GET,則調用doGet方法,如果請求類型為POST,則調用doPost方法,依此類推。讓我們看一下內部代碼:

protected void service(HttpServletRequest req, HttpServletResponse resp) 
    throws ServletException, IOException 
{ 
  String method = req.getMethod(); 
  if(method.equals("GET")) 
  { 
    long lastModified = getLastModified(req); 
    if(lastModified == -1L) 
    { 
      doGet(req, resp); 
    }  
.... 
//rest of the code 
  } 
}

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

扎鲁特旗| 平潭县| 封丘县| 乐清市| 元谋县| 昌黎县| 铁岭县| 凤阳县| 林西县| 泾源县| 西宁市| 炎陵县| 晋州市| 芷江| 成武县| 康乐县| 高安市| 呈贡县| 呼和浩特市| 台江县| 清水河县| 天峨县| 屏东市| 辽宁省| 海阳市| 宁德市| 磐安县| 额尔古纳市| 枣庄市| 周宁县| 兴化市| 鄂托克旗| 吉木萨尔县| 山西省| 丰都县| 揭阳市| 高安市| 博湖县| 招远市| 上栗县| 阿瓦提县|