Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet

Justin Lin
Justin LinTechnology / Community Evangelist at Free lancer
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
CHAPTER 2
• 撰寫與設定Servlet
                 學習目標
                 •   開發環境準備與使用
                 •   了解Web應用程式架構
                 •   Servlet撰寫與部署設定
                 •   了解URL模式對應
                 •   使用web-fragement.xml
準備開發環境
• JDK6
• Eclipse(建議3.6以上版本)
• Tomcat 7
第一個Servlet程式
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
關於HttpServlet
• Servlet API的相關類別
• 類別路徑(Classpath)中必須包括Servlet API
  的相關類別
 – 手動...



 – IDE...
關於HttpServlet
關於HttpServlet
使用@WebServlet
• Servlet 3.0可使用標註
使用web.xml
• 部署描述檔(Deployment Descriptor,DD檔)
使用web.xml
• web.xml中的設定會覆蓋Servlet中的標註設定
 – 可以使用標註來作預設值
 – web.xml來作日後更改設定值之用
使用web.xml
環境根目錄(Context Root)
• 設定方式會因使用的Web應用程式伺服器而有
  所不同
使用web.xml
• 一個Servlet在web.xml中會有三個名稱設定
 – <url-pattern>設定的邏輯名稱
 – <servlet-name>註冊的Servlet名稱
 – <servlet-class>設定的實體類別名稱
檔案組織與部署
檔案組織與部署
• 實際上在部署Web應用程式時,會將Web應用
  程式封裝為一個WAR(Web Archive)檔案
 – 副檔名為*.war的檔案
 – 可使用JDK所附的jar工具程式來建立
 – 在Eclipse可以執行「Export/WAR file」匯出WAR
• Tomcat容器若發現webapps目錄中有WAR檔案,
  會將之解壓縮,並載入Web應用程式
URL模式設定
• 請求URI

 – 環境路徑
 – Servlet路徑
 – 路徑資訊
• 可使用HttpServletRequest的
  getRequestURI()來取得
環境路徑
• 容器用來決定該挑選哪個Web應用程式的依據
• 環境路徑的設定方式標準中並沒有規範,依
  使用的應用程式伺服器而有所不同
• 可使用HttpServletRequest的
  getContextPath()來取得
• 如果應用程式環境路徑與Web伺服器環境根路
  徑相同,則應用程式環境路徑為空字串
• 如果不是,則應用程式環境路徑以"/"開頭,
  不包括"/"結尾
URL模式設定
• 路徑對應(Path mapping)
  – "/"開頭但"/*"結尾的URL模式,例如"/guest/*
• 延伸對應(extension mapping)
  – 以"*."開頭的URL模式,例如"*.view"
• 環境根目錄(Context root)對應
• 預設Servlet
  – 僅包括"/"的URL模式
• 嚴格匹配(Exact match)
  – 不符合以上設定的其它的字串,例如/guest/test.view
URL模式設定
• 如果URL模式在設定比對的規則在某些URL
  請求時有所重疊,則請求時比對的原則是從
  最嚴格的URL模式開始符合
 – "/admin/login.do"
 – "/admin/*"          請求/admin/login.do
 – "*.do"
Servlet路徑
• 不包括路徑資訊(Path info)與請求參數
  (Request parameter)
• Servlet路徑直接對應至URL模式資訊
• 可使用HttpServletRequest的
  getServletPath()來取得
• 基本上是以"/"開頭
• 在"/*"與""的情況下,getServletPath()
  取得的Servlet路徑是空字串
Servlet路徑
• 若請求是根據"/hello.do"對應至某個Servlet
  – Servlet路徑就是"/hello.do"
• 如果透過"/servlet/*"對應至Servlet
  – Servlet路徑就是"/servlet"
• 如果透過"/*"或""對應至Servlet
  – Servlet路徑就是空字串
路徑資訊
• 不包括請求參數,指的是不包括環境路徑與
  Servlet路徑部份的額外路徑資訊
• 可使用HttpServletRequest的
  getPathInfo()來取得
 – 如果沒有額外路徑資訊,則為null
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Web目錄結構
• 一個Web應用程式基本上會由以下項目組成:
 –   靜態資源(HTML、圖片、聲音等)
 –   Servlet
 –   JSP
 –   自定義類別
 –   工具類別
 –   部署描述檔(web.xml等)、設定資訊
     (Annotation等)
WEB-INF
• 不被列入應用程式根目錄中可直接存取項目
  – /WEB-INF/web.xml 是部署描述檔。
  – /WEB-INF/classes 用來放置應用程式用到的自定義類別
    (.class),必須包括套件(Package)結構
  – /WEB-INF/lib 用來放置應用程式用到的JAR(Java
    ARchive)檔案
• 可以透過程式面的控管,讓程式來取得/WEB-INF中
  的資源,像是使用ServletContext的
  getResource()與getResourceAsStream(),
  或是透過RequestDispatcher請求調派
Web應用程式用到的JAR檔案
• 可以放置Servlet、JSP、自定義類別、工具類
  別、部署描述檔等
• 應用程式的類別載入器可以從JAR中載入對應
  的資源
• 可以在JAR檔案的/META-INF/resources目錄中
  放置靜態資源或JSP等
類別尋找
• /WEB-INF/classes
• /WEB-INF/lib的JAR檔案
• 容器實作本身存放類別或JAR的目錄
歡迎頁面
• web.xml




• 尋找順序
  – 目錄
  – JAR的/META-INF/resources
• 如果URL最後是以/結尾,但不存在該目錄,
  則會使用預設Servlet
使用web-fragment.xml
• Servlet 3.0
  – JAR檔案可用來作為Web應用程式的部份模組
  – 部署描述檔web-fragment.xml
  – 放置在JAR檔案中的META-INF目錄之中
使用web-fragment.xml
web.xml與web-fragment.xml
• 決定web.xml與web-fragment.xml的配置順序




• 各個JAR檔中web-fragment.xml定義的名稱不
  得重複,若有重複,則會忽略掉重複的名稱
另一個定義順序的方式
• 各個JAR中...
• web.xml沒有定義
  順序資訊
• 載入定義的順序
 –   web.xml
 –   WebFragment3
 –   WebFragment2
 –   WebFragment1
metadata-complete屬性
• 設定為true(預設是false),則表示
  web.xml中已完成Web應用程式的相關定義
 – 部署時不會掃描標註與web-fragment.xml中的定義
 – 如果有<absolute-ordering>與<ordering>
   也會被忽略
瑣瑣碎碎
• 如果web-fragment.xml中指定的類別可以在web應用
  程式的/WEB-INF/classes中找到,就會使用該類別
• 如果該類別本身有標註,而web-fragment.xml又有定
  義該類別為Servlet,則此時會有兩個Servlet實例
• 如果將<web-fragment>的metadata-complete
  屬性設定為true(預設是false),就只會處理自
  己JAR檔案中的標註資訊
1 of 36

Recommended

Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL by
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTLServlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTLJustin Lin
2.9K views71 slides
Servlet & JSP 教學手冊第二版 - 第 8 章:自訂標籤 by
Servlet & JSP 教學手冊第二版 - 第 8 章:自訂標籤Servlet & JSP 教學手冊第二版 - 第 8 章:自訂標籤
Servlet & JSP 教學手冊第二版 - 第 8 章:自訂標籤Justin Lin
1.8K views55 slides
Ch06 使用 JSP by
Ch06 使用 JSPCh06 使用 JSP
Ch06 使用 JSPJustin Lin
250 views83 slides
Servlet & JSP 教學手冊第二版 - 第 3 章:請求與回應 by
Servlet & JSP 教學手冊第二版 - 第 3 章:請求與回應Servlet & JSP 教學手冊第二版 - 第 3 章:請求與回應
Servlet & JSP 教學手冊第二版 - 第 3 章:請求與回應Justin Lin
4.5K views66 slides
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫 by
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫Justin Lin
3.4K views106 slides
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器 by
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器
Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器Justin Lin
2.7K views64 slides

More Related Content

What's hot

Ch02 撰寫與設定 Servlet by
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 ServletJustin Lin
352 views37 slides
Ch05 Servlet 進階 API、過濾器與傾聽器 by
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器Justin Lin
204 views69 slides
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP by
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSPServlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSPJustin Lin
3.2K views77 slides
Ch08 自訂標籤 by
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤Justin Lin
133 views54 slides
Ch09 整合資料庫 by
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫Justin Lin
233 views92 slides
Servlet & JSP 教學手冊第二版 - 課後練習解答 by
Servlet & JSP 教學手冊第二版 - 課後練習解答Servlet & JSP 教學手冊第二版 - 課後練習解答
Servlet & JSP 教學手冊第二版 - 課後練習解答Justin Lin
4.9K views39 slides

What's hot(20)

Ch02 撰寫與設定 Servlet by Justin Lin
Ch02 撰寫與設定 ServletCh02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin352 views
Ch05 Servlet 進階 API、過濾器與傾聽器 by Justin Lin
Ch05 Servlet 進階 API、過濾器與傾聽器Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin204 views
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP by Justin Lin
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSPServlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Servlet & JSP 教學手冊第二版 - 第 6 章:使用 JSP
Justin Lin3.2K views
Ch08 自訂標籤 by Justin Lin
Ch08 自訂標籤Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin133 views
Ch09 整合資料庫 by Justin Lin
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin233 views
Servlet & JSP 教學手冊第二版 - 課後練習解答 by Justin Lin
Servlet & JSP 教學手冊第二版 - 課後練習解答Servlet & JSP 教學手冊第二版 - 課後練習解答
Servlet & JSP 教學手冊第二版 - 課後練習解答
Justin Lin4.9K views
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet by Justin Lin
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 ServletServlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Justin Lin10.1K views
Ch03 請求與回應 by Justin Lin
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應
Justin Lin236 views
整合資料庫 by Justin Lin
整合資料庫整合資料庫
整合資料庫
Justin Lin855 views
Ch13 整合 Spring MVC/Security by Justin Lin
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin280 views
Ch07 使用JSTL by Justin Lin
Ch07 使用JSTL Ch07 使用JSTL
Ch07 使用JSTL
Justin Lin431 views
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail by Justin Lin
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMailServlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Servlet & JSP 教學手冊第二版 - 第 11 章:簡介 JavaMail
Justin Lin1.6K views
Ch05 Servlet進階API、過濾器與傾聽器 by Justin Lin
Ch05 Servlet進階API、過濾器與傾聽器Ch05 Servlet進階API、過濾器與傾聽器
Ch05 Servlet進階API、過濾器與傾聽器
Justin Lin504 views
Ch07 使用 JSTL by Justin Lin
Ch07 使用 JSTLCh07 使用 JSTL
Ch07 使用 JSTL
Justin Lin161 views
CH1. 簡介 Web 應用程式 by Justin Lin
CH1. 簡介 Web 應用程式CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin1.2K views
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理 by Justin Lin
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
Servlet & JSP 教學手冊第二版 - 第 4 章:會話管理
Justin Lin2.5K views
Ch06 使用JSP by Justin Lin
Ch06 使用JSP Ch06 使用JSP
Ch06 使用JSP
Justin Lin532 views
Ch02 撰寫與設定Servlet by Justin Lin
Ch02 撰寫與設定ServletCh02 撰寫與設定Servlet
Ch02 撰寫與設定Servlet
Justin Lin1K views
Ch01 簡介Web應用程式 by Justin Lin
Ch01 簡介Web應用程式Ch01 簡介Web應用程式
Ch01 簡介Web應用程式
Justin Lin1.7K views
Java SE 8 技術手冊第 1 章 - Java平台概論 by Justin Lin
Java SE 8 技術手冊第 1 章 - Java平台概論Java SE 8 技術手冊第 1 章 - Java平台概論
Java SE 8 技術手冊第 1 章 - Java平台概論
Justin Lin11.6K views

Similar to Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet

03.wls depoly jdbc by
03.wls depoly jdbc03.wls depoly jdbc
03.wls depoly jdbcMeng He
308 views111 slides
SQL Server 資料庫版本控管 by
SQL Server 資料庫版本控管SQL Server 資料庫版本控管
SQL Server 資料庫版本控管Will Huang
9.4K views28 slides
專案啟動與環境設定 by
專案啟動與環境設定專案啟動與環境設定
專案啟動與環境設定Shengyou Fan
9K views69 slides
DEV305 - ASP.NET 5 開發攻略 by
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略Will Huang
6.1K views39 slides
Config by
ConfigConfig
ConfigLearningTech
188 views9 slides
1~60 by
1~601~60
1~60s13993010
387 views116 slides

Similar to Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet(20)

03.wls depoly jdbc by Meng He
03.wls depoly jdbc03.wls depoly jdbc
03.wls depoly jdbc
Meng He308 views
SQL Server 資料庫版本控管 by Will Huang
SQL Server 資料庫版本控管SQL Server 資料庫版本控管
SQL Server 資料庫版本控管
Will Huang9.4K views
專案啟動與環境設定 by Shengyou Fan
專案啟動與環境設定專案啟動與環境設定
專案啟動與環境設定
Shengyou Fan9K views
DEV305 - ASP.NET 5 開發攻略 by Will Huang
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略
Will Huang6.1K views
02.web sphere培训 应用websphere by littlecong
02.web sphere培训 应用websphere02.web sphere培训 应用websphere
02.web sphere培训 应用websphere
littlecong432 views
開發環境建置 by Shengyou Fan
開發環境建置開發環境建置
開發環境建置
Shengyou Fan101.1K views
ASP.NET MVC 6 新功能探索 by Will Huang
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索
Will Huang11.5K views
使用 laravel 的前與後 by Shengyou Fan
使用 laravel 的前與後使用 laravel 的前與後
使用 laravel 的前與後
Shengyou Fan7K views
Java SE 8 技術手冊第 16 章 - 整合資料庫 by Justin Lin
Java SE 8 技術手冊第 16 章 - 整合資料庫Java SE 8 技術手冊第 16 章 - 整合資料庫
Java SE 8 技術手冊第 16 章 - 整合資料庫
Justin Lin2.9K views
test by xieyq
testtest
test
xieyq396 views
Java类加载器 by Fu Cheng
Java类加载器Java类加载器
Java类加载器
Fu Cheng1K views
2011 JavaTwo JSF 2.0 by Anthony Chen
2011 JavaTwo JSF 2.02011 JavaTwo JSF 2.0
2011 JavaTwo JSF 2.0
Anthony Chen899 views
Jsp by rdandy
JspJsp
Jsp
rdandy1.1K views
View 與 Blade 樣板引擎 by Shengyou Fan
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
Shengyou Fan7.9K views
View 與 Blade 樣板引擎 by Shengyou Fan
View 與 Blade 樣板引擎View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
Shengyou Fan10.1K views
Spring4.x + hibernate4.x_配置详解 by zany_hui
Spring4.x + hibernate4.x_配置详解Spring4.x + hibernate4.x_配置详解
Spring4.x + hibernate4.x_配置详解
zany_hui471 views
啟動 Laravel 與環境設定 by Shengyou Fan
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
Shengyou Fan52.5K views

More from Justin Lin

Ch14 簡介 Spring Boot by
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring BootJustin Lin
872 views22 slides
Ch12 Spring 起步走 by
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走Justin Lin
274 views31 slides
Ch11 簡介 JavaMail by
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMailJustin Lin
157 views8 slides
Ch10 Web 容器安全管理 by
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理Justin Lin
153 views30 slides
Ch04 會話管理 by
Ch04 會話管理Ch04 會話管理
Ch04 會話管理Justin Lin
238 views30 slides
14. 進階主題 by
14. 進階主題14. 進階主題
14. 進階主題Justin Lin
406 views86 slides

More from Justin Lin(20)

Ch14 簡介 Spring Boot by Justin Lin
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin872 views
Ch12 Spring 起步走 by Justin Lin
Ch12 Spring 起步走Ch12 Spring 起步走
Ch12 Spring 起步走
Justin Lin274 views
Ch11 簡介 JavaMail by Justin Lin
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin157 views
Ch10 Web 容器安全管理 by Justin Lin
Ch10 Web 容器安全管理Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin153 views
Ch04 會話管理 by Justin Lin
Ch04 會話管理Ch04 會話管理
Ch04 會話管理
Justin Lin238 views
14. 進階主題 by Justin Lin
14. 進階主題14. 進階主題
14. 進階主題
Justin Lin406 views
13.並行、平行與非同步 by Justin Lin
13.並行、平行與非同步13.並行、平行與非同步
13.並行、平行與非同步
Justin Lin237 views
12. 除錯、測試與效能 by Justin Lin
12. 除錯、測試與效能12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin153 views
11. 常用內建模組 by Justin Lin
11. 常用內建模組11. 常用內建模組
11. 常用內建模組
Justin Lin149 views
10. 資料永續與交換 by Justin Lin
10. 資料永續與交換10. 資料永續與交換
10. 資料永續與交換
Justin Lin156 views
9. 資料結構 by Justin Lin
9. 資料結構9. 資料結構
9. 資料結構
Justin Lin292 views
8. open() 與 io 模組 by Justin Lin
8. open() 與 io 模組8. open() 與 io 模組
8. open() 與 io 模組
Justin Lin245 views
7. 例外處理 by Justin Lin
7. 例外處理7. 例外處理
7. 例外處理
Justin Lin115 views
6. 類別的繼承 by Justin Lin
6. 類別的繼承6. 類別的繼承
6. 類別的繼承
Justin Lin166 views
5. 從模組到類別 by Justin Lin
5. 從模組到類別5. 從模組到類別
5. 從模組到類別
Justin Lin169 views
4. 流程語法與函式 by Justin Lin
4. 流程語法與函式4. 流程語法與函式
4. 流程語法與函式
Justin Lin188 views
3.型態與運算子 by Justin Lin
3.型態與運算子3.型態與運算子
3.型態與運算子
Justin Lin199 views
1. Python起步走 by Justin Lin
1. Python起步走1. Python起步走
1. Python起步走
Justin Lin662 views
2. 從 REPL 到 IDE by Justin Lin
2. 從 REPL 到 IDE2. 從 REPL 到 IDE
2. 從 REPL 到 IDE
Justin Lin234 views
Python 3.9 技術手冊目錄 by Justin Lin
Python 3.9 技術手冊目錄Python 3.9 技術手冊目錄
Python 3.9 技術手冊目錄
Justin Lin580 views

Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet