SlideShare a Scribd company logo
Submit Search
Upload
Ch02 撰寫與設定 Servlet
Report
Share
Justin Lin
Technology / Community Evangelist at Free lancer
Follow
•
0 likes
•
352 views
1
of
37
Ch02 撰寫與設定 Servlet
•
0 likes
•
352 views
Report
Share
Download Now
Download to read offline
Technology
開發環境準備與使用 了解 Web 應用程式架構 Servlet 撰寫與部署設定 了解 URI 模式對應 使用 web-fragement.xml
Read more
Justin Lin
Technology / Community Evangelist at Free lancer
Follow
Recommended
CH1. 簡介 Web 應用程式 by
CH1. 簡介 Web 應用程式
Justin Lin
1.2K views
•
55 slides
Ch06 使用 JSP by
Ch06 使用 JSP
Justin Lin
250 views
•
83 slides
Ch07 使用 JSTL by
Ch07 使用 JSTL
Justin Lin
161 views
•
74 slides
Ch03 請求與回應 by
Ch03 請求與回應
Justin Lin
236 views
•
73 slides
Ch04 會話管理 by
Ch04 會話管理
Justin Lin
238 views
•
30 slides
Ch09 整合資料庫 by
Ch09 整合資料庫
Justin Lin
233 views
•
92 slides
More Related Content
What's hot
Ch13 整合 Spring MVC/Security by
Ch13 整合 Spring MVC/Security
Justin Lin
280 views
•
58 slides
Ch02 撰寫與設定Servlet by
Ch02 撰寫與設定Servlet
Justin Lin
1K views
•
37 slides
Ch12 Spring 起步走 by
Ch12 Spring 起步走
Justin Lin
274 views
•
31 slides
Java SE 8 技術手冊第 9 章 - Collection與Map by
Java SE 8 技術手冊第 9 章 - Collection與Map
Justin Lin
4.9K views
•
81 slides
Java SE 8 技術手冊第 12 章 - Lambda by
Java SE 8 技術手冊第 12 章 - Lambda
Justin Lin
4.4K views
•
100 slides
CH1:Java平台概論 by
CH1:Java平台概論
Justin Lin
1.2K views
•
41 slides
What's hot
(20)
Ch13 整合 Spring MVC/Security by Justin Lin
Ch13 整合 Spring MVC/Security
Justin Lin
•
280 views
Ch02 撰寫與設定Servlet by Justin Lin
Ch02 撰寫與設定Servlet
Justin Lin
•
1K views
Ch12 Spring 起步走 by Justin Lin
Ch12 Spring 起步走
Justin Lin
•
274 views
Java SE 8 技術手冊第 9 章 - Collection與Map by Justin Lin
Java SE 8 技術手冊第 9 章 - Collection與Map
Justin Lin
•
4.9K views
Java SE 8 技術手冊第 12 章 - Lambda by Justin Lin
Java SE 8 技術手冊第 12 章 - Lambda
Justin Lin
•
4.4K views
CH1:Java平台概論 by Justin Lin
CH1:Java平台概論
Justin Lin
•
1.2K views
FHIR Server 安裝與使用 by Lorex L. Yang
FHIR Server 安裝與使用
Lorex L. Yang
•
4.1K views
Java SE 8 技術手冊第 1 章 - Java平台概論 by Justin Lin
Java SE 8 技術手冊第 1 章 - Java平台概論
Justin Lin
•
11.6K views
Java Tutorial:Learn Java in 06:00:00 by Justin Lin
Java Tutorial:Learn Java in 06:00:00
Justin Lin
•
27.5K views
2. 型態、變數與運算子 by Justin Lin
2. 型態、變數與運算子
Justin Lin
•
588 views
CH04:認識物件 by Justin Lin
CH04:認識物件
Justin Lin
•
421 views
1. JavaScript 起步走 by Justin Lin
1. JavaScript 起步走
Justin Lin
•
772 views
Spring 2.0 技術手冊第一章 - 認識 Spring by Justin Lin
Spring 2.0 技術手冊第一章 - 認識 Spring
Justin Lin
•
10K views
慈濟大學/FHIR 快速掃描/DSTU3 版本 by Lorex L. Yang
慈濟大學/FHIR 快速掃描/DSTU3 版本
Lorex L. Yang
•
1.4K views
DVGA writeup by Yu Iwama
DVGA writeup
Yu Iwama
•
444 views
CH02:從JDK到IDE by Justin Lin
CH02:從JDK到IDE
Justin Lin
•
481 views
The Cucumber for Java by Jonghwa Lee
The Cucumber for Java
Jonghwa Lee
•
318 views
Java SE 8 技術手冊第 4 章 - 認識物件 by Justin Lin
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
•
4.2K views
初學者都該了解的 HTTP 通訊協定基礎 by Will Huang
初學者都該了解的 HTTP 通訊協定基礎
Will Huang
•
12.9K views
Enterprise java unit-2_chapter-2 by sandeep54552
Enterprise java unit-2_chapter-2
sandeep54552
•
132 views
Similar to Ch02 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器 by
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器
Justin Lin
2.7K views
•
64 slides
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet by
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Justin Lin
6.1K views
•
36 slides
Ch05 Servlet進階API、過濾器與傾聽器 by
Ch05 Servlet進階API、過濾器與傾聽器
Justin Lin
504 views
•
70 slides
Spring mvc by
Spring mvc
pepsixp
1.2K views
•
38 slides
Servlet & JSP 教學手冊第二版 - 第 3 章:請求與回應 by
Servlet & JSP 教學手冊第二版 - 第 3 章:請求與回應
Justin Lin
4.5K views
•
66 slides
ASP.NET MVC 6 新功能探索 by
ASP.NET MVC 6 新功能探索
Will Huang
11.5K views
•
48 slides
Similar to Ch02 撰寫與設定 Servlet
(20)
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器 by Justin Lin
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器
Justin Lin
•
2.7K views
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet by Justin Lin
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Justin Lin
•
6.1K views
Ch05 Servlet進階API、過濾器與傾聽器 by Justin Lin
Ch05 Servlet進階API、過濾器與傾聽器
Justin Lin
•
504 views
Spring mvc by pepsixp
Spring mvc
pepsixp
•
1.2K views
Servlet & JSP 教學手冊第二版 - 第 3 章:請求與回應 by Justin Lin
Servlet & JSP 教學手冊第二版 - 第 3 章:請求與回應
Justin Lin
•
4.5K views
ASP.NET MVC 6 新功能探索 by Will Huang
ASP.NET MVC 6 新功能探索
Will Huang
•
11.5K views
Asp.net mvc 6 新功能初探 by Gelis Wu
Asp.net mvc 6 新功能初探
Gelis Wu
•
2.7K views
DEV305 - ASP.NET 5 開發攻略 by Will Huang
DEV305 - ASP.NET 5 開發攻略
Will Huang
•
6.1K views
開發環境建置 by Shengyou Fan
開發環境建置
Shengyou Fan
•
101.1K views
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫 by Justin Lin
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Justin Lin
•
3.4K views
View 與 Blade 樣板引擎 by Shengyou Fan
View 與 Blade 樣板引擎
Shengyou Fan
•
10.1K views
twMVC#19 | opserver監控服務的解決 by twMVC
twMVC#19 | opserver監控服務的解決
twMVC
•
773 views
使用 ASP.NET 5 實戰開發雲端應用程式 by Will Huang
使用 ASP.NET 5 實戰開發雲端應用程式
Will Huang
•
4.3K views
How to ASP.NET MVC4 by Daniel Chou
How to ASP.NET MVC4
Daniel Chou
•
987 views
Route路由控制 by Shengyou Fan
Route路由控制
Shengyou Fan
•
8.8K views
使用 Controller by Shengyou Fan
使用 Controller
Shengyou Fan
•
34.2K views
使用 Controller by Shengyou Fan
使用 Controller
Shengyou Fan
•
5.5K views
线程编程方面 by yiditushe
线程编程方面
yiditushe
•
213 views
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫 by Justin Lin
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Justin Lin
•
2.1K views
J2ee经典学习笔记 by yiditushe
J2ee经典学习笔记
yiditushe
•
1.4K views
More from Justin Lin
Ch14 簡介 Spring Boot by
Ch14 簡介 Spring Boot
Justin Lin
872 views
•
22 slides
Ch11 簡介 JavaMail by
Ch11 簡介 JavaMail
Justin Lin
157 views
•
8 slides
Ch10 Web 容器安全管理 by
Ch10 Web 容器安全管理
Justin Lin
153 views
•
30 slides
Ch08 自訂標籤 by
Ch08 自訂標籤
Justin Lin
133 views
•
54 slides
14. 進階主題 by
14. 進階主題
Justin Lin
406 views
•
86 slides
13.並行、平行與非同步 by
13.並行、平行與非同步
Justin Lin
237 views
•
81 slides
More from Justin Lin
(20)
Ch14 簡介 Spring Boot by Justin Lin
Ch14 簡介 Spring Boot
Justin Lin
•
872 views
Ch11 簡介 JavaMail by Justin Lin
Ch11 簡介 JavaMail
Justin Lin
•
157 views
Ch10 Web 容器安全管理 by Justin Lin
Ch10 Web 容器安全管理
Justin Lin
•
153 views
Ch08 自訂標籤 by Justin Lin
Ch08 自訂標籤
Justin Lin
•
133 views
14. 進階主題 by Justin Lin
14. 進階主題
Justin Lin
•
406 views
13.並行、平行與非同步 by Justin Lin
13.並行、平行與非同步
Justin Lin
•
237 views
12. 除錯、測試與效能 by Justin Lin
12. 除錯、測試與效能
Justin Lin
•
153 views
11. 常用內建模組 by Justin Lin
11. 常用內建模組
Justin Lin
•
149 views
10. 資料永續與交換 by Justin Lin
10. 資料永續與交換
Justin Lin
•
156 views
9. 資料結構 by Justin Lin
9. 資料結構
Justin Lin
•
292 views
8. open() 與 io 模組 by Justin Lin
8. open() 與 io 模組
Justin Lin
•
245 views
7. 例外處理 by Justin Lin
7. 例外處理
Justin Lin
•
115 views
6. 類別的繼承 by Justin Lin
6. 類別的繼承
Justin Lin
•
166 views
5. 從模組到類別 by Justin Lin
5. 從模組到類別
Justin Lin
•
169 views
4. 流程語法與函式 by Justin Lin
4. 流程語法與函式
Justin Lin
•
188 views
3.型態與運算子 by Justin Lin
3.型態與運算子
Justin Lin
•
199 views
1. Python起步走 by Justin Lin
1. Python起步走
Justin Lin
•
662 views
2. 從 REPL 到 IDE by Justin Lin
2. 從 REPL 到 IDE
Justin Lin
•
234 views
Python 3.9 技術手冊目錄 by Justin Lin
Python 3.9 技術手冊目錄
Justin Lin
•
580 views
CH19:深入模組化 by Justin Lin
CH19:深入模組化
Justin Lin
•
791 views
Ch02 撰寫與設定 Servlet
1.
1
2.
2 • 撰寫與設定 Servlet 學習目標 •
開發環境準備與使用 • 了解 Web 應用程式架構 • Servlet 撰寫與部署設定 • 了解 URI 模式對應 • 使用 web-fragement.xml 2
3.
準備開發環境 • Java SE
15 • Eclipse IDE for Java EE Developers • Tomcat 9 3
4.
第一個 Servlet 程式 4
5.
5
6.
關於 HttpServlet • Servlet
API 的相關類別 6
7.
• 類別路徑(Classpath)中必須包括 Servlet API的相關類別 –
手動... – IDE... 7
8.
關於 HttpServlet 8
9.
關於 HttpServlet 9
10.
使用 @WebServlet • Servlet
3.0 可使用標註 10
11.
使用web.xml • 部署描述檔(Deployment Descriptor,DD檔) 11
12.
使用web.xml • web.xml 的設定會覆蓋
Servlet 的標註設定 – 可以使用標註來作預設值 – web.xml 日後更改設定值之用 12
13.
使用web.xml 13
14.
環境根目錄(Context Root) • 設定方式因
Web 應用程式伺服器而不同 14
15.
使用 web.xml • Servlet
在 web.xml 會有三個名稱設定 – <url-pattern> 設定的邏輯名稱 – <servlet-name> 註冊的 Servlet 名稱 – <servlet-class> 設定的實體類別名稱 15
16.
檔案組織與部署 16
17.
檔案組織與部署 • 實際上在部署 Web
應用程式時,會將 Web 應 用程式封裝為一個 WAR(Web Archive)檔案 – 副檔名為 *.war 的檔案 – 可使用 JDK 附的 jar 工具程式來建立 – 在Eclipse可以執行「Export/WAR file」匯出 WAR • Tomcat 容器若發現 webapps 目錄中有 WAR 檔案,會將之解壓縮,並載入 Web 應用程式 17
18.
URI 模式設定 • 請
求URI – 環境路徑 – Servlet 路徑 – 路徑資訊 • 可使用 HttpServletRequest 的 getRequestURI() 來取得 18
19.
環境路徑 • 容器挑選哪個 Web
應用程式的依據 • 環境路徑的設定方式標準中並沒有規範,依 使用的應用程式伺服器而有所不同 • 可使用 HttpServletRequest 的 getContextPath() 來取得 • 如果應用程式環境路徑與 Web 伺服器環境根 路徑相同,則應用程式環境路徑為空字串 • 如果不是,則應用程式環境路徑以 “/” 開頭, 不包括 "/" 結尾 19
20.
URI 模式設定 • 路徑對應(Path
mapping) – "/" 開頭但 "/*" 結尾的 URI 模式,例如 "/guest/* • 延伸對應(extension mapping) – 以 "*." 開頭的URI模式,例如 "*.view" • 環境根目錄(Context root)對應 • 預設 Servlet – 僅包括 "/" 的 URI 模式 • 嚴格匹配(Exact match) – 不符合以上設定的其他字串,例如/guest/test.view 20
21.
URI 模式設定 • 如果
URI 模式在設定比對的規則在某些URI請 求時有所重疊,則請求時比對的原則是從最 嚴格的URI模式開始符合 – "/admin/login.do" – "/admin/*" – "*.do" 請求/admin/login.do 21
22.
Servlet 路徑 • 不包括路徑資訊(Path
info)與請求參數 (Request parameter) • Servlet 路徑直接對應至 URI 模式資訊 • 可使用 HttpServletRequest 的 getServletPath() 來取得 • 基本上是以 "/" 開頭 • 在 "/*" 與 "" 的情況下, getServletPath() 取得的 Servlet 路徑是 空字串 22
23.
Servlet路徑 • 若請求是根據 "/hello.do"
對應至某個 Servlet – Servlet 路徑就是 "/hello.do" • 如果透過 "/servlet/*" 對應至 Servlet – Servlet 路徑就是"/servlet" • 如果透過 "/*" 或 "" 對應至Servlet – Servlet 路徑就是空字串 23
24.
路徑資訊 • 不包括請求參數,指的是不包括環境路徑 與 Servlet
路徑部份的額外路徑資訊 • 可使用 HttpServletRequest 的 getPathInfo() 來取得 – 如果沒有額外路徑資訊,則為 null 24
25.
25
26.
HttpServletMapping • 在 Servlet
4.0 ,HttpServletRequest 新增 了 getHttpServletMapping() 方法 26
27.
Web 目錄結構 • 一個
Web 應用程式基本上會由以下項目組成: – 靜態資源(HTML、圖片、聲音等) – Servlet – JSP – 自定義類別 – 工具類別 – 部署描述檔(web.xml等)、設定資訊 (Annotation 等) 27
28.
WEB-INF • 不被列入應用程式根目錄中可直接存取項目 – /WEB-INF/web.xml
是部署描述檔。 – /WEB-INF/classes 用來放置應用程式用到的自定義類別 (.class),必須包括套件(Package)結構 – /WEB-INF/lib 用來放置應用程式用到的 JAR(Java ARchive)檔案 • 可以透過程式面的控管,讓程式來取得 /WEB-INF 的資源,像是使用 ServletContext 的 getResource() 與 getResourceAsStream(), 或是透過 RequestDispatcher 請求調派 28
29.
Web 應用程式用到的JAR檔案 • 可以放置
Servlet、JSP、自定義類別、工具類 別、部署描述檔等 • 應用程式的類別載入器可以從 JAR 載入對應 的資源 • 可以在 JAR 檔案的 /META-INF/resources 目錄 中放置靜態資源或 JSP 等 29
30.
類別尋找 • /WEB-INF/classes • /WEB-INF/lib
的 JAR 檔案 • 容器實作本身存放類別或 JAR 的目錄 30
31.
歡迎頁面 • web.xml • 尋找順序 –
目錄 – JAR 的 /META-INF/resources • 如果 URI 最後是以/結尾,但不存在該目錄, 則會使用預設 Servlet 31
32.
使用 web-fragment.xml • Servlet
3.0 – JAR 檔案可用來作為 Web 應用程式的部份模組 – 部署描述檔 web-fragment.xml – 放置在 JAR 檔案中的 META-INF 目錄之中 32
33.
使用 web-fragment.xml 33
34.
web.xml 與 web-fragment.xml •
決定 web.xml 與 web-fragment.xml 配置順序 • 各個 JAR 檔 web-fragment.xml 定義的名稱不 得重複,若有重複,則會忽略掉重複的名稱 34
35.
另一個定義順序的方式 • 各個 JAR
中... • web.xml 沒有定 義順序資訊 • 載入定義的順序 – web.xml – WebFragment3 – WebFragment2 – WebFragment1 35
36.
metadata-complete 屬性 • 設定為
true(預設是 false),表示 web.xml 中已完成 Web 應用程式的相關定義 – 部署時不會掃描標註與 web-fragment.xml 的定義 – 如果有 <absolute-ordering> 與 <ordering> 也會被忽略 36
37.
瑣瑣碎碎 • 如果 web-fragment.xml
指定的類別可以在 web 應用 程式的 /WEB-INF/classes 找到,就會使用該類別 • 如果該類別本身有標註,而 web-fragment.xml 有定 義該類別為 Servlet,則此時會有兩個 Servlet 實例 • 如果將 <web-fragment> 的 metadata- complete 屬性設定為 true(預設是false),就 只會處理自己 JAR 檔案中的標註資訊 37