1.JSP 簡介及工作原理


1.JSP 簡介

JSP(Java Server Pages)是由Sun Microsystems公司倡導、許多公司參與一起建立的一種動態網頁技術標准。JSP技術有點類似ASP技術,它是在傳統的網頁HTML文件(*.htm,*.html)中插入Java程序段(Scriptlet)和JSP標記(tag),從而形成JSP文件,后綴名為(*.jsp)。 用JSP開發的Web應用是跨平台的,既能在Linux下運行,也能在其他操作系統上運行。

2.JSP 工作原理

 

JSP頁面工作原理圖

 

當一個JSP文件第一次被請求的時候,JSP引擎(本身也是一個Servlet)首先會把這個JSP文件轉換成一個Java源文件在轉換過程中如果發現JSP文件有語法錯誤,轉換過程將中斷,並向服務端和客戶端輸出出錯信息;如果轉換成功,JSP引擎用javac把該Java源文件編譯成相應的.class文件並將該.class文件加載到內存中。

 

其次創建一個該Servlet的實例,並執行該實例的jspInit()方法(jspInit()方法在Servlet的生命周期中只被執行一次)。

 

然后創建並啟動一個新的線程,新線程調用實例的jspService()方法。(對於每一個請求,JSP引擎會創建一個新的線程來處理該請求。如果有多個客戶端同時請求該JSP文件,則JSP引擎會創建多個線程,每個客戶端請求對應一個線程)。

 

瀏覽器在調用JSP文件時,Servlet容器會把瀏覽器的請求和對瀏覽器的回應封裝成HttpServletRequest和HttpServletResponse對象,同時調用對應的Servlet實例中的jspService()方法,把這兩個對象作為參數傳遞到jspService()方法中。

 

jspService()方法執行后會將HTML內容返回給客戶端。

 

如果JSP文件被修改了,服務器將根據設置決定是否對該文件進行重新編譯如果需要重新編譯,則將編譯結果取代內存中的Servlet,並繼續上述處理過程。 如果在任何時候由於系統資源不足,JSP引擎將以某種不確定的方式將Servlet從內存中移去。當這種情況發生時,jspDestroy()方法首先被調用, 然后Servlet實例便被標記加入“垃圾收集”處理。 

 

補充:

 

以多線程方式執行可大大降低對系統的資源需求,提高系統的並發量及響應時間,但應該注意多線程的編程限制,由於該Servlet始終駐於內存,所以響應是非常快的。

 

雖然JSP效率很高,但在第一次調用時由於需要轉換和編譯而有一些輕微的延遲。

 

在jspInit()中可以進行一些初始化工作,如建立與數據庫的連接、建立網絡連接、從配置文件中獲取一些參數等,而在jspDestory()中釋放相應的資源。

 JSP生命周期 init() 和Destory()

jspInit()及jspDestory()格式如下:

 

public void jspInit()      

 

 { 

 

     System.out.println("jspinit");   

 

 } 

 

public void jspDestory()   

 

 { 

 

    System.out.println("jspDestory");

 

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM