JSP - 概觀介紹

JSP的全稱是Java Server Page,而它和Servlet一樣,都是HttpServlet(Servlet API)的子類。那他和Servlet差異是什麼呢?其實主要是工作的面向不同

在介紹Servlet的時候,每當我們需要顯示內容回傳給客戶端的時候,我們都透過了out.println()的方法。光要寫一個基本的html頁面就很痛苦了,更別說如果要加上Javascript,或者比較複雜的模板,利用Servlet來做更本就是夢魘。通常我們網站都會有部份是一樣的,例如頁首和頁尾,可以想像的到如何用out.println()把這些都拼起來的畫面嗎?我相信程式設計師應該會崩潰吧。更別說如果要維護和修改。

當初的Sun看到問題,所以才有了JSP的誕生。

JSP的面向是處理View的部份,也就是實際把動態產生的內容呈現給客戶端的處理。這樣的做法是我們能夠把邏輯和顯示層分開,達到更容易維護,並且做到sepreation of concerns。

前言

Servlet的介紹就告了一段落,今天開始,我們來看看另外一個使用了Servlet的技術作為底層,JSP。

什麼是JSP

JSP的全稱是Java Server Page,而它和Servlet一樣,都是HttpServlet(Servlet API)的子類。那他和Servlet差異是什麼呢?其實主要是工作的面向不同

在介紹Servlet的時候,每當我們需要顯示內容回傳給客戶端的時候,我們都透過了out.println()的方法。光要寫一個基本的html頁面就很痛苦了,更別說如果要加上Javascript,或者比較複雜的模板,利用Servlet來做更本就是夢魘。通常我們網站都會有部份是一樣的,例如頁首和頁尾,可以想像的到如何用out.println()把這些都拼起來的畫面嗎?我相信程式設計師應該會崩潰吧。更別說如果要維護和修改。

當初的Sun看到問題,所以才有了JSP的誕生。

JSP的面向是處理View的部份,也就是實際把動態產生的內容呈現給客戶端的處理。這樣的做法是我們能夠把邏輯和顯示層分開,達到更容易維護,並且做到sepreation of concerns。

JSP頁面的構成

基本上JSP和ASP非常的像。因此,如果有寫過aspx的人對於jsp頁面的會感覺比Servlet來的親切。

JSP頁面基本上有兩大類的內容:

  1. 純粹的靜態html element
  2. JSP Element - 這些是畫面動態的部份。裡面還有不同類型的JSP Element。有Scriptlet(就是在JSP裡面的java 語法)、Directive和Tag等

通常網頁一定有部份是靜態的,例如menu的文字這種比較不會變換的。不過有些是要動態產生的,例如登入的會員名字,就需要透過JSP Element。

之後會詳細看看每一個不同的JSP Element,但是目前來說,我們只需要知道在jsp裡面包在<% %>裡面的就是jsp element。

JSP和Servlet不同之處

JSP和Servlet雖然有共同的父類,但是他們有很多不同之處:

URL對應

Servlet的URL對應是需要設定的。

但是JSP的對應就是它的實體路徑

如何被載入

Servlet一開始就是被編譯成class檔案,然後被http request的時候在被Web Container掛載進來。

JSP是在被第一次呼叫的時候才會被Web Container先翻譯成為Servlet的java寫法,才編譯成為class檔案,放在Web Container一個 暫時的資料夾。雖然第一次執行會比Servlet慢,不過掛載以後就一樣了(因為JSP和Servlet一樣,只會掛載一次)。

更新方式

Servlet如果有修改,需要重新編譯,因此需要重啟Web Container的服務。

JSP頁面因為Web Container有在監控,因此,只要有修改,他會重新翻譯、編譯然後掛載。因此不需要重啟Web Container就能看到最新修改。

結語

透過這篇的介紹,希望對於JSP有了一些概念。

接下來我們會更深入的看JSP裡面的技術,並且如何讓我們開發網站更容易。


Google+

創用 CC 授權條款
Alan Tsai 的隨手筆記Alan Tsai製作,以創用CC 姓名標示 4.0 國際 授權條款釋出。