[JSP]JSP 簡介

1.1 概述

1.1.1 什麼是 JSP?

  • JSP 全稱是 Java Server Pages,是一種動態網頁開發技術
  • 它與 PHP、ASP、ASP.NET 等語言相似,運行在服務端的語言。
  • JSP 是一種 Java Servlet,主要用於實現 Java Web 應用程序的用戶界面部分。
  • JSP 技術 以 Java 語言做爲腳本,它使用JSP標籤在HTML網頁中插入Java代碼。標籤一般以 <%開頭以 %>結束。 
  • JSP文件後綴名爲(*.jsp)。
  • JSP開發的WEB應用能夠跨平臺使用,既能夠運行在Linux上也能運行在Window上。


1.1.2 JSP 的優勢

與 ASP 相比:html

  • 動態部分用 Java 編寫,因此更增強大易用
  • 能夠移植到多種不一樣的服務器和操做系統

與 PHP 相比:數據庫

  • 更好的工具支持

與 Servlet 相比:瀏覽器

  • 建立 HTML 更方便

與 Javascript 相比:服務器

  • 雖然JavaScript能夠在客戶端動態生成HTML,可是很難與服務器交互,所以不能提供複雜的服務,好比訪問數據庫和圖像處理等等。


1.2 工做原理

1.2.1 JSP 和 Servlet的區別

JSP 是一種 Servlet,可是它與 HttpServlet 的工做方式不太同樣:jsp

  • HttpServlet 是先編譯後部署:先將源代碼編譯爲 class 文件,而後部署到服務器下
  • JSP 是先部署後編譯:先部署代碼,而後編譯爲 class 文件。JSP 會在客戶端第一次請求 JSP 文件時被編譯爲 HttpJspPage 類。該類會被服務器臨時存放在服務器工做目錄裏面。

因爲 JSP 只在客戶端第一次請求時被編譯,因此第一次請求 JSP 時會感受比較慢。
工具


1.2.2 JSP 工做原理

如下步驟代表了Web服務器是如何使用JSP來建立網頁的:
  1. 就像其餘普通的網頁同樣,您的瀏覽器發送一個HTTP請求給服務器。
  2. Web服務器識別出這是一個對JSP網頁的請求,而且將該請求傳遞給JSP引擎。經過使用URL或者.jsp文件來完成。
  3. JSP引擎從磁盤中載入JSP文件,而後將它們轉化爲servlet。這種轉化只是簡單地將全部模板文本改用println()語句,而且將全部的JSP元素轉化成Java代碼。
  4. JSP引擎將servlet編譯成可執行類,而且將原始請求傳遞給servlet引擎。
  5. Web服務器的某組件將會調用servlet引擎,而後載入並執行servlet類。在執行過程當中,servlet產生HTML格式的輸出並將其內嵌於HTTP response中上交給Web服務器。
  6. Web服務器以靜態HTML網頁的形式將HTTP response返回到您的瀏覽器中。
  7. 最終,Web瀏覽器處理HTTP response中動態產生的HTML網頁,就好像在處理靜態網頁同樣。
以上說起到的步驟能夠用下圖來表示:

1.3 生命週期

JSP 也是一種 Servlet,運行時只有一個實例,它也有生命週期。
spa

如下是JSP生命週期中所走過的幾個階段:
  1. 編譯階段:servlet容器編譯servlet源文件,生成servlet類
  2. 初始化階段:加載與JSP對應的servlet類,建立其實例,並調用它的初始化方法
  3. 執行階段:調用與JSP對應的servlet實例的服務方法
  4. 銷燬階段:調用與JSP對應的servlet實例的銷燬方法,而後銷燬servlet實例

很明顯,JSP生命週期的四個主要階段和servlet生命週期很是類似,下面給出圖示:
操作系統


code

JSP生命週期代碼實例
<% @ page contentType = " text/html; charset=GB2312 "   %>
< html >< head >< title >life.jsp </ title ></ head >< body >

<%
  
private   int  initVar = 0 ;
  
private   int  serviceVar = 0 ;
  
private   int  destroyVar = 0 ;
%>
  
<% !
  
public  void jspInit(){
    initVar
++ ;
    System.out.println(
" jspInit(): JSP被初始化了 " + initVar + " " );
  }
  
public  void jspDestroy(){
    destroyVar
++ ;
    System.out.println(
" jspDestroy(): JSP被銷燬了 " + destroyVar + " " );
  }
%>

<%
  serviceVar
++ ;
  System.out.println(
" _jspService(): JSP共響應了 " + serviceVar + " 次請求 " );

  
String  content1 = " 初始化次數 :  " + initVar;
  
String  content2 = " 響應客戶請求次數 :  " + serviceVar;
  
String  content3 = " 銷燬次數 :  " + destroyVar;
%>

< h1 > <% = content1  %> </ h1 >
< h1 > <% = content2  %> </ h1 >
< h1 > <% = content3  %> </ h1 >

</ body ></ html >


參考資料

Java Web 整合開發
htm

http://www.w3cschool.cc/jsp/jsp-tutorial.html
相關文章
相關標籤/搜索