Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器

on

  • 1,520 views

Servlet & JSP 教學手冊第二版

Servlet & JSP 教學手冊第二版

Statistics

Views

Total Views
1,520
Views on SlideShare
1,520
Embed Views
0

Actions

Likes
0
Downloads
106
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Servlet & JSP 教學手冊第二版 - 第 5 章:Servlet 進階 API、過濾器與傾聽器 Presentation Transcript

  • 1. CHAPTER 5• Servlet進階API、過濾器 與傾聽器 學習目標 • 了解Servlet生命週期 • 使用ServletConfig 與ServletContext • 各種傾聽器的使用 • 實作Filter介面來開 發過濾器
  • 2. Servlet介面• init()• service()• destroy()
  • 3. ServletConfig介面
  • 4. Servlet類別架構圖
  • 5. GenericServlet類別• 將初始Servlet呼叫init()方法傳入的 ServletConfig封裝起來• 有一些初始時所要執行的動作,可以重新定 義這個無參數的init()方法
  • 6. GenericServlet類別• 包括了Servlet與ServletConfig定義方 法的簡單實作
  • 7. 使用ServletConfig• 使用標註設定個別Servlet的初始參數
  • 8. 使用ServletConfig• 在web.xml中設定個別Servlet的初始參數
  • 9. 使用ServletConfig• GenericServlet定義了一些方法,將 ServletConfig封裝起來,便於取得設定 資訊
  • 10. 使用ServletConfig• 如果web.xml中的設定要覆蓋標註設定, <servlet-name>的設定必須與 @WebServlet的name屬性相同• 如果不設定name屬性,預設是類別完整名稱
  • 11. 使用ServletConfig
  • 12. ServletContext介面• 定義了運行Servlet的應用程式環境的一些行 為與觀點• 整個Web應用程式載入Web容器之後,容器 會生成一個ServletContext物件作為整個 應用程式的代表• 透過ServletConfig的 getServletContext()方法就可以取得
  • 13. 使用ServletContext• getRequestDispatcher()• getResourcePaths()
  • 14. 使用ServletContext• getResourceAsStream() – 在3.3.3節中有個讀取PDF的範例
  • 15. ServletContextListener• 想得知何時Web應用程式已經初始化或即將 結束銷毀
  • 16. ServletContextListener
  • 17. ServletContextListener• 在Servlet 3.0之前, ServletContextListener實作類別,必 須在web.xml中設定
  • 18. ServletContextListener• 有些應用程式的設定,必須在Web應用程式 初始時進行
  • 19. ServletContextAttributeListener
  • 20. HttpSessionListener
  • 21. HttpSessionListener
  • 22. HttpSessionListener
  • 23. HttpSessionAttributeListener
  • 24. HttpSessionAttributeListener• 讓即將加入HttpSession的屬性物件實作, 不需註釋或在web.xml中設定
  • 25. HttpSessionAttributeListener
  • 26. 請求相關的傾聽器• ServletRequestListener• ServletRequestAttributeListener• AsyncListener
  • 27. 過濾器的概念• 針對所有的Servlet,產品經理想要了解從請求到回 應之間的時間差。• 針對某些特定的頁面,客戶希望只有特定幾個使用 者才可以瀏覽。• 基於安全性的考量,使用者輸入的特定字元必須過 濾並替換為無害的• 字元。• 請求與回應的編碼從Big5改用UTF-8。• …
  • 28. 過濾器的概念• 執行Servlet的service()方法「前」,記錄超始時 間,Servlet的service()方法執行「後」,記錄結 束時間並計算時間差。• 執行Servlet的service()方法「前」,驗證是否為 允許的使用者。• 執行Servlet的service()方法「前」,對請求參數 進行字元過濾與替換。• 執行Servlet的service()方法「前」,對請求與回 應物件設定編碼。• …
  • 29. 過濾器的概念
  • 30. 過濾器的概念
  • 31. 過濾器的概念
  • 32. 實作與設定過濾器
  • 33. 實作與設定過濾器• FilterChain的doFilter()實作概念
  • 34. 實作與設定過濾器
  • 35. 實作與設定過濾器• 在過濾器的請求套用上,除了指定URL模式 之外,也可以指定Servlet名稱,這可以透過 @WebServlet的servletNames來設定
  • 36. 初始參數設定
  • 37. 觸發過濾器的時機• 預設是瀏覽器直接發出請求
  • 38. 請求包裹器• 實作字元替換過濾器 <a href="http://openhome.cc">OpenHome.cc</a>
  • 39. 請求包裹器
  • 40. &lt;a href=&quot;http://openhome.cc&quot;&gt;OpenHome.cc&lt;/a&gt;
  • 41. 實作編碼設定過濾器
  • 42. 回應包裹器
  • 43. 實作壓縮過濾器
  • 44. 簡介AsyncContext• 在Servlet 3.0中,在ServletRequest上提 供了startAsync()方法• 呼叫了startAsync()方法取得 AsyncContext物件之後,此次請求的回應 會被延後,並釋放容器分配的執行緒
  • 45. 簡介AsyncContext• getRequest()• getResponse()• complete()• dispatch()
  • 46. 簡介AsyncContext• 必須告知容器此Servlet支援非同步處理
  • 47. 簡介AsyncContext• 若其前端有過濾器,則過濾器亦需標示其支 援非同步處理
  • 48. 簡介AsyncContext
  • 49. 簡介AsyncContext
  • 50. 模擬伺服器推播
  • 51. 綜合練習/微網誌• 先停下來檢討目前的應用程式,有哪些維護 上的問題• 在不改變目前應用程式的功能下,程式碼必 須作出哪些調整• 讓每個程式碼職責上變得更為清晰,對於將 來的維護更有幫助