SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
Ch08 自訂標籤
Report
Justin Lin
Follow
Technology / Community Evangelist at Free lancer
May. 24, 2018
•
0 likes
•
380 views
1
of
54
Ch08 自訂標籤
May. 24, 2018
•
0 likes
•
380 views
Download Now
Download to read offline
Report
Technology
使用Tag File自訂標籤 • 使用Simple Tag自訂標籤 • 使用Tag自訂標籤
Justin Lin
Follow
Technology / Community Evangelist at Free lancer
Recommended
Ch07 使用JSTL
Justin Lin
430 views
•
75 slides
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Justin Lin
6.1K views
•
36 slides
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Justin Lin
2.9K views
•
71 slides
Ch06 使用JSP
Justin Lin
532 views
•
86 slides
Servlet & JSP 教學手冊第二版 - 第 8 章:自訂標籤
Justin Lin
1.8K views
•
55 slides
整合資料庫
Justin Lin
853 views
•
102 slides
More Related Content
What's hot
Ch05 Servlet進階API、過濾器與傾聽器
Justin Lin
504 views
•
70 slides
Servlet & JSP 教學手冊第二版 - 第 3 章:請求與回應
Justin Lin
4.5K views
•
66 slides
Ch08 自訂標籤
Justin Lin
131 views
•
54 slides
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器
Justin Lin
2.7K views
•
64 slides
Ch02 撰寫與設定 Servlet
Justin Lin
336 views
•
37 slides
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Justin Lin
3.4K views
•
106 slides
What's hot
(20)
Ch05 Servlet進階API、過濾器與傾聽器
Justin Lin
•
504 views
Servlet & JSP 教學手冊第二版 - 第 3 章:請求與回應
Justin Lin
•
4.5K views
Ch08 自訂標籤
Justin Lin
•
131 views
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器
Justin Lin
•
2.7K views
Ch02 撰寫與設定 Servlet
Justin Lin
•
336 views
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Justin Lin
•
3.4K views
Ch02 撰寫與設定Servlet
Justin Lin
•
998 views
Ch13 整合 Spring MVC/Security
Justin Lin
•
279 views
Ch09 整合資料庫
Justin Lin
•
229 views
Ch03 請求與回應
Justin Lin
•
229 views
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Justin Lin
•
10K views
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Justin Lin
•
1.6K views
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
•
199 views
Servlet & JSP 教學手冊第二版 - 課後練習解答
Justin Lin
•
4.9K views
Java SE 8 技術手冊第 1 章 - Java平台概論
Justin Lin
•
11.6K views
Ch07 使用 JSTL
Justin Lin
•
155 views
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Justin Lin
•
3.2K views
Ch01 簡介Web應用程式
Justin Lin
•
1.7K views
CH1. 簡介 Web 應用程式
Justin Lin
•
1.1K views
CH02:從JDK到IDE
Justin Lin
•
477 views
Similar to Ch08 自訂標籤
2011 JavaTwo JSF 2.0
Anthony Chen
898 views
•
41 slides
J2ee经典学习笔记
yiditushe
1.4K views
•
60 slides
View 與 Blade 樣板引擎
Shengyou Fan
41.6K views
•
40 slides
Django development
loveyudu
711 views
•
49 slides
View 與 Blade 樣板引擎
Shengyou Fan
7.9K views
•
40 slides
喬叔 Elasticsearch Index 管理技巧與效能優化
Joe Wu
2.4K views
•
49 slides
Similar to Ch08 自訂標籤
(20)
2011 JavaTwo JSF 2.0
Anthony Chen
•
898 views
J2ee经典学习笔记
yiditushe
•
1.4K views
View 與 Blade 樣板引擎
Shengyou Fan
•
41.6K views
Django development
loveyudu
•
711 views
View 與 Blade 樣板引擎
Shengyou Fan
•
7.9K views
喬叔 Elasticsearch Index 管理技巧與效能優化
Joe Wu
•
2.4K views
Java SE 7 技術手冊投影片第 02 章 - 從JDK到IDE
Justin Lin
•
3.6K views
Lucene实践
晓锋 陈
•
655 views
Hibernate教程
Shilong Sang
•
2.1K views
中远公司 Java培训资料
yiditushe
•
132 views
OpenEJB - 另一個選擇
Justin Lin
•
1.8K views
开源应用日志收集系统
klandor
•
839 views
test
xieyq
•
396 views
HTML 語法教學
Shengyou Fan
•
4.4K views
03.wls depoly jdbc
Meng He
•
308 views
20111018 zhouchen share
zcbug
•
410 views
Spring4.x + hibernate4.x_配置详解
zany_hui
•
471 views
SQL Server 資料庫版本控管
Will Huang
•
9.3K views
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Justin Lin
•
5.3K views
OPM
goto100
•
378 views
More from Justin Lin
Ch14 簡介 Spring Boot
Justin Lin
859 views
•
22 slides
Ch12 Spring 起步走
Justin Lin
262 views
•
31 slides
Ch11 簡介 JavaMail
Justin Lin
155 views
•
8 slides
Ch10 Web 容器安全管理
Justin Lin
152 views
•
30 slides
Ch04 會話管理
Justin Lin
235 views
•
30 slides
14. 進階主題
Justin Lin
400 views
•
86 slides
More from Justin Lin
(20)
Ch14 簡介 Spring Boot
Justin Lin
•
859 views
Ch12 Spring 起步走
Justin Lin
•
262 views
Ch11 簡介 JavaMail
Justin Lin
•
155 views
Ch10 Web 容器安全管理
Justin Lin
•
152 views
Ch04 會話管理
Justin Lin
•
235 views
14. 進階主題
Justin Lin
•
400 views
13.並行、平行與非同步
Justin Lin
•
233 views
12. 除錯、測試與效能
Justin Lin
•
148 views
11. 常用內建模組
Justin Lin
•
140 views
10. 資料永續與交換
Justin Lin
•
148 views
9. 資料結構
Justin Lin
•
284 views
8. open() 與 io 模組
Justin Lin
•
242 views
7. 例外處理
Justin Lin
•
114 views
6. 類別的繼承
Justin Lin
•
165 views
5. 從模組到類別
Justin Lin
•
165 views
4. 流程語法與函式
Justin Lin
•
187 views
3.型態與運算子
Justin Lin
•
196 views
1. Python起步走
Justin Lin
•
645 views
2. 從 REPL 到 IDE
Justin Lin
•
231 views
Python 3.9 技術手冊目錄
Justin Lin
•
570 views
Recently uploaded
ncuma_pylab.pptx
NCU MCL
9 views
•
24 slides
ncuma_Taylor 多項式_習題2.pptx
NCU MCL
7 views
•
2 slides
ncuma_型別與迴圈.pptx
NCU MCL
129 views
•
26 slides
ncuma_Taylor 多項式.pptx
NCU MCL
12 views
•
6 slides
ncuma_字串.pptx
NCU MCL
6 views
•
19 slides
ncuma_函式.pptx
NCU MCL
5 views
•
10 slides
Recently uploaded
(14)
ncuma_pylab.pptx
NCU MCL
•
9 views
ncuma_Taylor 多項式_習題2.pptx
NCU MCL
•
7 views
ncuma_型別與迴圈.pptx
NCU MCL
•
129 views
ncuma_Taylor 多項式.pptx
NCU MCL
•
12 views
ncuma_字串.pptx
NCU MCL
•
6 views
ncuma_函式.pptx
NCU MCL
•
5 views
ncuma_函數畫圖_習題1.pptx
NCU MCL
•
25 views
ncuma_SymPy符號運算套件.pptx
NCU MCL
•
15 views
ncuma_Taylor 多項式_習題1.pptx
NCU MCL
•
9 views
ncuma_函數畫圖_習題2.pptx
NCU MCL
•
7 views
ncuma_函數畫圖.pptx
NCU MCL
•
20 views
ncuma_串列.pptx
NCU MCL
•
6 views
ncuma_牛頓法.pptx
NCU MCL
•
5 views
ncuma_邏輯與迴圈.pptx
NCU MCL
•
6 views
Ch08 自訂標籤
1.
1
2.
8 • 自訂標籤 學習目標 • 使用Tag
File自訂標籤 • 使用Simple Tag自訂標籤 • 使用Tag自訂標籤 2
3.
簡介Tag File 3
4.
簡介Tag File 4
5.
簡介Tag File • 撰寫一個副檔名為.tag的檔案,把它們放在 WEB-INF/tags底下 5
6.
簡介Tag File 6
7.
簡介Tag File • Tag
File會被容器轉譯為 javax.servlet.jsp.tagext.SimpleT agSupport的子類別 • 在Tag File中可以使用out、config、 request、response、session、 application、jspContext等隱含物件 • 其中jspContext在轉譯之後,實際上則是 javax.servlet.jsp.JspContext物件 7
8.
簡介Tag File • Tag
File在JSP中,並不是靜態包含 (<%@include>)或動態包含 (<jsp:include>) • 在Tag File中撰寫Scriplet的話 – 其中的隱含物件其實是轉譯後的.java中doTag() 方法中的區域變數 – 不可能與JSP中的Scriptlet溝通 8
9.
簡介Tag File 9
10.
處理標籤屬性與本體 10
11.
處理標籤屬性與本體 11
12.
處理標籤屬性與本體 12
13.
處理標籤屬性與本體 13
14.
處理標籤屬性與本體 • Tag File的標籤在使用時若有本體,預設是不 允許有Scriptlet的 •
tag指示元素的body-content屬性預設就 是scriptless,還可以設定empty或 tagdependent 14
15.
TLD檔案 • 如果要將Tag File包成JAR檔案,那麼有幾個 地方要注意一下: –
*.tag檔案必須放在JAR檔的META-INF/tags資料 夾或子資料夾下。 – 要定義TLD(Tag Library Description)檔案。 – TLD檔案必須放在JAR檔的META-INF/TLDS資 料夾下。 15
16.
16
17.
TLD檔案 17
18.
簡介Simple Tag 18
19.
簡介Simple Tag 19
20.
簡介Simple Tag 20
21.
了解API架構與生命週期 21
22.
了解API架構與生命週期 • 建立自訂標籤處理器實例。 • 呼叫標籤處理器的setJspContext()方法設定 PageContext實例。 •
如果是巢狀標籤中的內層標籤,則還會呼叫標籤處 理器的setParent()方法,並傳入外層標籤處理 器的實例。 • 設定標籤處理器屬性(例如這邊是呼叫IfTag的 setTest()方法來設定)。 • 呼叫標籤處理器的setJspBody()方法設定 JspFragment實例。 • 呼叫標籤處理器的doTag()方法。 • 銷毀標籤處理器實例。 22
23.
了解API架構與生命週期 • 每一次的請求都會建立新的標籤處理器實例, 而在執行doTag()過後就銷毀實例 • Simple
Tag的實作中,建議不要有一些耗資 源的動作 23
24.
了解API架構與生命週期 • 如果執行doTag()的過程在某些條件下,必 須中斷接下來頁面的處理或輸出,則可以丟 出SkipPageException 24
25.
處理標籤屬性與本體 25
26.
處理標籤屬性與本體 26
27.
27
28.
處理標籤屬性與本體 28
29.
處理標籤屬性與本體 29
30.
與父標籤溝通 30
31.
與父標籤溝通 31
32.
與父標籤溝通 32
33.
33
34.
34
35.
TLD檔案 • JAR檔案根目錄下放置編譯好的類別(包含 對應套件的資料夾)。 • JAR檔案META-INF資料夾或子資料夾中放置 TLD檔案。 35
36.
簡介Tag 36
37.
簡介Tag 37
38.
簡介Tag 38
39.
了解架構與生命週期 39
40.
了解架構與生命週期 • 嘗試從標籤池(Tag Pool)找到可用的標籤物件,如果找 到就直接使用,如果沒找到就建立新的標籤物件。 •
呼叫標籤處理器的setPageContext()方法設定 PageContext實例。 • 如果是巢狀標籤中的內層標籤,則還會呼叫標籤處理器的 setParent()方法,並傳入外層標籤處理器的實例。 • 設定標籤處理器屬性(例如這邊是呼叫IfTag的 setTest()方法來設定)。 • 呼叫標籤處理器的doStartTag()方法,並依不同的傳回 值決定是否執行本體或呼叫doAfterBody()、 doEndTag()方法(稍後詳述)。 • 將標籤處理器實例置入標籤池中以便再度使用。 40
41.
了解架構與生命週期 • Tag實例是可以重複使用的 • 自訂Tag類別時,要注意物件狀態是否會保 留下來,必要的時候,在doStartTag()方 法中,可以進行狀態重置的動作 •
別以為可以使用release()方法來作狀態重 置,因為release()方法只會在標籤實例真 正被銷毀回收前被呼叫 41
42.
了解架構與生命週期 42
43.
重複執行標籤本體 • 想繼承TagSupport實作<f:forEach>標 籤,該在哪個方法中實作? • doStartTag()?doEndTag()? 43
44.
44
45.
45
46.
處理本體執行結果 46
47.
處理本體執行結果 47
48.
處理本體執行結果 48
49.
處理本體執行結果 49
50.
與父標籤溝通 50
51.
51
52.
與父標籤溝通 52
53.
53
54.
綜合練習/微網誌 • 在微網誌首頁顯示使用者發佈的最新訊息, 並稍微利用一下自訂標籤,讓頁面的處理更 為精簡且易維護 54