SlideShare a Scribd company logo
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
CHAPTER 1
• 簡介Web應用程式
              學習目標
              • 認識HTTP基本特性
              • 了解GET、POST使用時機
              • 了解何為URL/URI編碼
              • 認識Web容器角色與重要性
              • 初步了解Servlet與JSP的關係
              • 初步認識MVC/Model 2
Web應用程式基礎知識
• HTML(HyperText Markup Language)
• HTTP(HyperText Transfer Protocol)URL
  (Uniform Resource Locator)
• 文字編碼
Web應用程式
• 客戶端(Client)與伺服端(Server)
• 瀏覽器(Browser)與HTTP伺服器
 – 瀏覽器請求伺服器上的檔案或資源
 – 對本書的主旨來說,伺服器的檔案或資源必須產
   生HTML。
關於HTML
• 標籤(Tag)的方式來定義文件結構
關於HTML
• 瀏覽器依HTML的結構等資訊進行畫面繪製
關於HTML
• w3schools
  – http://w3schools.com
• HTML Tutorial
  – http://www.w3schools.com/html/default.asp
URL、URN與URI?
•   URL:Uniform Resource Locator
•   URN:Uniform Resource Name
•   URI:Uniform Resource Identifier
•   早期U代表Universal(萬用)
•   標準化之後代表著Uniform(統一)
URL
• 主要格式
 <協議>:<特定協議部份>


• 協議(scheme)指定了以何種方式取得資源
 – ftp(檔案傳輸協定,File Transfer protocol)
 – http(超文件傳輸協定,Hypertext Transfer
   Protocol)
 – mailto(電子郵件)
 – file(特定主機檔案名稱)
URL
• 特定協議部份的格式
 //<使用者>:<密碼>@<主機>:<埠號>/<路徑>
URL
• 檔案系統中C:workspace下的jdbc.pdf檔案
  file://C:/workspace/jdbc.pdf
URN
• 代表某個資源獨一無二的名稱
• 「Servlet & JSP教學手冊」的國際標準書號
  「ISBN 978-986-181-744-6」
URI
• URL與URN為URI的子集
 – 標準機構如W3C(World Wide Web Consortium)
   文件中,多使用URI
 – 舊習慣使然,程式設計人員口語交談也多見使用
   URL 這個舊稱
URL、URI與URN
• 歷史演進與標準發佈
 – http://en.wikipedia.org/wiki/Uniform_Resource_Ide
   ntifier
關於HTTP
關於HTTP
• 基於請求(Request)/回應(Response)模型
• 無狀態(Stateless)通訊協定
GET請求
• 向伺服器取得(GET)指定的資源
GET請求
• 可以發送的請求參數長度有限(這個長度依
  瀏覽器版本而有所不同)
• 太大量資料並不適合用GET方法來進行請求
POST請求
• 請求時發佈(POST)資訊給伺服器
POST請求
• 大量資料的發送都會使用POST方法
• 請求參數移至訊息本體,網址列上也就不會
  出現請求參數
• 較敏感的資訊,即使長度不長,通常也會改
  用POST的方式發送
GET或POST?
• 過長請求參數,應該改用POST
• 敏感性或有安全性考量的請求參數,不應使
  用GET請求來發送
• 希望可以讓使用者設定書籤,以便日後點選
  書籤瀏覽,應該使用GET
• 考慮瀏覽器會網址快取(Cache)資料的問題
GET或POST?
• GET請求應該用於等冪操作
• POST請求應該用於非等冪操作
GET或POST?
• <form>預設會使用GET
URL編碼
• 如果請求參數值本身包括=符號怎麼辦?

• URI保留字元
 – 「:」、「/」、「?」、「&」、「=」、「@」、
   「%」....
URI保留字元
• 要在請求參數上表達URI中的保留字元,必
  須在%字元之後以十六進位數值表示方式,
  來表示該字元的八個位元數值
 – 「:」(00111010 ) %3A
 – 「/」(00101111 ) %2F
URL編碼
• 使用java.net.URLEncoder類別的靜態
  encode()方法作編碼動作使用
• java.net.URLDecoder的靜態decode()
  方法作解碼動作
URL與HTTP編碼
• 在URI規範中,空白字元是編碼為%20
• 在HTTP規範中空白是編碼為「+」
中文字元
• URI規範的URL編碼,針對的是字元UTF-8編
  碼的八個位元數值
 – 林(UTF-8)  %E6%9E%97
 – 伺服端處理請求參數時,必須使用UTF-8編碼來
   取得正確的「林」字元
中文字元
• 在一個BIG5網頁中,若表單使用GET發送
  「林」這個中文字
 – 林(Big5)  %AA%4C
 – 伺服端處理請求參數時,就必須指定BIG5編碼,
   以取得正確的「林」中文字元
動態網頁?靜態網頁?
客戶端程式、伺服端程式
簡介Servlet/JSP
• JVM(Java Virtual Machine)是Java程式唯一
  認識的作業系統,其可執行檔為.class檔案
• Web容器(Container)是Servlet/JSP唯一認得
  的HTTP伺服器
何謂Web容器
• 對於撰寫Servlet/JSP來說,容器持有物件、負
  責物件生命周期與相關服務連結
• 具體層面....
 – 容器就是用Java寫的程式,運行於JVM之上
 – Servlet會接觸HttpServletRequest、
   HttpServletResponse等物件
 – HTTP文字性的通訊協定,如何變成Servlet/JSP中
   可用的Java物件?
何謂Web容器
• 抽象層面....
 – 可將Web容器視為運行Servlet/JSP的HTTP伺服器
• 就如同Java程式僅認得JVM這個作業系統,
  Servlet/JSP程式也僅認得Web容器這個概念上
  的HTTP伺服器
何謂Web容器
• JVM介於Java程式與實體作業系統之間
 – 撰寫Java程式必須了解 JVM與應用程式之間如何
   互動
• Web容器介於實體HTTP伺服器與Servlet之間
 – 撰寫Servlet/JSP也必須知道Web容器如何與
   Servlet/JSP互動,如何管理Servlet 等事實
 – JSP最後也是轉譯、編譯、載入為Servlet,在容
   器的世界中,真正負責請求、回應的是Servlet
請求/回應範例
1. 客戶端(大部份情況下是瀏覽器)對Web伺服器
   發出HTTP請求。
2. HTTP伺服器收到HTTP請求,將請求轉由Web容
   器處理,Web容器會剖析HTTP請求內容,建立各
   種物件(像是HttpServletRequest、
   HttpServletResponse、HttpSession等)。
3. Web容器由請求的URL決定要使用哪個Servlet來
   處理請求(事先由開發人員定義)。
4. Servlet根據請求物件(HttpServletRequest)
   的資訊決定如何處理,透過回應物件
   (HttpServletResponse)來建立回應。
請求/回應範例
容器




http://download.oracle.com/javaee/6/tutorial/doc/bnacj.html
Servlet與JSP
Servlet與JSP
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet與JSP
關於MVC/Model 2
• 在Servlet程式中夾雜HTML的畫面輸出絕對
  不是什麼好主意
• 在JSP網頁中的HTML間夾雜Java程式碼,也
  是極度不建議的作法
MVC
• Model、View、Controller
• 模型、視圖、控制器
MVC
• 模型不會有畫面相關的程式碼
• 視圖負責畫面相關邏輯
• 控制器知道某個操作必須呼叫哪些模型
Model 2
• 套用在Web應用程式的設計上
 – 視圖部份可由網頁來實現
 – 伺服器上的資料存取或商務邏輯(Business logic)
   由模型負責
 – 控制器接送瀏覽器的請求,決定呼叫哪些模型來
   處理
Model 2
• Web應用程式是基於HTTP,必須基於請求/
  回應模型
Model 2
• 控制器(Controller)
 – 取得請求參數、驗證請求參數、轉發請求給模型、
   轉發請求給畫面,這些都使用程式碼來實現
• 模型(Model)
 – 接受控制器的請求呼叫,負責處理商務邏輯、負
   責資料存取邏輯等,這部份還可依應用程式功能,
   產生各多種不同職責的模型物件,模型使用程式
   碼來實現
Model 2
• 視圖(View)
 – 接受控制器的請求呼叫,會從模型提取運算後的
   結果,根據需求呈現所需的畫面,在職責分配良
   好的情況下,基本上可作到不出現程式碼,因此
   不會發生程式碼與HTML混雜在一起的情況
Model 2
簡介Java EE
• JCP、JSR
 – Java SE
 – Java ME
 – Java EE
簡介Java EE
• Java EE 6平台的主要規範是在JSR 316文件
  – http://www.oracle.com/technetwork/java/javaee/tech
    /index.html
• Servlet 3.0規範在JSR 315
• JSP 2.2/EL 2.2規範在JSR 245

More Related Content

What's hot (20)

PPTX
Ch13 整合 Spring MVC/Security
Justin Lin
 
PPT
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
 
PPTX
Ch10 Web 容器安全管理
Justin Lin
 
PPTX
Ch04 會話管理
Justin Lin
 
PPTX
Ch02 撰寫與設定 Servlet
Justin Lin
 
PPTX
Ch03 請求與回應
Justin Lin
 
PPTX
ASP.NET Core 6.0 全新功能探索
Will Huang
 
ODP
Spring User Guide
Muthuselvam RS
 
PPTX
Ch09 整合資料庫
Justin Lin
 
ODP
Introduction to Spring Framework and Spring IoC
Funnelll
 
PDF
Java spring framework
Rajiv Gupta
 
PPT
Java SE 8 技術手冊第 9 章 - Collection與Map
Justin Lin
 
PPTX
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Arjun Thakur
 
PDF
Spring MVC Framework
Hùng Nguyễn Huy
 
PDF
Spring 2.0 技術手冊第七章 - Spring Web MVC 框架
Justin Lin
 
PDF
Spring framework core
Taemon Piya-Lumyong
 
PDF
Spring 2.0 技術手冊第一章 - 認識 Spring
Justin Lin
 
PPT
Java SE 8 技術手冊第 1 章 - Java平台概論
Justin Lin
 
PPTX
Node js introduction
Joseph de Castelnau
 
Ch13 整合 Spring MVC/Security
Justin Lin
 
Java SE 8 技術手冊第 4 章 - 認識物件
Justin Lin
 
Ch10 Web 容器安全管理
Justin Lin
 
Ch04 會話管理
Justin Lin
 
Ch02 撰寫與設定 Servlet
Justin Lin
 
Ch03 請求與回應
Justin Lin
 
ASP.NET Core 6.0 全新功能探索
Will Huang
 
Spring User Guide
Muthuselvam RS
 
Ch09 整合資料庫
Justin Lin
 
Introduction to Spring Framework and Spring IoC
Funnelll
 
Java spring framework
Rajiv Gupta
 
Java SE 8 技術手冊第 9 章 - Collection與Map
Justin Lin
 
Java Spring framework, Dependency Injection, DI, IoC, Inversion of Control
Arjun Thakur
 
Spring MVC Framework
Hùng Nguyễn Huy
 
Spring 2.0 技術手冊第七章 - Spring Web MVC 框架
Justin Lin
 
Spring framework core
Taemon Piya-Lumyong
 
Spring 2.0 技術手冊第一章 - 認識 Spring
Justin Lin
 
Java SE 8 技術手冊第 1 章 - Java平台概論
Justin Lin
 
Node js introduction
Joseph de Castelnau
 

Similar to Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式 (20)

PDF
Ch01 簡介Web應用程式
Justin Lin
 
PPT
Rest与面向资源的web开发
topgeek
 
PDF
Real World ASP.NET MVC
jeffz
 
PPTX
How to ASP.NET MVC4
Daniel Chou
 
PDF
View 與 Blade 樣板引擎
Shengyou Fan
 
PDF
运维系统开发与Rails 3页面开发实践
Li JianYe
 
PPT
PHP & AppServ
Ht Wang
 
PPTX
開放原始碼 Ch2.5 app - oss - 3rd party api(ver 1.0)
My own sweet home!
 
PDF
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Justin Lin
 
PDF
View 與 Blade 樣板引擎
Shengyou Fan
 
PDF
View 與 Blade 樣板引擎
Shengyou Fan
 
PPTX
非常靠谱 Html 5
Tony Deng
 
PDF
4. Go 工程化实践-0124-v2.pdf
ssuserd6c7621
 
PPT
Html5
cazhfe
 
PDF
使用 Controller
Shengyou Fan
 
PPT
《网页设计与制作》第一章:网页制作基础
greentask
 
PPTX
Asp.net core v1.0
chang kuo-chao
 
PPTX
Asp.net core v1.0
國昭 張
 
PDF
使用 Controller
Shengyou Fan
 
PPTX
Spring mvc
pepsixp
 
Ch01 簡介Web應用程式
Justin Lin
 
Rest与面向资源的web开发
topgeek
 
Real World ASP.NET MVC
jeffz
 
How to ASP.NET MVC4
Daniel Chou
 
View 與 Blade 樣板引擎
Shengyou Fan
 
运维系统开发与Rails 3页面开发实践
Li JianYe
 
PHP & AppServ
Ht Wang
 
開放原始碼 Ch2.5 app - oss - 3rd party api(ver 1.0)
My own sweet home!
 
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Justin Lin
 
View 與 Blade 樣板引擎
Shengyou Fan
 
View 與 Blade 樣板引擎
Shengyou Fan
 
非常靠谱 Html 5
Tony Deng
 
4. Go 工程化实践-0124-v2.pdf
ssuserd6c7621
 
Html5
cazhfe
 
使用 Controller
Shengyou Fan
 
《网页设计与制作》第一章:网页制作基础
greentask
 
Asp.net core v1.0
chang kuo-chao
 
Asp.net core v1.0
國昭 張
 
使用 Controller
Shengyou Fan
 
Spring mvc
pepsixp
 
Ad

More from Justin Lin (19)

PPTX
Ch14 簡介 Spring Boot
Justin Lin
 
PPTX
Ch11 簡介 JavaMail
Justin Lin
 
PPTX
Ch08 自訂標籤
Justin Lin
 
PDF
14. 進階主題
Justin Lin
 
PDF
13.並行、平行與非同步
Justin Lin
 
PDF
12. 除錯、測試與效能
Justin Lin
 
PDF
11. 常用內建模組
Justin Lin
 
PDF
10. 資料永續與交換
Justin Lin
 
PDF
9. 資料結構
Justin Lin
 
PDF
8. open() 與 io 模組
Justin Lin
 
PDF
7. 例外處理
Justin Lin
 
PDF
6. 類別的繼承
Justin Lin
 
PDF
5. 從模組到類別
Justin Lin
 
PDF
4. 流程語法與函式
Justin Lin
 
PDF
3.型態與運算子
Justin Lin
 
PDF
1. Python起步走
Justin Lin
 
PDF
2. 從 REPL 到 IDE
Justin Lin
 
PDF
Python 3.9 技術手冊目錄
Justin Lin
 
PDF
CH19:深入模組化
Justin Lin
 
Ch14 簡介 Spring Boot
Justin Lin
 
Ch11 簡介 JavaMail
Justin Lin
 
Ch08 自訂標籤
Justin Lin
 
14. 進階主題
Justin Lin
 
13.並行、平行與非同步
Justin Lin
 
12. 除錯、測試與效能
Justin Lin
 
11. 常用內建模組
Justin Lin
 
10. 資料永續與交換
Justin Lin
 
9. 資料結構
Justin Lin
 
8. open() 與 io 模組
Justin Lin
 
7. 例外處理
Justin Lin
 
6. 類別的繼承
Justin Lin
 
5. 從模組到類別
Justin Lin
 
4. 流程語法與函式
Justin Lin
 
3.型態與運算子
Justin Lin
 
1. Python起步走
Justin Lin
 
2. 從 REPL 到 IDE
Justin Lin
 
Python 3.9 技術手冊目錄
Justin Lin
 
CH19:深入模組化
Justin Lin
 
Ad

Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式