亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

深入淺析 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

扎兰屯市| 邵阳县| 阜平县| 乡宁县| 左贡县| 德钦县| 遂溪县| 桦甸市| 济源市| 阿鲁科尔沁旗| 五大连池市| 新平| 包头市| 东山县| 绵阳市| 天祝| 临清市| 无极县| 诸城市| 林芝县| 临沧市| 甘泉县| 弥勒县| 大英县| 新蔡县| 滁州市| 东城区| 贺兰县| 五指山市| 云龙县| 西平县| 屏东市| 富蕴县| 兰考县| 平罗县| 东乡县| 阿克| 灵宝市| 香格里拉县| 于都县| 北海市|