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

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),漳平企業(yè)網(wǎng)站建設(shè),漳平品牌網(wǎng)站建設(shè),網(wǎng)站定制,漳平網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,
漳平網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
1 Servlet基本執(zhí)行過程
Web容器(如Tomcat)判斷當(dā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請求
Web容器負(fù)責(zé)處理請求。讓我們看看它如何處理請求。
- 將用戶請求與web.xml文件中的Servlet進(jìn)行映射。
- 創(chuàng)建請求和響應(yīng)對(duì)象
- 創(chuàng)建新的線程,并在該線程上調(diào)用Servlet的service方法
- 在public的service方法內(nèi)部調(diào)用protected的service方法
- protected的service方法根據(jù)請求的類型調(diào)用doGet方法。
- doGet方法生成響應(yīng)并將其傳遞給客戶端。
- 發(fā)送響應(yīng)后,Web容器將刪除請求和響應(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);
}
網(wǎng)站欄目:深入淺析Servlet在Java中的運(yùn)行原理-創(chuàng)新互聯(lián)
路徑分享:
http://weahome.cn/article/cejiej.html