SlideShare a Scribd company logo
1
1
• 簡介 Web 應用程式
學習目標
• 認識 HTTP 基本特性
• 了解何為 URI 編碼
• 認識 Web 容器角色
• 了解 Servlet 與 JSP 的關係
• 認識 MVC/Model 2
2
Web 應用程式基礎知識
• HTML(HyperText Markup Language)
• HTTP(HyperText Transfer Protocol)
• URI(Uniform Resource Identifier)
• 文字編碼
• 後端?前端?
• Web安全概念
3
Web 應用程式
• 客戶端(Client)與伺服端(Server)
• 瀏覽器(Browser)與HTTP伺服器
– 瀏覽器請求伺服器上的檔案或資源
– 對本書的主旨來說,伺服器的檔案或資源必須產
生HTML。
4
關於 HTML
• 標籤(Tag)的方式來定義文件結構
5
關於 HTML
• 瀏覽器依HTML的結構等資訊進行畫面繪製
6
關於HTML
• w3schools
– w3schools.com
• HTML 5 Tutorial
– www.w3schools.com/html/
7
URL、URN 與 URI?
• URL:Uniform Resource Locator
• URN:Uniform Resource Name
• URI:Uniform Resource Identifier
• 早期 U 代表 Universal(萬用)
• 標準化之後代表著 Uniform(統一)
8
URL
• 主要格式
• 協議(scheme)指定了以何種方式取得資源
– ftp(檔案傳輸協定,File Transfer protocol)
– http(超文件傳輸協定,Hypertext Transfer
Protocol)
– mailto(電子郵件)
– file(特定主機檔案名稱)
<scheme>:<scheme-specific-part>
9
URL
• 特定協議部份的格式
//<使用者>:<密碼>@<主機>:<埠號>/<路徑>
10
URL
• 檔案系統 C:workspace 的 jdbc.pdf 檔案
file://C:/workspace/jdbc.pdf
11
URN
• 代表某個資源獨一無二的名稱
• 《Java SE 14 技術手冊》的國際標準書號:
– urn:isbn:978-986-502-513-7
12
URI
• URL 與 URN 為 URI 的子集
13
URI
• 標準機構如 W3C(World Wide Web
Consortium)文件中,多使用 URI
• 舊習慣使然,程式設計人員口語交談也多見
使用 URL 這個舊稱
• 歷史演進與標準發佈
– en.wikipedia.org/wiki/Uniform_Resource_Identifier
14
關於HTTP
15
關於HTTP
• 基於請求(Request)/回應(Response)模型
• 無狀態(Stateless)通訊協定
16
GET 請求
• 向伺服器取得(GET)指定的資源
17
GET 請求
• 可以發送的請求參數長度有限(這個長度依
瀏覽器版本而有所不同)
• 太大量資料不適合用 GET 方法請求
18
POST 請求
• 請求時發佈(POST)資訊給伺服器
19
POST 請求
• 大量資料的發送都會使用 POST 方法
• 請求參數移至訊息本體,網址列上也就不會
出現請求參數
• 較敏感的資訊,即使長度不長,通常也會改
用 POST 方式發送
20
GET 或 POST?
• 敏感資訊
• 書籤設置考量
• 瀏覽器快取
• 安全與等冪
21
GET 或 POST?
• <form> 預設會使用 GET
22
URI 編碼
• 如果請求參數值本身包括 = 符號怎麼辦?
• URI 保留字元
– 「:」、「/」、「?」、「&」、「=」、「@」、
「%」....
23
URI 保留字元
• 要在請求參數上表達 URI 中的保留字元,必
須在%字元之後以十六進位數值表示方式,來
表示該字元的八個位元數值
– 「:」(00111010 ) %3A
– 「/」(00101111 ) %2F
24
URI 編碼
• 使用 java.net.URLEncoder 類別的靜態
encode()方法作編碼動作使用
• java.net.URLDecoder 靜態 decode()
方法做解碼動作
25
URI 與 HTTP 編碼
• 在 URI 規範中,空白字元是編碼為 %20
• 在 HTTP 規範中空白是編碼為「+」
26
中文字元
• URI 規範的 URI 編碼,針對的是字元 UTF-8
編碼的八個位元數值
– 林(UTF-8)  %E6%9E%97
– 伺服端處理請求參數時,必須使用 UTF-8 編碼
來取得正確的「林」字元
27
中文字元
• 在一個 MS950 網頁中,若表單使用 GET 發
送「林」這個中文字
– 林(MS950)  %AA%4C
– 伺服端處理請求參數時,就必須指定 MS950 編
碼,以取得正確的「林」中文字元
28
後端?前端?
29
客戶端程式、伺服端程式
30
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
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
簡介 Servlet/JSP
• JVM(Java Virtual Machine)是 Java 程式唯
一認識的作業系統,可執行檔為 .class 檔案
• Web 容器(Container)是 Servlet/JSP 唯一認
得的 HTTP 伺服器
34
何謂 Web 容器
• 對於撰寫Servlet/JSP來說,容器持有物件、負
責物件生命周期與相關服務連結
• 具體層面....
– 容器就是用Java寫的程式,運行於JVM之上
– Servlet會接觸HttpServletRequest、
HttpServletResponse等物件
– HTTP文字性的通訊協定,如何變成Servlet/JSP中
可用的Java物件?
35
何謂 Web 容器
• 抽象層面....
– 可將Web容器視為運行Servlet/JSP的HTTP伺服器
• 就如同Java程式僅認得JVM這個作業系統,
Servlet/JSP程式也僅認得Web容器這個概念上
的HTTP伺服器
36
何謂 Web 容器
• JVM介於Java程式與實體作業系統之間
– 撰寫Java程式必須了解 JVM與應用程式之間如何
互動
• Web容器介於實體HTTP伺服器與Servlet之間
– 撰寫Servlet/JSP也必須知道Web容器如何與
Servlet/JSP互動,如何管理Servlet 等事實
– JSP最後也是轉譯、編譯、載入為Servlet,在容
器的世界中,真正負責請求、回應的是Servlet
37
請求/回應範例
1. 客戶端(大部份情況下是瀏覽器)對Web伺服器
發出HTTP請求。
2. HTTP伺服器收到HTTP請求,將請求轉由Web容
器處理,Web容器會剖析HTTP請求內容,建立各
種物件(像是HttpServletRequest、
HttpServletResponse、HttpSession等)。
3. Web容器由請求的URI決定要使用哪個Servlet來處
理請求(事先由開發人員定義)。
4. Servlet根據請求物件(HttpServletRequest)
的資訊決定如何處理,透過回應物件
(HttpServletResponse)來建立回應。
38
請求/回應範例
39
Servlet 與 JSP
40
Servlet 與 JSP
41
42
43
關於 MVC/Model 2
• 在 Servlet 程式中夾雜 HTML 的畫面輸出絕
對不是什麼好主意
• 在 JSP 網頁中的 HTML 間夾雜 Java 程式碼,
也是極度不建議的作法
44
MVC
• Model、View、Controller
• 模型、視圖、控制器
45
MVC
• 模型不會有畫面相關的程式碼
• 視圖負責畫面相關邏輯
• 控制器知道某個操作必須呼叫哪些模型
46
Model 2
• 套用在 Web 應用程式的設計上
– 視圖部份可由網頁來實現
– 伺服器上的資料存取或商務邏輯(Business logic)
由模型負責
– 控制器接送瀏覽器的請求,決定呼叫哪些模型來
處理
47
Model 2
• Web 應用程式是基於 HTTP,必須基於請求/
回應模型
48
Model 2
• 控制器(Controller)
– 取得請求參數、驗證請求參數、轉發請求給模型、
轉發請求給畫面,這些都使用程式碼來實現
• 模型(Model)
– 接受控制器的請求呼叫,負責處理商務邏輯、負
責資料存取邏輯等,這部份還可依應用程式功能,
產生各多種不同職責的模型物件,模型使用程式
碼來實現
49
Model 2
• 視圖(View)
– 接受控制器的請求呼叫,會從模型提取運算後的
結果,根據需求呈現所需的畫面,在職責分配良
好的情況下,基本上可作到不出現程式碼,因此
不會發生程式碼與HTML混雜在一起的情況
50
Model 2
51
Model 2
52
簡介 Java EE/Jakarta EE
• JCP、JSR
– Java SE
– Java ME
– Java EE
53
• 2017年9月,Oracle 宣佈 Java EE 開放原始碼
• 相關技術授權給 Eclipse 基金會
• Java 商標是 Oracle 所有,基金會決定將 Java
EE 更名為 Jakarta EE
• Jakarta EE 9 主要任務是將 javax.* 更名為
jakarta.*
54
簡介 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

More Related Content

What's hot

Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
 
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
 
CH1:Java平台概論
CH1:Java平台概論CH1:Java平台概論
CH1:Java平台概論
Justin Lin
 
Ch02 撰寫與設定Servlet
Ch02 撰寫與設定ServletCh02 撰寫與設定Servlet
Ch02 撰寫與設定Servlet
Justin Lin
 
CH04:認識物件
CH04:認識物件CH04:認識物件
CH04:認識物件
Justin Lin
 
Java SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與MapJava SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與Map
Justin Lin
 
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 ServletServlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Justin Lin
 
CH09:Collection與Map
CH09:Collection與MapCH09:Collection與Map
CH09:Collection與Map
Justin Lin
 
Java SE 8 技術手冊第 1 章 - Java平台概論
Java SE 8 技術手冊第 1 章 - Java平台概論Java SE 8 技術手冊第 1 章 - Java平台概論
Java SE 8 技術手冊第 1 章 - Java平台概論
Justin Lin
 
SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)
Valerio Radice
 
CH06:繼承與多型
CH06:繼承與多型CH06:繼承與多型
CH06:繼承與多型
Justin Lin
 
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
Shengyou Fan
 
CH05:物件封裝
CH05:物件封裝CH05:物件封裝
CH05:物件封裝
Justin Lin
 
Apache Solr crash course
Apache Solr crash courseApache Solr crash course
Apache Solr crash course
Tommaso Teofili
 
FHIR REST API 導論與使用
FHIR REST API 導論與使用FHIR REST API 導論與使用
FHIR REST API 導論與使用
Lorex L. Yang
 
Jbossとtomcatの性能を比べてみた
Jbossとtomcatの性能を比べてみたJbossとtomcatの性能を比べてみた
Jbossとtomcatの性能を比べてみた
Yuki Obara
 
你一定不能不知道的 Markdown 寫作技巧
你一定不能不知道的 Markdown 寫作技巧你一定不能不知道的 Markdown 寫作技巧
你一定不能不知道的 Markdown 寫作技巧
Will Huang
 
1. JavaScript 起步走
1. JavaScript 起步走1. JavaScript 起步走
1. JavaScript 起步走
Justin Lin
 
Apache Impalaパフォーマンスチューニング #dbts2018
Apache Impalaパフォーマンスチューニング #dbts2018Apache Impalaパフォーマンスチューニング #dbts2018
Apache Impalaパフォーマンスチューニング #dbts2018
Cloudera Japan
 
메이븐 기본 이해
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해
중선 곽
 

What's hot (20)

Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
 
Ch09 整合資料庫
Ch09 整合資料庫Ch09 整合資料庫
Ch09 整合資料庫
 
CH1:Java平台概論
CH1:Java平台概論CH1:Java平台概論
CH1:Java平台概論
 
Ch02 撰寫與設定Servlet
Ch02 撰寫與設定ServletCh02 撰寫與設定Servlet
Ch02 撰寫與設定Servlet
 
CH04:認識物件
CH04:認識物件CH04:認識物件
CH04:認識物件
 
Java SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與MapJava SE 8 技術手冊第 9 章 - Collection與Map
Java SE 8 技術手冊第 9 章 - Collection與Map
 
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 ServletServlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
 
CH09:Collection與Map
CH09:Collection與MapCH09:Collection與Map
CH09:Collection與Map
 
Java SE 8 技術手冊第 1 章 - Java平台概論
Java SE 8 技術手冊第 1 章 - Java平台概論Java SE 8 技術手冊第 1 章 - Java平台概論
Java SE 8 技術手冊第 1 章 - Java平台概論
 
SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)SPRING - MAVEN - REST API (ITA - Luglio 2017)
SPRING - MAVEN - REST API (ITA - Luglio 2017)
 
CH06:繼承與多型
CH06:繼承與多型CH06:繼承與多型
CH06:繼承與多型
 
啟動 Laravel 與環境設定
啟動 Laravel 與環境設定啟動 Laravel 與環境設定
啟動 Laravel 與環境設定
 
CH05:物件封裝
CH05:物件封裝CH05:物件封裝
CH05:物件封裝
 
Apache Solr crash course
Apache Solr crash courseApache Solr crash course
Apache Solr crash course
 
FHIR REST API 導論與使用
FHIR REST API 導論與使用FHIR REST API 導論與使用
FHIR REST API 導論與使用
 
Jbossとtomcatの性能を比べてみた
Jbossとtomcatの性能を比べてみたJbossとtomcatの性能を比べてみた
Jbossとtomcatの性能を比べてみた
 
你一定不能不知道的 Markdown 寫作技巧
你一定不能不知道的 Markdown 寫作技巧你一定不能不知道的 Markdown 寫作技巧
你一定不能不知道的 Markdown 寫作技巧
 
1. JavaScript 起步走
1. JavaScript 起步走1. JavaScript 起步走
1. JavaScript 起步走
 
Apache Impalaパフォーマンスチューニング #dbts2018
Apache Impalaパフォーマンスチューニング #dbts2018Apache Impalaパフォーマンスチューニング #dbts2018
Apache Impalaパフォーマンスチューニング #dbts2018
 
메이븐 기본 이해
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해
 

Similar to CH1. 簡介 Web 應用程式

Ch01 簡介Web應用程式
Ch01 簡介Web應用程式Ch01 簡介Web應用程式
Ch01 簡介Web應用程式
Justin Lin
 
Elastic stack day-1
Elastic stack day-1Elastic stack day-1
Elastic stack day-1
YI-CHING WU
 
Rest与面向资源的web开发
Rest与面向资源的web开发Rest与面向资源的web开发
Rest与面向资源的web开发
topgeek
 
微軟實戰課程日:玩轉雲端 技術與架構
微軟實戰課程日:玩轉雲端 技術與架構微軟實戰課程日:玩轉雲端 技術與架構
微軟實戰課程日:玩轉雲端 技術與架構Jeff Chu
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索
Will Huang
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰Scourgen Hong
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練22016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
Duran Hsieh
 
PHP & AppServ
PHP & AppServPHP & AppServ
PHP & AppServ
Ht Wang
 
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 ServletServlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Justin Lin
 
AWS 雲端環境的資安佈局.pdf
AWS 雲端環境的資安佈局.pdfAWS 雲端環境的資安佈局.pdf
AWS 雲端環境的資安佈局.pdf
ssuser293781
 
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略
Will Huang
 
Mvc架构在discuz!插件开发的应用 wps create_msoffice_check
Mvc架构在discuz!插件开发的应用 wps create_msoffice_checkMvc架构在discuz!插件开发的应用 wps create_msoffice_check
Mvc架构在discuz!插件开发的应用 wps create_msoffice_checkCevin Cheung
 
SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17 SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17
twMVC
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
國昭 張
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
chang kuo-chao
 
用戶端攻擊與防禦
用戶端攻擊與防禦用戶端攻擊與防禦
用戶端攻擊與防禦
Taien Wang
 
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
Andrew Wu
 
OWST - Orange Web Security Toolkit Documentation
OWST - Orange Web Security Toolkit DocumentationOWST - Orange Web Security Toolkit Documentation
OWST - Orange Web Security Toolkit DocumentationOrange Tsai
 
網站上線了,然後呢?
網站上線了,然後呢?網站上線了,然後呢?
網站上線了,然後呢?
Kirk Chen
 
20130823微軟雲端平台開發者日
20130823微軟雲端平台開發者日20130823微軟雲端平台開發者日
20130823微軟雲端平台開發者日twMVC
 

Similar to CH1. 簡介 Web 應用程式 (20)

Ch01 簡介Web應用程式
Ch01 簡介Web應用程式Ch01 簡介Web應用程式
Ch01 簡介Web應用程式
 
Elastic stack day-1
Elastic stack day-1Elastic stack day-1
Elastic stack day-1
 
Rest与面向资源的web开发
Rest与面向资源的web开发Rest与面向资源的web开发
Rest与面向资源的web开发
 
微軟實戰課程日:玩轉雲端 技術與架構
微軟實戰課程日:玩轉雲端 技術與架構微軟實戰課程日:玩轉雲端 技術與架構
微軟實戰課程日:玩轉雲端 技術與架構
 
ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索ASP.NET MVC 6 新功能探索
ASP.NET MVC 6 新功能探索
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
 
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練22016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
2016年逢甲大學資訊系:ASP.NET MVC 4 教育訓練2
 
PHP & AppServ
PHP & AppServPHP & AppServ
PHP & AppServ
 
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 ServletServlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版 - 第 2 章:撰寫與設定 Servlet
 
AWS 雲端環境的資安佈局.pdf
AWS 雲端環境的資安佈局.pdfAWS 雲端環境的資安佈局.pdf
AWS 雲端環境的資安佈局.pdf
 
DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略DEV305 - ASP.NET 5 開發攻略
DEV305 - ASP.NET 5 開發攻略
 
Mvc架构在discuz!插件开发的应用 wps create_msoffice_check
Mvc架构在discuz!插件开发的应用 wps create_msoffice_checkMvc架构在discuz!插件开发的应用 wps create_msoffice_check
Mvc架构在discuz!插件开发的应用 wps create_msoffice_check
 
SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17 SignalR實戰技巧 twmvc#17
SignalR實戰技巧 twmvc#17
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
 
Asp.net core v1.0
Asp.net core v1.0Asp.net core v1.0
Asp.net core v1.0
 
用戶端攻擊與防禦
用戶端攻擊與防禦用戶端攻擊與防禦
用戶端攻擊與防禦
 
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp微服務架構 導入經驗分享 吳剛志 - Community Open Camp
微服務架構 導入經驗分享 吳剛志 - Community Open Camp
 
OWST - Orange Web Security Toolkit Documentation
OWST - Orange Web Security Toolkit DocumentationOWST - Orange Web Security Toolkit Documentation
OWST - Orange Web Security Toolkit Documentation
 
網站上線了,然後呢?
網站上線了,然後呢?網站上線了,然後呢?
網站上線了,然後呢?
 
20130823微軟雲端平台開發者日
20130823微軟雲端平台開發者日20130823微軟雲端平台開發者日
20130823微軟雲端平台開發者日
 

More from Justin Lin

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

More from Justin Lin (20)

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

CH1. 簡介 Web 應用程式