欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Java Servlet 運(yùn)行原理分析

 更新時(shí)間:2020年11月10日 11:52:20   作者:一點(diǎn)教程  
這篇文章主要介紹了Java Servlet 運(yùn)行原理分析,幫助大家更好的理解和學(xué)習(xí)Java Servlet的相關(guān)知識(shí),感興趣的朋友可以了解下

1 Servlet基本執(zhí)行過程

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

如果是第一次,則Web容器執(zhí)行以下任務(wù):

  • 加載Servlet類。
  • 實(shí)例化Servlet類。
  • 調(diào)用init方法并傳入ServletConfig對(duì)象

如果不第一次執(zhí)行,則:

  • 調(diào)用service方法,并傳入request和response對(duì)象

Web容器在需要?jiǎng)h除Servlet時(shí)(例如,在停止服務(wù)器或重新部署項(xiàng)目時(shí))將調(diào)用destroy方法。

2 Web容器如何處理Servlet請(qǐng)求

Web容器負(fù)責(zé)處理請(qǐng)求。讓我們看看它如何處理請(qǐng)求。

  • 將用戶請(qǐng)求與web.xml文件中的Servlet進(jìn)行映射。
  • 創(chuàng)建請(qǐng)求和響應(yīng)對(duì)象
  • 創(chuàng)建新的線程,并在該線程上調(diào)用Servlet的service方法
  • 在public的service方法內(nèi)部調(diào)用protected的service方法
  • protected的service方法根據(jù)請(qǐng)求的類型調(diào)用doGet方法。
  • doGet方法生成響應(yīng)并將其傳遞給客戶端。
  • 發(fā)送響應(yīng)后,Web容器將刪除請(qǐng)求和響應(yīng)對(duì)象。該線程是繼續(xù)留在線程池中還是被刪除取決于服務(wù)器實(shí)現(xiàn)。

3 public的service方法部分源碼

public的service方法將ServletRequest對(duì)象轉(zhuǎn)換為HttpServletRequest類型,而ServletResponse對(duì)象轉(zhuǎn)換為HttpServletResponse類型。然后,調(diào)用傳遞這些對(duì)象的服務(wù)方法。讓我們看一下內(nèi)部代碼:

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方法判斷請(qǐng)求的類型,如果請(qǐng)求類型為GET,則調(diào)用doGet方法,如果請(qǐng)求類型為POST,則調(diào)用doPost方法,依此類推。讓我們看一下內(nèi)部代碼:

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 
  } 
}

以上就是Java Servlet 運(yùn)行原理分析的詳細(xì)內(nèi)容,更多關(guān)于Java Servlet 運(yùn)行原理的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java中final變量使用總結(jié)

    Java中final變量使用總結(jié)

    這篇文章主要介紹了Java中final變量使用總結(jié),final關(guān)鍵字可用于變量聲明,一旦該變量被設(shè)定,就不可以再改變?cè)撟兞康闹?通常final定義的變量為常量,需要的朋友可以參考下
    2015-06-06
  • 詳解Java數(shù)據(jù)結(jié)構(gòu)之平衡二叉樹

    詳解Java數(shù)據(jù)結(jié)構(gòu)之平衡二叉樹

    平衡二叉樹(Balanced?Binary?Tree)又被稱為AVL樹(有別于AVL算法),且具有以下性質(zhì):它是一?棵空樹或它的左右兩個(gè)子樹的高度差的絕對(duì)值不超過1,并且左右兩個(gè)子樹都是一棵平衡二叉樹。本文將詳解介紹一下平衡二叉樹的原理與實(shí)現(xiàn),需要的可以參考一下
    2022-02-02
  • Spring MVC Locale 本地化示例詳解

    Spring MVC Locale 本地化示例詳解

    這篇文章主要為大家介紹了Spring MVC Locale本地化示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-09-09
  • 如何基于Spring使用工廠模式實(shí)現(xiàn)程序解耦

    如何基于Spring使用工廠模式實(shí)現(xiàn)程序解耦

    這篇文章主要介紹了如何基于Spring使用工廠模式實(shí)現(xiàn)程序解耦,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • Java Date時(shí)間類型的操作實(shí)現(xiàn)

    Java Date時(shí)間類型的操作實(shí)現(xiàn)

    本文主要介紹Java Date 日期類型,以及Calendar的怎么獲取時(shí)間,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-03-03
  • Java通過SSM完成水果商城批發(fā)平臺(tái)流程

    Java通過SSM完成水果商城批發(fā)平臺(tái)流程

    這是一個(gè)使用了java+SSM開發(fā)的網(wǎng)上水果商城批發(fā)平臺(tái),是一個(gè)實(shí)戰(zhàn)小練習(xí),具有水果商城批發(fā)該有的所有功能,感興趣的朋友快來看看吧
    2022-06-06
  • 解決@JsonIgnore的使用以及自己踩坑

    解決@JsonIgnore的使用以及自己踩坑

    這篇文章主要介紹了解決@JsonIgnore的使用以及自己踩坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • JPA與mybatis-plus不兼容問題的解決

    JPA與mybatis-plus不兼容問題的解決

    本文主要介紹了JPA與mybatis-plus不兼容問題的解決,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • java數(shù)組輸出的實(shí)例代碼

    java數(shù)組輸出的實(shí)例代碼

    這篇文章主要介紹了java數(shù)組輸出的實(shí)例代碼,有需要的朋友可以參考一下
    2013-12-12
  • Java實(shí)戰(zhàn)項(xiàng)目之校園跑腿管理系統(tǒng)的實(shí)現(xiàn)

    Java實(shí)戰(zhàn)項(xiàng)目之校園跑腿管理系統(tǒng)的實(shí)現(xiàn)

    只有理論是不夠的,只有在實(shí)戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+Springboot+vue+maven+elementui+mysql實(shí)現(xiàn)一個(gè)校園跑腿管理系統(tǒng),大家可以在過程中查缺補(bǔ)漏,提升水平
    2022-01-01

最新評(píng)論