1. 程式人生 > >Servlet&JSP概述

Servlet&JSP概述

假設 編輯 文件 求一個 sps b- 封裝 頁面 客戶端

沒記錯應該是出自菜鳥教程(www.runoob.com)。。。


配置:
編輯好的servlet源文件並不能直接相應用戶請求,還必須將其編譯成.class文件,將編譯好的.class文件放到WEB-INF/classes路徑下;如果servlet有包,則還需要將.class文件放到包路徑下。

容器到servlet的周期流程:
1.客戶發出請求 -> Web服務器轉發到Web容器Tomcat;
2.Tomcat主線程對轉發來用戶的請求做出響應,創建兩個對象:HttpServletRequest和HTTPServletResponse;
3.從請求的URL中找到正確的Servlet,Tomcat為其創建或者分配一個線程,同時把上述兩個對象傳遞給該線程;
4.Tomcat調用Servlet的service()方法,根據請求參數的不同調用doGet()或者doPost()方法;
5.假設是HTTP GET請求,doGet()方法生成靜態頁面,並組合到響應對象裏;

Servlet線程結束時:Tomcat將響應對象轉換為HTTP響應發給客戶,同時刪除請求和響應對象。
可以將Servlet的生命周期概括為:Servlet類加載(3)、Servlet實例化(3)、調用init方法(3)、調用service()方法(4、5)、調用destroy()方法。

1.WEB容器(Servlet引擎)接收到以.jsp為擴展名的URL的訪問請求時,容器會把訪問請求交給JSP引擎去處理;
2.每個JSP頁面在第一次被訪問時,JSP引擎將它翻譯成一個Servlet源程序,接著再把這個Servlet源程序編譯成Servlet的.class類文件,然後再由WEB容器(Servlet引擎)像調用普通Servlet程序一樣的方式來裝載和解釋這個由JSP頁面翻譯成的Servlet程序,並執行該Servlet實例的jspinit()方法(jspinit()方法在Servlet的生命周期中只被執行一次);
3.然後創建並啟動一個新的線程,新線程調用實例的jspService()方法。(對於每一個請求,JSP引擎會創建一個新的線程來處理該請求。如果有多個客戶端同時請求該JSP文件,則JSP引擎會創建多個線程,每個客戶端請求一個線程);
4.瀏覽器在調用JSP文件時,Servlet容器會把瀏覽器的請求和對瀏覽器的回應封裝成HttpServletRequest和HttpServletResponse對象,同時調用對應的Servlet實例中的jspService()方法,把這兩個對象作為參數傳遞到jspService()方法中;
5.jspService()方法執行後會將HTML內容返回給客戶端。

Servlet&JSP概述