SlideShare a Scribd company logo
Submit Search
Upload
CH1. 簡介 Web 應用程式
Report
Share
Justin Lin
Technology / Community Evangelist at Free lancer
Follow
•
1 like
•
1,173 views
1
of
55
CH1. 簡介 Web 應用程式
•
1 like
•
1,173 views
Report
Share
Download Now
Download to read offline
Technology
認識 HTTP 基本特性 了解何為 URI 編碼 認識 Web 容器角色 了解 Servlet 與 JSP 的關係 認識 MVC/Model 2
Read more
Justin Lin
Technology / Community Evangelist at Free lancer
Follow
Recommended
Ch02 撰寫與設定 Servlet by
Ch02 撰寫與設定 Servlet
Justin Lin
352 views
•
37 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
Ch05 Servlet 進階 API、過濾器與傾聽器 by
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
204 views
•
69 slides
More Related Content
What's hot
Ch09 整合資料庫 by
Ch09 整合資料庫
Justin Lin
233 views
•
92 slides
Ch13 整合 Spring MVC/Security by
Ch13 整合 Spring MVC/Security
Justin Lin
280 views
•
58 slides
Java SE 8 技術手冊第 9 章 - Collection與Map by
Java SE 8 技術手冊第 9 章 - Collection與Map
Justin Lin
4.9K views
•
81 slides
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧! by
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
Will Huang
726 views
•
15 slides
Spring 2.0 技術手冊第一章 - 認識 Spring by
Spring 2.0 技術手冊第一章 - 認識 Spring
Justin Lin
10K views
•
17 slides
Java SE 8 技術手冊第 3 章 - 基礎語法 by
Java SE 8 技術手冊第 3 章 - 基礎語法
Justin Lin
5.3K views
•
52 slides
What's hot
(20)
Ch09 整合資料庫 by Justin Lin
Ch09 整合資料庫
Justin Lin
•
233 views
Ch13 整合 Spring MVC/Security by Justin Lin
Ch13 整合 Spring MVC/Security
Justin Lin
•
280 views
Java SE 8 技術手冊第 9 章 - Collection與Map by Justin Lin
Java SE 8 技術手冊第 9 章 - Collection與Map
Justin Lin
•
4.9K views
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧! by Will Huang
進擊的前端工程師:今天就用 JSON Server 自己打造 API 吧!
Will Huang
•
726 views
Spring 2.0 技術手冊第一章 - 認識 Spring by Justin Lin
Spring 2.0 技術手冊第一章 - 認識 Spring
Justin Lin
•
10K views
Java SE 8 技術手冊第 3 章 - 基礎語法 by Justin Lin
Java SE 8 技術手冊第 3 章 - 基礎語法
Justin Lin
•
5.3K views
北護大/FHIR 開發簡介與應用 by Lorex L. Yang
北護大/FHIR 開發簡介與應用
Lorex L. Yang
•
2.7K views
Spring Boot by Jiayun Zhou
Spring Boot
Jiayun Zhou
•
2.5K views
陽明大學/FHIR 快速跳坑指南 by Lorex L. Yang
陽明大學/FHIR 快速跳坑指南
Lorex L. Yang
•
5.7K views
Java SE 8 技術手冊第 2 章 - 從JDK到IDE by Justin Lin
Java SE 8 技術手冊第 2 章 - 從JDK到IDE
Justin Lin
•
5.3K views
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc by Masatoshi Tada
Pivotal認定講師によるSpring Framework 5.1 & Spring Boot 2.1ハンズオン! #jjug_ccc
Masatoshi Tada
•
6.9K views
FHIR REST API 導論與使用 by Lorex L. Yang
FHIR REST API 導論與使用
Lorex L. Yang
•
2.9K views
試験にでるSpring by 土岐 孝平
試験にでるSpring
土岐 孝平
•
5.1K views
FHIR Server 安裝與使用 by Lorex L. Yang
FHIR Server 安裝與使用
Lorex L. Yang
•
4.1K views
Spring - Part 1 - IoC, Di and Beans by Hitesh-Java
Spring - Part 1 - IoC, Di and Beans
Hitesh-Java
•
1.3K views
Spring Boot by Jaran Flaath
Spring Boot
Jaran Flaath
•
543 views
初學者都該了解的 HTTP 通訊協定基礎 by Will Huang
初學者都該了解的 HTTP 通訊協定基礎
Will Huang
•
12.9K views
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐 by Terry Cho
대용량 분산 아키텍쳐 설계 #3 대용량 분산 시스템 아키텍쳐
Terry Cho
•
46.8K views
Open Liberty: オープンソースになったWebSphere Liberty by Takakiyo Tanaka
Open Liberty: オープンソースになったWebSphere Liberty
Takakiyo Tanaka
•
6.1K views
さくっと理解するSpring bootの仕組み by Takeshi Ogawa
さくっと理解するSpring bootの仕組み
Takeshi Ogawa
•
65.2K views
Similar to CH1. 簡介 Web 應用程式
Ch01 簡介Web應用程式 by
Ch01 簡介Web應用程式
Justin Lin
1.7K views
•
55 slides
Elastic stack day-1 by
Elastic stack day-1
YI-CHING WU
1K views
•
69 slides
Rest与面向资源的web开发 by
Rest与面向资源的web开发
topgeek
1.2K views
•
39 slides
微軟實戰課程日:玩轉雲端 技術與架構 by
微軟實戰課程日:玩轉雲端 技術與架構
Jeff Chu
650 views
•
43 slides
ASP.NET MVC 6 新功能探索 by
ASP.NET MVC 6 新功能探索
Will Huang
11.5K views
•
48 slides
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰 by
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
1.5K views
•
53 slides
Similar to CH1. 簡介 Web 應用程式
(20)
Ch01 簡介Web應用程式 by Justin Lin
Ch01 簡介Web應用程式
Justin Lin
•
1.7K views
Elastic stack day-1 by YI-CHING WU
Elastic stack day-1
YI-CHING WU
•
1K views
Rest与面向资源的web开发 by topgeek
Rest与面向资源的web开发
topgeek
•
1.2K views
微軟實戰課程日:玩轉雲端 技術與架構 by Jeff Chu
微軟實戰課程日:玩轉雲端 技術與架構
Jeff Chu
•
650 views
ASP.NET MVC 6 新功能探索 by Will Huang
ASP.NET MVC 6 新功能探索
Will Huang
•
11.5K views
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰 by Scourgen Hong
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
•
1.5K views
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2 by Duran Hsieh
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
Duran Hsieh
•
307 views
PHP & AppServ by Ht Wang
PHP & AppServ
Ht Wang
•
1.9K views
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet by Justin Lin
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Justin Lin
•
6.1K views
DEV305 - ASP.NET 5 開發攻略 by Will Huang
DEV305 - ASP.NET 5 開發攻略
Will Huang
•
6.1K views
Mvc架构在discuz!插件开发的应用 wps create_msoffice_check by Cevin Cheung
Mvc架构在discuz!插件开发的应用 wps create_msoffice_check
Cevin Cheung
•
647 views
SignalR實戰技巧 twmvc#17 by twMVC
SignalR實戰技巧 twmvc#17
twMVC
•
1.5K views
Asp.net core v1.0 by 國昭 張
Asp.net core v1.0
國昭 張
•
254 views
Asp.net core v1.0 by chang kuo-chao
Asp.net core v1.0
chang kuo-chao
•
103 views
用戶端攻擊與防禦 by Taien Wang
用戶端攻擊與防禦
Taien Wang
•
6K views
微服務架構 導入經驗分享 吳剛志 - Community Open Camp by Andrew Wu
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
Andrew Wu
•
4.3K views
OWST - Orange Web Security Toolkit Documentation by Orange Tsai
OWST - Orange Web Security Toolkit Documentation
Orange Tsai
•
2.1K views
網站上線了,然後呢? by Kirk Chen
網站上線了,然後呢?
Kirk Chen
•
379 views
20130823微軟雲端平台開發者日 by twMVC
20130823微軟雲端平台開發者日
twMVC
•
1.1K views
美团前端架构简介 by pan weizeng
美团前端架构简介
pan weizeng
•
4.8K views
More from Justin Lin
Ch14 簡介 Spring Boot by
Ch14 簡介 Spring Boot
Justin Lin
872 views
•
22 slides
Ch12 Spring 起步走 by
Ch12 Spring 起步走
Justin Lin
274 views
•
31 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
More from Justin Lin
(20)
Ch14 簡介 Spring Boot by Justin Lin
Ch14 簡介 Spring Boot
Justin Lin
•
872 views
Ch12 Spring 起步走 by Justin Lin
Ch12 Spring 起步走
Justin Lin
•
274 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
•
663 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
CH1. 簡介 Web 應用程式
1.
1
2.
1 • 簡介 Web
應用程式 學習目標 • 認識 HTTP 基本特性 • 了解何為 URI 編碼 • 認識 Web 容器角色 • 了解 Servlet 與 JSP 的關係 • 認識 MVC/Model 2 2
3.
Web 應用程式基礎知識 • HTML(HyperText
Markup Language) • HTTP(HyperText Transfer Protocol) • URI(Uniform Resource Identifier) • 文字編碼 • 後端?前端? • Web安全概念 3
4.
Web 應用程式 • 客戶端(Client)與伺服端(Server) •
瀏覽器(Browser)與HTTP伺服器 – 瀏覽器請求伺服器上的檔案或資源 – 對本書的主旨來說,伺服器的檔案或資源必須產 生HTML。 4
5.
關於 HTML • 標籤(Tag)的方式來定義文件結構 5
6.
關於 HTML • 瀏覽器依HTML的結構等資訊進行畫面繪製 6
7.
關於HTML • w3schools – w3schools.com •
HTML 5 Tutorial – www.w3schools.com/html/ 7
8.
URL、URN 與 URI? •
URL:Uniform Resource Locator • URN:Uniform Resource Name • URI:Uniform Resource Identifier • 早期 U 代表 Universal(萬用) • 標準化之後代表著 Uniform(統一) 8
9.
URL • 主要格式 • 協議(scheme)指定了以何種方式取得資源 –
ftp(檔案傳輸協定,File Transfer protocol) – http(超文件傳輸協定,Hypertext Transfer Protocol) – mailto(電子郵件) – file(特定主機檔案名稱) <scheme>:<scheme-specific-part> 9
10.
URL • 特定協議部份的格式 //<使用者>:<密碼>@<主機>:<埠號>/<路徑> 10
11.
URL • 檔案系統 C:workspace
的 jdbc.pdf 檔案 file://C:/workspace/jdbc.pdf 11
12.
URN • 代表某個資源獨一無二的名稱 • 《Java
SE 14 技術手冊》的國際標準書號: – urn:isbn:978-986-502-513-7 12
13.
URI • URL 與
URN 為 URI 的子集 13
14.
URI • 標準機構如 W3C(World
Wide Web Consortium)文件中,多使用 URI • 舊習慣使然,程式設計人員口語交談也多見 使用 URL 這個舊稱 • 歷史演進與標準發佈 – en.wikipedia.org/wiki/Uniform_Resource_Identifier 14
15.
關於HTTP 15
16.
關於HTTP • 基於請求(Request)/回應(Response)模型 • 無狀態(Stateless)通訊協定 16
17.
GET 請求 • 向伺服器取得(GET)指定的資源 17
18.
GET 請求 • 可以發送的請求參數長度有限(這個長度依 瀏覽器版本而有所不同) •
太大量資料不適合用 GET 方法請求 18
19.
POST 請求 • 請求時發佈(POST)資訊給伺服器 19
20.
POST 請求 • 大量資料的發送都會使用
POST 方法 • 請求參數移至訊息本體,網址列上也就不會 出現請求參數 • 較敏感的資訊,即使長度不長,通常也會改 用 POST 方式發送 20
21.
GET 或 POST? •
敏感資訊 • 書籤設置考量 • 瀏覽器快取 • 安全與等冪 21
22.
GET 或 POST? •
<form> 預設會使用 GET 22
23.
URI 編碼 • 如果請求參數值本身包括
= 符號怎麼辦? • URI 保留字元 – 「:」、「/」、「?」、「&」、「=」、「@」、 「%」.... 23
24.
URI 保留字元 • 要在請求參數上表達
URI 中的保留字元,必 須在%字元之後以十六進位數值表示方式,來 表示該字元的八個位元數值 – 「:」(00111010 ) %3A – 「/」(00101111 ) %2F 24
25.
URI 編碼 • 使用
java.net.URLEncoder 類別的靜態 encode()方法作編碼動作使用 • java.net.URLDecoder 靜態 decode() 方法做解碼動作 25
26.
URI 與 HTTP
編碼 • 在 URI 規範中,空白字元是編碼為 %20 • 在 HTTP 規範中空白是編碼為「+」 26
27.
中文字元 • URI 規範的
URI 編碼,針對的是字元 UTF-8 編碼的八個位元數值 – 林(UTF-8) %E6%9E%97 – 伺服端處理請求參數時,必須使用 UTF-8 編碼 來取得正確的「林」字元 27
28.
中文字元 • 在一個 MS950
網頁中,若表單使用 GET 發 送「林」這個中文字 – 林(MS950) %AA%4C – 伺服端處理請求參數時,就必須指定 MS950 編 碼,以取得正確的「林」中文字元 28
29.
後端?前端? 29
30.
客戶端程式、伺服端程式 30
31.
Web 安全觀念 • OWASP
TOP 10 – www.owasp.org/index.php/Category:OWASP_Top_ Ten_Project • 首次 OWASP Top 10 於 2003 發布 • 最新 OWASP Top 10 於 2017 年 11 月釋出 31
32.
32
33.
Web 安全觀念 • CWE(Common
Weakness Enumeration) – 始於 2005 年 – 收集了近千個通用的軟體弱點 • CVE(Common Vulnerabilities and Exposures) – 就特定軟體發生的安全問題給予 CVE-YYYY- NNNN形式的編號 – 2017 年底的 CPU「推測執行」(Speculative execution)安全漏洞 • CVE-2017-5754、CVE-2017-5753與CVE-2017-5715 33
34.
簡介 Servlet/JSP • JVM(Java
Virtual Machine)是 Java 程式唯 一認識的作業系統,可執行檔為 .class 檔案 • Web 容器(Container)是 Servlet/JSP 唯一認 得的 HTTP 伺服器 34
35.
何謂 Web 容器 •
對於撰寫Servlet/JSP來說,容器持有物件、負 責物件生命周期與相關服務連結 • 具體層面.... – 容器就是用Java寫的程式,運行於JVM之上 – Servlet會接觸HttpServletRequest、 HttpServletResponse等物件 – HTTP文字性的通訊協定,如何變成Servlet/JSP中 可用的Java物件? 35
36.
何謂 Web 容器 •
抽象層面.... – 可將Web容器視為運行Servlet/JSP的HTTP伺服器 • 就如同Java程式僅認得JVM這個作業系統, Servlet/JSP程式也僅認得Web容器這個概念上 的HTTP伺服器 36
37.
何謂 Web 容器 •
JVM介於Java程式與實體作業系統之間 – 撰寫Java程式必須了解 JVM與應用程式之間如何 互動 • Web容器介於實體HTTP伺服器與Servlet之間 – 撰寫Servlet/JSP也必須知道Web容器如何與 Servlet/JSP互動,如何管理Servlet 等事實 – JSP最後也是轉譯、編譯、載入為Servlet,在容 器的世界中,真正負責請求、回應的是Servlet 37
38.
請求/回應範例 1. 客戶端(大部份情況下是瀏覽器)對Web伺服器 發出HTTP請求。 2. HTTP伺服器收到HTTP請求,將請求轉由Web容 器處理,Web容器會剖析HTTP請求內容,建立各 種物件(像是HttpServletRequest、 HttpServletResponse、HttpSession等)。 3.
Web容器由請求的URI決定要使用哪個Servlet來處 理請求(事先由開發人員定義)。 4. Servlet根據請求物件(HttpServletRequest) 的資訊決定如何處理,透過回應物件 (HttpServletResponse)來建立回應。 38
39.
請求/回應範例 39
40.
Servlet 與 JSP 40
41.
Servlet 與 JSP 41
42.
42
43.
43
44.
關於 MVC/Model 2 •
在 Servlet 程式中夾雜 HTML 的畫面輸出絕 對不是什麼好主意 • 在 JSP 網頁中的 HTML 間夾雜 Java 程式碼, 也是極度不建議的作法 44
45.
MVC • Model、View、Controller • 模型、視圖、控制器 45
46.
MVC • 模型不會有畫面相關的程式碼 • 視圖負責畫面相關邏輯 •
控制器知道某個操作必須呼叫哪些模型 46
47.
Model 2 • 套用在
Web 應用程式的設計上 – 視圖部份可由網頁來實現 – 伺服器上的資料存取或商務邏輯(Business logic) 由模型負責 – 控制器接送瀏覽器的請求,決定呼叫哪些模型來 處理 47
48.
Model 2 • Web
應用程式是基於 HTTP,必須基於請求/ 回應模型 48
49.
Model 2 • 控制器(Controller) –
取得請求參數、驗證請求參數、轉發請求給模型、 轉發請求給畫面,這些都使用程式碼來實現 • 模型(Model) – 接受控制器的請求呼叫,負責處理商務邏輯、負 責資料存取邏輯等,這部份還可依應用程式功能, 產生各多種不同職責的模型物件,模型使用程式 碼來實現 49
50.
Model 2 • 視圖(View) –
接受控制器的請求呼叫,會從模型提取運算後的 結果,根據需求呈現所需的畫面,在職責分配良 好的情況下,基本上可作到不出現程式碼,因此 不會發生程式碼與HTML混雜在一起的情況 50
51.
Model 2 51
52.
Model 2 52
53.
簡介 Java EE/Jakarta
EE • JCP、JSR – Java SE – Java ME – Java EE 53
54.
• 2017年9月,Oracle 宣佈
Java EE 開放原始碼 • 相關技術授權給 Eclipse 基金會 • Java 商標是 Oracle 所有,基金會決定將 Java EE 更名為 Jakarta EE • Jakarta EE 9 主要任務是將 javax.* 更名為 jakarta.* 54
55.
簡介 Java EE •
Java EE 8 平台 • www.oracle.com/technetwork/java/javaee/tech/index.html • 主要規範是在 JSR 366 文件 – Servlet 4.0 規範在 JSR 369 – JSP 2.3 規範在 JSR 245 – Expression Language 3.0 規範在 JSR341 – JSTL 1.2 規範於 JSR52 55