一、JSP簡介
JSP全名為Java Server Pages,Java服務器端頁面,其根本是一個簡化的Servlet設計,它實現了在Java中使用HTML標簽。Jsp是一種動態網頁技術標准,是在服務器端執行的。
它使用JSP標簽在HTML網頁中插入Java代碼。標簽通常以<%開頭以%>結束。
JSP是一種Java servlet,主要用於實現Java web應用程序的用戶界面部分。網頁開發者們通過結合HTML代碼、XHTML代碼、XML元素以及嵌入JSP操作和命令來編寫JSP。
JSP通過網頁表單獲取用戶輸入數據、訪問數據庫及其他數據源,然后動態地創建網頁。
JSP標簽有多種功能,比如訪問數據庫、記錄用戶選擇信息、訪問JavaBeans組件等,還可以在不同的網頁中傳遞控制信息和共享信息。
# 為什么使用JSP?
首先先了解CGI(Common Gateway Interface,通用網關接口),是一種重要的互聯網技術,可以讓一個客戶端,從網頁瀏覽器向執行在網絡服務器上的程序請求數據。CGI描述了服務器和請求處理程序之間傳輸數據的一種標准。
CGI是外部應用程序(CGI程序)與Web服務器之間的接口標准,是在CGI程序和Web服務器之間傳遞信息的過程。CGI規范允許Web服務器執行外部程序,並將它們的輸出發送給Web瀏覽器,CGI將Web的一組簡單的靜態超媒體文檔變成一個完整的新的交互式媒體。
JSP程序與CGI程序有着相似的功能,但和CGI程序相比,JSP程序有如下優勢:
- 性能更加優越,因為JSP可以直接在HTML網頁中動態嵌入元素而不需要單獨引用CGI文件。
- 服務器調用的是已經編譯好的JSP文件,而不像CGI/Perl那樣必須先載入解釋器和目標腳本。
- JSP基於Java Servlets API,因此,JSP擁有各種強大的企業級Java API,包括JDBC,JNDI,EJB,JAXP等等。
- JSP頁面可以與處理業務邏輯的servlets一起使用,這種模式被Java servlet 模板引擎所支持。
最后,JSP是Java EE不可或缺的一部分,是一個完整的企業級應用平台。這意味着JSP可以用最簡單的方式來實現最復雜的應用。
# JSP的優勢
以下列出了使用JSP帶來的其他好處:
- 與ASP相比:JSP有兩大優勢。首先,動態部分用Java編寫,而不是VB或其他MS專用語言,所以更加強大與易用。第二點就是JSP易於移植到非MS平台上。
- 與純 Servlets相比:JSP可以很方便的編寫或者修改HTML網頁而不用去面對大量的println語句。
- 與SSI相比:SSI無法使用表單數據、無法進行數據庫鏈接。
- 與JavaScript相比:雖然JavaScript可以在客戶端動態生成HTML,但是很難與服務器交互,因此不能提供復雜的服務,比如訪問數據庫和圖像處理等等。
- 與靜態HTML相比:靜態HTML不包含動態信息。
# JSP總覽圖
二、常用動態網站開發技術
常見動態網站開發技術對比:
JavaEE比較適用於以下開發:
三、JSP頁面元素構成
3.1、JSP指令
JSP的三大指令元素:
- page指令語法:
如:
注意:pageEncoding是jsp文件本身的編碼,contType的charset是指服務器發給客戶端的內容編碼。contType更常用。
3.2、JSP注釋
在JSP頁面的注釋。
可以在JSP頁面使用三種注釋:
如:
3.3、JSP腳本
在JSP頁面中執行的Java代碼。
寫在這一對標簽的所有語句都可以認為是JSP腳本。
3.4、JSP聲明
在JSP頁面中定義變量或者方法。
如:
3.5、JSP表達式
在JSP頁面中執行的表達式。
如:通過表達式調用上面聲明的函數或變量。
運行結果:
四、JSP頁面的生命周期
JSP頁面的生命周期是用戶發出對jsp頁面的訪問,如果是第一次訪問,jsp引擎就會將jsp文件生成為一個servlet,生成字節碼文件執行jspInit(),注意這個方法只在生成字節碼文件時會被使用,即在一個生命周期中只執行一次,然后對於不是第一次訪問jsp頁面時,直接返回字節碼文件。
具體說明:
注意:
1、生成字節碼文件,執行jspInit()只在第一次請求時執行,重復請求僅只執行一次。生成的文件在work里,【每次修改會重新編譯,生成新的字節碼文件】
2、jspService()用於處理用戶請求,對於每一個請求,JSP引擎會創建一個新的線程來處理該請求【JSP多線程:降低資源需求,提高系統並發量及響應時間,但注意同步問題】。
3、由於該Servlet常駐於內存里,所以響應速度非常快。
Ps:當用戶第一次請求一個jsp頁面時,首先被執行的方法是構造方法。
五、階段項目
表達式方式實現:
腳本方式實現:
注:out對象是JspWriter類的實例,用於向客戶端輸出內容