SlideShare a Scribd company logo
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
CHAPTER 6
• 使用JSP

              學習目標
              • 了解JSP生命週期
              • 使用JSP語法元素
              • 使用JSP標準標籤
              • 了解何謂Model 1架構
              • 使用運算式語言(EL)
              • 自訂EL函式
JSP生命週期
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
JSP生命週期
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Servlet至JSP的簡單轉換
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
指示元素

• page
• include
• taglib
page指示元素
• 指示如何轉譯...
page指示元素
• 可用屬性
 –   info
 –   autoFlush
 –   buffer
 –   errorPage
 –   extends
 –   isErrorPage
 –   language
 –   session
 –   isELIgnored
 –   isThreadSafe
include指示元素
include指示元素
指示元素
• 可以在web.xml中統一預設的網頁編碼、內容
  類型、緩衝區大小等
指示元素
• 可以宣告指定的JSP開頭與結尾要包括的網頁
宣告元素
• 轉譯為Servlet中的類別成員或方法
宣告元素
宣告元素
• 重新定義jspInit()、jspDestroy()
Scriptlet元素
• 轉譯為Servlet原始碼_jspService()方法
  中的內容
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
運算式元素
• 運算結果將直接輸出為網頁的一部份
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
禁用Scriptlet
• 如果想禁用JSP上的Scriptlet,則可以在
  web.xml中設定
註解元素
隱含物件
• 像out、request這樣的字眼,在轉譯為
  Servlet之後,會直接對應於_jspService()
  中的某個區域變數
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
隱含物件
• 隱含物件只能在<%與%>之間,或<%=與%>之
  間使用
• 無法在<%!與%>之間使用隱含物件
錯誤處理
• JSP終究會轉譯為Servlet,所以錯誤可能發生
  在三個時候
 – JSP轉換為Servlet原始碼時
 – Servlet原始碼進行編譯時
 – Servlet載入容器進行服務但發生執行時期錯誤時
JSP轉換為Servlet原始碼時
• 容器在轉譯JSP時不知道該怎麼將那些語法轉
  譯為Servlet的.java檔案
Servlet原始碼進行編譯時
• 嘗試將.java編譯為.class檔案,如果此時編譯
  器因為某個原因而無法完成編譯
進行服務但發生執行時期錯誤時
• 在執行時期因找不到某個資源、程式邏輯上
  的問題而發生錯誤
進行服務但發生執行時期錯誤時
errorPage屬性
errorPage屬性
errorPage屬性
web.xml設定
<jsp:include>、<jsp:forward>標籤

• 執行時期依條件動態地調整包括的JSP頁面




• 目前頁面會自己生成一個Servlet類別被包括的
  add.jsp也會獨立生成一個Servlet類別
• 轉譯而成的Servlet會取得RequestDispatcher物
  件,並執行include()方法
<jsp:include>、<jsp:forward>標籤

• 將請求轉發給另一個JSP頁面作處理



• 目前頁面會生成一個Servlet,而被轉發的
  add.jsp也是生成一個Servlet
• 轉譯的Servlet會取得RequestDispatcher
  物件,並執行forward()方法
簡介<jsp:useBean>、<jsp:setProperty>
       與<jsp:getProperty>
• 搭配<jsp:useBean>的JavaBean元件
 –   必須實作java.io.Serializable介面
 –   沒有公開(public)的類別變數
 –   具有無參數的建構式
 –   具有公開的設值方法(Setter)與取值方法
     (Getter)
簡介<jsp:useBean>、<jsp:setProperty>
       與<jsp:getProperty>
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
深入<jsp:useBean>、<jsp:setProperty>
       與<jsp:getProperty>
深入<jsp:useBean>、<jsp:setProperty>
       與<jsp:getProperty>
深入<jsp:useBean>、<jsp:setProperty>
       與<jsp:getProperty>
深入<jsp:useBean>、<jsp:setProperty>
       與<jsp:getProperty>
• 標籤的目的是減少JSP中Script的使用
• 反過來說,如果發現JSP中有Scriptlet,撰寫
  的是從某個屬性範圍中取得物件
• 思考是否可以用<jsp:useBean>來消除
  Scriptlet的使用
深入<jsp:useBean>、<jsp:setProperty>
       與<jsp:getProperty>



• 使用PageContext的findAttribute(),從
  page、request、session、application依序
  找看看有無name指定的屬性名稱
• 找到的話,再透過反射機制找出JavaBean上的
  setPassword()方法,呼叫並將value的指定值
  設定給JavaBean
深入<jsp:useBean>、<jsp:setProperty>
       與<jsp:getProperty>
• 將請求參數的值設定給JavaBean的某個屬性

• 由JSP的自省機制來判斷是否有相同的請求參
  數名稱

• 自省機制自動匹配
深入<jsp:useBean>、<jsp:setProperty>
       與<jsp:getProperty>
• 使用<jsp:useBean>時一併設定屬性值
深入<jsp:useBean>、<jsp:setProperty>
       與<jsp:getProperty>
• 底下這個有點不同
深入<jsp:useBean>、<jsp:setProperty>
       與<jsp:getProperty>
• 取得JavaBean屬性
Model 2
Model 2
談談Model 1
談談Model 1
XML格式標籤
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
簡介EL
簡介EL
• EL優雅地處理了null值的情況,對於null
  值直接以空字串加以顯示
簡介EL
• EL的點運算子還可以連續存取物件
簡介EL
• 可以使用page指示元素的isELIgnored屬
  性(預設是false),來設定JSP網頁是否使
  用EL
• 可以在web.xml中設定<el-ignored>標籤
  為true來決定不使用EL
簡介EL
• 如果 web.xml中的<el-ignored>與page指令元素
  的isELIgnored設定都沒有設定
 – 2.3或以下的版本,不會執行EL
 – 2.4或以上的版本,則會執行EL
• 不設定page指令元素的isELIgnored
 – web.xml中的<el-ignored>為false,則會執行EL,
 – web.xml中的<el-ignored>為true,則不會執行EL
• 使用page指令元素的isELIgnored設定是否支援
  EL,則以page指令元素的設定為主
使用EL取得屬性
• 存取屬性



• 存取陣列
使用EL取得屬性
• 如果使用點(.)運算子,則左邊可以是
  JavaBean或Map物件
• 如果使用[]運算子,則左邊可以是JavaBean、
  Map、陣列或List物件
• 例如JavaBean...
使用EL取得屬性
• 例如Map...
使用EL取得屬性
• 當左邊是Map物件時,建議使用[]運算子,
  因為如果設定Map時的鍵名稱有空白或點字
  元時,這是可以正確取得值的方式
使用EL取得屬性
• List的例子
使用EL取得屬性
• 如果[]運算子中不是使用雙引號,則會嘗試
  作運算
使用EL取得屬性
• []中也可以進行巢狀 ...
EL隱含物件
• pageContext隱含物件
• 屬性範圍相關隱含物件
• 請求參數相關隱含物件
• 標頭(Header)相關隱含物件
• cookie隱含物件
• 初始參數隱含物件
EL運算子
EL運算子
EL運算子
自訂EL函式
自訂EL函式
自訂EL函式
綜合練習/微網誌
• 使用JSP改寫先前綜合練習中使用Servlet所實
  現的視圖網頁

More Related Content

PPTX
Ch06 使用 JSP
PDF
Servlet & JSP 教學手冊第二版 - 第 8 章:自訂標籤
PPTX
Ch08 自訂標籤
PPTX
Ch02 撰寫與設定 Servlet
PDF
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
PDF
Servlet & JSP 教學手冊第二版 - 第 3 章:請求與回應
PDF
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
PDF
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Ch06 使用 JSP
Servlet & JSP 教學手冊第二版 - 第 8 章:自訂標籤
Ch08 自訂標籤
Ch02 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 3 章:請求與回應
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet

What's hot (20)

PPTX
Ch05 Servlet 進階 API、過濾器與傾聽器
PDF
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器
PPTX
Ch09 整合資料庫
PDF
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
PDF
Servlet & JSP 教學手冊第二版 - 課後練習解答
PPTX
Ch03 請求與回應
PPT
Java SE 8 技術手冊第 16 章 - 整合資料庫
PDF
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
PPTX
Ch13 整合 Spring MVC/Security
PDF
整合資料庫
PDF
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
PDF
Spring 2.0 技術手冊第七章 - Spring Web MVC 框架
PDF
Ch07 使用JSTL
PDF
Ch08 自訂標籤
PDF
工作坊總結
PPTX
CH1. 簡介 Web 應用程式
PDF
Ch06 使用JSP
PDF
Ch05 Servlet進階API、過濾器與傾聽器
PDF
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
PDF
CRUD 綜合運用
Ch05 Servlet 進階 API、過濾器與傾聽器
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器
Ch09 整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 課後練習解答
Ch03 請求與回應
Java SE 8 技術手冊第 16 章 - 整合資料庫
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Ch13 整合 Spring MVC/Security
整合資料庫
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
Spring 2.0 技術手冊第七章 - Spring Web MVC 框架
Ch07 使用JSTL
Ch08 自訂標籤
工作坊總結
CH1. 簡介 Web 應用程式
Ch06 使用JSP
Ch05 Servlet進階API、過濾器與傾聽器
Java SE 7 技術手冊投影片第 05 章 - 物件封裝
CRUD 綜合運用
Ad

Viewers also liked (18)

PDF
Servlet & JSP 教學手冊第二版 - 第 10 章:Web 容器安全管理
PDF
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
PDF
進階主題
PDF
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
PDF
讓程式展現樂趣 玩出實驗精神與創造力
PDF
Spring 2.0 技術手冊第六章 - Hibernate 與 Spring
PDF
Spring 2.0 技術手冊目錄
PDF
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
PDF
深入淺出 Web 容器 - Tomcat 原始碼分析
PDF
Java 8 與 retrolambda
PDF
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
PDF
java8-patterns
PDF
Java SE 7 技術手冊投影片第 04 章 - 認識物件
PDF
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
PDF
Java SE 7 技術手冊投影片第 07 章 - 介面與多型
PDF
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
PDF
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
PDF
Java Web 程式之效能技巧與安全防護
Servlet & JSP 教學手冊第二版 - 第 10 章:Web 容器安全管理
Servlet & JSP 教學手冊第二版 - 第 12 章:從模式到框架
進階主題
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
讓程式展現樂趣 玩出實驗精神與創造力
Spring 2.0 技術手冊第六章 - Hibernate 與 Spring
Spring 2.0 技術手冊目錄
Java SE 8 的 Lambda 連鎖效應 - 語法、風格與程式庫
深入淺出 Web 容器 - Tomcat 原始碼分析
Java 8 與 retrolambda
Java SE 7 技術手冊投影片第 06 章 - 繼承與多型
java8-patterns
Java SE 7 技術手冊投影片第 04 章 - 認識物件
Java SE 7 技術手冊投影片第 03 章 - 基礎語法
Java SE 7 技術手冊投影片第 07 章 - 介面與多型
Java SE 7 技術手冊投影片第 13 章 - 視窗程式設計
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Java Web 程式之效能技巧與安全防護
Ad

Similar to Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP (13)

PPT
Jsp
PDF
2011 JavaTwo JSF 2.0
PPT
網站設計100步
PPS
Flash UI - &#21830;&#26989;&#25033;&#29992;&#26696;&#20363;&#25506;&#35342;
PDF
Ch02 撰寫與設定Servlet
PPT
Eclipse開發平台快速入門
PDF
J2ee经典学习笔记
PPT
Html01
DOC
jsp基础速成精华讲解
PPT
Struts Mitac(1)
PPT
Jsp讲义
PDF
Spring 2.0 技術手冊第八章 - View 層方案、Web 框架整合
PPT
PHP & AppServ
Jsp
2011 JavaTwo JSF 2.0
網站設計100步
Flash UI - &#21830;&#26989;&#25033;&#29992;&#26696;&#20363;&#25506;&#35342;
Ch02 撰寫與設定Servlet
Eclipse開發平台快速入門
J2ee经典学习笔记
Html01
jsp基础速成精华讲解
Struts Mitac(1)
Jsp讲义
Spring 2.0 技術手冊第八章 - View 層方案、Web 框架整合
PHP & AppServ

More from Justin Lin (20)

PPTX
Ch14 簡介 Spring Boot
PPTX
Ch12 Spring 起步走
PPTX
Ch11 簡介 JavaMail
PPTX
Ch10 Web 容器安全管理
PPTX
Ch07 使用 JSTL
PPTX
Ch04 會話管理
PDF
14. 進階主題
PDF
13.並行、平行與非同步
PDF
12. 除錯、測試與效能
PDF
11. 常用內建模組
PDF
10. 資料永續與交換
PDF
9. 資料結構
PDF
8. open() 與 io 模組
PDF
7. 例外處理
PDF
6. 類別的繼承
PDF
5. 從模組到類別
PDF
4. 流程語法與函式
PDF
3.型態與運算子
PDF
1. Python起步走
PDF
2. 從 REPL 到 IDE
Ch14 簡介 Spring Boot
Ch12 Spring 起步走
Ch11 簡介 JavaMail
Ch10 Web 容器安全管理
Ch07 使用 JSTL
Ch04 會話管理
14. 進階主題
13.並行、平行與非同步
12. 除錯、測試與效能
11. 常用內建模組
10. 資料永續與交換
9. 資料結構
8. open() 與 io 模組
7. 例外處理
6. 類別的繼承
5. 從模組到類別
4. 流程語法與函式
3.型態與運算子
1. Python起步走
2. 從 REPL 到 IDE

Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP