SlideShare a Scribd company logo
1 of 73
1
3
• 請求與回應
學習目標
• 取得請求參數與標頭
• 處理中文字元請求與回應
• 設定與取得請求範圍屬性
• 使用轉發、包含、重新導向
2
Web 容器做了什麼?
3
Web 容器做了什麼?
• HttpServletRequest、
HttpServletResponse 都是介面
4
Web 容器做了什麼?
5
Web 容器做了什麼?
• 請求資訊的收集
• 建立 HttpServletRequest 物件
• 建立 HttpServletResponse 物件
• 輸出 HTTP 回應之轉換
• 銷毀、回收 HttpServletRequest 物件
• 銷毀、回收 HttpServletResponse 物件
• ...
6
Web 容器做了什麼?
• 必須了解 Web 容器管理物件生命週期的方式,
否則就會引來不必要的錯誤
7
doXXX() 方法?
• service()方法簽署
• 請求/回應物件的基本行為是規範在
ServletRequest、ServletResponse(套件是
javax.servlet)
• 與 HTTP 相關的行為,則分別由兩者的子介面
HttpServletRequest、
HttpServletResponse(套件是
javax.servlet.http)定義
8
doXXX()方法?
• Web 容器建立 HttpServletRequest、
HttpServletResponse 的實作物件
另一個版本 service()方法
9
doXXX() 方法?
10
doXXX() 方法?
11
doXXX() 方法?
• doGet() 處理 HTTP GET 請求
• doPost() 處理 HTTP POST 請求
• doPut() 處理 HTTP PUT 請求
• doDelete() 處理 HTTP DELETE 請求
• doHead() 處理 HTTP HEAD 請求
• doOptions() 處理 HTTP OPTIONS 請求
• doTrace() 處理 HTTP TRACE 請求
12
doXXX() 方法?
• 如果客戶端發出了沒有實作的請求會如何?
13
doXXX() 方法?
14
doXXX() 方法?
• 可以實作 getLastModified()方法決定是
否呼叫 doGet()方法
• 在 GET 與 POST 都需要相同處理的情境
15
處理請求參數
• getParameter()
• getParameterValues()
• getParameterNames()
• getParameterMap()
16
處理請求參數
• 永遠別假設使用者會按照你的期望提供請求
name=%3Csmall%3EJustin%3C/small%3E
17
處理請求參數
• 未經過濾的請求參數值形成 Web 網站的弱點
• 引發各種可能注入(Injection)攻擊可能性
name=%3Cscript%3Ealert(%27Attack%27)%3C/script%3E
name=<script>alert('Atack')</script>
18
處理請求參數
19
處理請求標頭
• getHeader()
• getHeaders()
• getHeaderNames()
20
處理請求標頭
21
瀏覽器用 UTF-8 發送請求
• POST 請求參數編碼處理
• GET 請求參數編碼處理
– Tomcat 8.0 以後預設 URI 編碼為 UTF-8
– Tomcat 8.0 之前預設 URI 編碼為 ISO-8859-1
22
POST 請求參數編碼處理
• 沒有 Content-Type 標頭,
getCharacterEncoding() 傳回 null
• 容器若使用 ISO-8859-1,客戶端使用
UTF-8 發送非 ASCII 字元的請求參數
• 使用 getParameter()等方法會取得亂碼
23
POST 請求參數編碼處理
• 網頁編碼 UTF-8,表單使用 POST 發出「林」
– 林  %E6%9E%97
• 瀏覽器相當於做了這個動作
• 容器若使用 ISO-8859-1 來處理編碼
24
POST 請求參數編碼處理
• 使用 HttpServletRequest 的
setCharacterEncoding()方法
• 在取得任何請求值之「前」
• 相當於要求容器做這個動作
25
POST 請求參數編碼處理
• 從 Servlet 4.0 開始,可以在 web.xml 加入
<request-character-encoding>
<request-character-encoding>UTF-8</request-character-encoding>
26
GET 請求參數編碼處理
• setCharacterEncoding()只針對 POST
– Overrides the name of the character encoding
used in the body of this request.
– 請求用 GET 發送時,沒有定義是否影響 Web 容
器處理編碼的方式
– Tomcat 在 GET 時,setCharacterEncoding()
方法就不會有作用
27
GET 請求參數編碼處理
• 若瀏覽器使用 UTF-8 處理字元,Web 容器
預設使用 ISO-8859-1 作為 URI 編碼
(Tomcat 8.0 之前的版本)
28
GET 請求參數編碼處理
• 若瀏覽器使用 UTF-8 處理字元,相當於作了
這個動作
• Web 容器預設使用 ISO-8859-1 為 URI 編碼
• 用以下編碼轉換來得到正確的「林」字元
29
讀取請求本體
• getReader()傳回 BufferedReader
• getInputStream() 傳回
ServletInputStream
30
31
getReader()
• UTF-8 網頁
32
<form> 標籤 enctype 屬性
• 預設值 "application/x-www-form-urlencoded"
• 上傳檔案,要設為 "multipart/form-data"
33
getReader()
• 上傳檔案
34
getInputStream()
• 要取得上傳的檔案,基本方式就是判斷檔案
的開始與結束區段
• 使用 getInputStream() 取得
ServletInputStream
– InputStream 子類別,代表請求本體串流物件
35
同一個請求期間
• getReader()、getInputStream()只能
擇一呼叫
• 若同一請求期間兩者都有呼叫,會丟出
IllegalStateException 例外
36
getPart()、getParts()
• 在Servlet 3.0中,新增了Part介面
• 可以透過HttpServletRequest的
getPart()取得Part實作物件
37
38
39
@MultipartConfig
• fileSizeThreshold:上傳檔案大小超過
設定門檻的話,會先寫入暫存檔案
• location:寫入檔案時的目錄
• maxFileSize:限制上傳檔案大小
• maxRequestSize:限制 multipart/form-data
請求個數
40
41
多個檔案要上傳
• 可以使用 getParts()方法
• 傳回一個 Collection<Part>,當中是每
個上傳檔案的 Part 物件
42
使用 web.xml 設定
43
RequestDispatcher
• 使用 HttpServletRequest 的
getRequestDispatcher() 方法取得
44
使用 include() 方法
• 將另一個 Servlet 執行流程包括至目前 Servlet
執行流程
45
使用 include() 方法
• 取得 RequestDispatcher 時,也可以包
括查詢字串
46
請求範圍屬性
• HttpServletRequest 與請求範圍屬性有
關的幾個方法:
– setAttribute():指定名稱與物件設定屬性
– getAttribute():指定名稱取得屬性
– getAttributeNames():取得所有屬性名稱
– removeAttribute():指定名稱移除屬性
47
請求範圍屬性
48
java.或javax.開頭的名稱
• javax.servlet.include.request_uri
• javax.servlet.include.context_path
• javax.servlet.include.servlet_path
• javax.servlet.include.path_info
• javax.servlet.include.query_string
• javax.servlet.include.mapping(Servlet
4.0 新增)
49
java.或javax.開頭的名稱
• RequestDispatcher.INCLUDE_REQUEST_URI
• RequestDispatcher.INCLUDE_CONTEXT_PATH
• RequestDispatcher.INCLUDE_SERVLET_PATH
• RequestDispatcher.INCLUDE_PATH_INFO
• RequestDispatcher.INCLUDE_QUERY_STRING
• RequestDispatcher.INCLUDE_MAPPING(Servlet
4.0 新增)
50
使用 forward()方法
• 要將請求處理轉發給別的 Servlet
• 對客戶端的回應同時也轉發給另一個 Servlet
• 目前的 Servlet 不能有任何回應確認,否則會
丟出 IllegalStateException
51
java.或javax.開頭的名稱
• javax.servlet.forward.request_uri
• javax.servlet.forward.context_path
• javax.servlet.forward.servlet_path
• javax.servlet.forward.path_info
• javax.servlet.forward.query_string
• javax.servlet.forward.mapping(Servlet
4.0 新增)
52
java.或javax.開頭的名稱
• RequestDispatcher.FORWARD_REQUEST_URI
• RequestDispatcher.FORWARD_CONTEXT_PATH
• RequestDispatcher.FORWARD_SERVLET_PATH
• RequestDispatcher.FORWARD_PATH_INFO
• RequestDispatcher.FORWARD_QUERY_STRING
• RequestDispatcher.FORWARD_MAPPING(Servlet
4.0 新增)
53
Model 2 / Controller
54
Model 2 / Model
55
Model 2 / View
56
Model 2 / View
57
HttpServletResponse
• setHeader()
• addHeader()
• setIntHeader()
• addIntHeader()
• setDateHeader()
• addDateHeader()
58
HttpServletResponse
• 在回應確認之後設定的標頭,會被容器忽略
• 與緩衝區相關
– getBufferSize()
– setBufferSize()
– isCommitted()
– reset()
– resetBuffer()
– flushBuffer()
59
HttpServletResponse
• 在呼叫 HttpServletResponse 的
getWriter()或 getOutputStream()方
法之後呼叫 setBufferSize(),會丟出
IllegalStateException
• 在回應已確認後呼叫 reset()、
resetBuffer() 會丟出
IllegalStateException
60
HttpServletResponse
• 若被容器關閉,則必須出清所有的回應內容
– Servlet 的 service()方法已結束
– 回應的內容長度超過 HttpServletResponse
的 setContentLength()設定的長度
– 呼叫了 sendRedirect()方法
– 呼叫了 sendError()方法
– 呼叫了 AsyncContext的complete()方法
61
HttpServletResponse
• 使用 getWriter()取得 PrintWriter
• 字元編碼預設是 ISO-8859-1
62
設定 Locale
• 瀏覽器如果有發送 Accept-Language 標頭
• 可以使用 HttpServletRequest 的
getLocale()來取得一個 Locale 物件
• 代表客戶端可接受的語系
• 可以使用 HttpServletResponse 的
setLocale() 來設定地區(Locale)資訊
• setLocale() 也會設定 HTTP 回應的
Content-Language 標頭
63
設定 Locale
• 將 HTTP 回應的 Content-Language 設定
為 zh-TW,而字元編碼處理設定為 BIG5
• 在 web.xml 設定預設的區域與編碼對應
64
設定字元編碼
• 呼叫HttpServletResponse的
setCharacgerEncoding()
• 使用HttpServletResponse的
setContentType()時,指定charset
65
設定字元編碼
• 如果使用了setCharacterEncoding()或
setContentType()時指定了charset,
則setLocale()就會被忽略
66
67
getOutputStream()
• 取得 ServletOutputStream 實例,為
OutputStream 的子類別
68
69
forward()方法
70
sendRedirect()
71
sendError()
72
微網誌
73

More Related Content

What's hot

Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityJustin Lin
 
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Justin Lin
 
Ch02 撰寫與設定Servlet
Ch02 撰寫與設定ServletCh02 撰寫與設定Servlet
Ch02 撰寫與設定ServletJustin Lin
 
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 ServletServlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 ServletJustin Lin
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!Jakub Kubrynski
 
CH03:基礎語法
CH03:基礎語法CH03:基礎語法
CH03:基礎語法Justin Lin
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Hitesh-Java
 
Introduction to JPA and Hibernate including examples
Introduction to JPA and Hibernate including examplesIntroduction to JPA and Hibernate including examples
Introduction to JPA and Hibernate including examplesecosio GmbH
 
Spring boot
Spring bootSpring boot
Spring bootsdeeg
 
CH1:Java平台概論
CH1:Java平台概論CH1:Java平台概論
CH1:Java平台概論Justin Lin
 
PUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBootPUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBootJosué Neis
 
/path/to/content - the Apache Jackrabbit content repository
/path/to/content - the Apache Jackrabbit content repository/path/to/content - the Apache Jackrabbit content repository
/path/to/content - the Apache Jackrabbit content repositoryJukka Zitting
 
Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Jukka Zitting
 
Spring Framework - Core
Spring Framework - CoreSpring Framework - Core
Spring Framework - CoreDzmitry Naskou
 

What's hot (20)

Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/SecurityCh13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
 
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
Servlet & JSP 教學手冊第二版 - 第 1 章:簡介Web應用程式
 
Ch02 撰寫與設定Servlet
Ch02 撰寫與設定ServletCh02 撰寫與設定Servlet
Ch02 撰寫與設定Servlet
 
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 ServletServlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
Servlet & JSP 教學手冊第二版試讀 - 撰寫與設定 Servlet
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
 
CH03:基礎語法
CH03:基礎語法CH03:基礎語法
CH03:基礎語法
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 
Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans Spring - Part 1 - IoC, Di and Beans
Spring - Part 1 - IoC, Di and Beans
 
Introduction to JPA and Hibernate including examples
Introduction to JPA and Hibernate including examplesIntroduction to JPA and Hibernate including examples
Introduction to JPA and Hibernate including examples
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Spring boot
Spring bootSpring boot
Spring boot
 
CH1:Java平台概論
CH1:Java平台概論CH1:Java平台概論
CH1:Java平台概論
 
Spring & hibernate
Spring & hibernateSpring & hibernate
Spring & hibernate
 
PUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBootPUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBoot
 
Spring framework core
Spring framework coreSpring framework core
Spring framework core
 
Spring MVC Framework
Spring MVC FrameworkSpring MVC Framework
Spring MVC Framework
 
/path/to/content - the Apache Jackrabbit content repository
/path/to/content - the Apache Jackrabbit content repository/path/to/content - the Apache Jackrabbit content repository
/path/to/content - the Apache Jackrabbit content repository
 
Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3Oak, the architecture of Apache Jackrabbit 3
Oak, the architecture of Apache Jackrabbit 3
 
Spring Framework - Core
Spring Framework - CoreSpring Framework - Core
Spring Framework - Core
 

Similar to Ch03 請求與回應

Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應Justin Lin
 
Servlet & JSP 教學手冊第二版 - 第 3 章:請求與回應
Servlet & JSP 教學手冊第二版 - 第 3 章:請求與回應Servlet & JSP 教學手冊第二版 - 第 3 章:請求與回應
Servlet & JSP 教學手冊第二版 - 第 3 章:請求與回應Justin Lin
 
Ch01 簡介Web應用程式
Ch01 簡介Web應用程式Ch01 簡介Web應用程式
Ch01 簡介Web應用程式Justin Lin
 
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTLServlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTLJustin Lin
 
開放原始碼 Ch2.5 app - oss - 3rd party api(ver 1.0)
開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0) 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)
開放原始碼 Ch2.5 app - oss - 3rd party api(ver 1.0) My own sweet home!
 
CH10:輸入輸出
CH10:輸入輸出CH10:輸入輸出
CH10:輸入輸出Justin Lin
 
Real time web实时信息流推送
Real time web实时信息流推送Real time web实时信息流推送
Real time web实时信息流推送yongboy
 
Real-Time Web实时信息流推送
Real-Time Web实时信息流推送Real-Time Web实时信息流推送
Real-Time Web实时信息流推送yongboy
 
Elastic stack day-1
Elastic stack day-1Elastic stack day-1
Elastic stack day-1YI-CHING WU
 
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫Justin Lin
 
运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践Li JianYe
 
Web scraping入門1
Web scraping入門1Web scraping入門1
Web scraping入門1兆欽 丘
 
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Justin Lin
 
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践丁 宇
 
14 Saving Loading and Application States
14 Saving Loading and Application States14 Saving Loading and Application States
14 Saving Loading and Application StatesTom Fan
 
ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享國昭 張
 
前端调试工具,编码相关,性能相关
前端调试工具,编码相关,性能相关前端调试工具,编码相关,性能相关
前端调试工具,编码相关,性能相关jay li
 

Similar to Ch03 請求與回應 (20)

Ch03 請求與回應
Ch03 請求與回應Ch03 請求與回應
Ch03 請求與回應
 
Servlet & JSP 教學手冊第二版 - 第 3 章:請求與回應
Servlet & JSP 教學手冊第二版 - 第 3 章:請求與回應Servlet & JSP 教學手冊第二版 - 第 3 章:請求與回應
Servlet & JSP 教學手冊第二版 - 第 3 章:請求與回應
 
Ch01 簡介Web應用程式
Ch01 簡介Web應用程式Ch01 簡介Web應用程式
Ch01 簡介Web應用程式
 
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTLServlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
Servlet & JSP 教學手冊第二版 - 第 7 章:使用 JSTL
 
開放原始碼 Ch2.5 app - oss - 3rd party api(ver 1.0)
開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0) 開放原始碼 Ch2.5   app - oss - 3rd party api(ver 1.0)
開放原始碼 Ch2.5 app - oss - 3rd party api(ver 1.0)
 
CH10:輸入輸出
CH10:輸入輸出CH10:輸入輸出
CH10:輸入輸出
 
Real time web实时信息流推送
Real time web实时信息流推送Real time web实时信息流推送
Real time web实时信息流推送
 
Real-Time Web实时信息流推送
Real-Time Web实时信息流推送Real-Time Web实时信息流推送
Real-Time Web实时信息流推送
 
Elastic stack day-1
Elastic stack day-1Elastic stack day-1
Elastic stack day-1
 
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
Servlet & JSP 教學手冊第二版 - 第 9 章:整合資料庫
 
AJAX Basic
AJAX BasicAJAX Basic
AJAX Basic
 
运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践运维系统开发与Rails 3页面开发实践
运维系统开发与Rails 3页面开发实践
 
Web scraping入門1
Web scraping入門1Web scraping入門1
Web scraping入門1
 
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
 
Javascript
JavascriptJavascript
Javascript
 
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践
 
Berserk js
Berserk jsBerserk js
Berserk js
 
14 Saving Loading and Application States
14 Saving Loading and Application States14 Saving Loading and Application States
14 Saving Loading and Application States
 
ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享ASP.Net WebAPI經驗分享
ASP.Net WebAPI經驗分享
 
前端调试工具,编码相关,性能相关
前端调试工具,编码相关,性能相关前端调试工具,编码相关,性能相关
前端调试工具,编码相关,性能相关
 

More from Justin Lin

Ch14 簡介 Spring Boot
Ch14 簡介 Spring BootCh14 簡介 Spring Boot
Ch14 簡介 Spring BootJustin Lin
 
Ch11 簡介 JavaMail
Ch11 簡介 JavaMailCh11 簡介 JavaMail
Ch11 簡介 JavaMailJustin 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 到 IDEJustin 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:深入模組化
 

Ch03 請求與回應