- 簡介Web應用程式
1.1 Web應用程式基礎
1.1.1 關於HTML
1.1.2 URL、URN與URI?
1.1.3 關於HTTP
1.1.2 URL、URN與URI?
1.1.3 關於HTTP
基於請求/回應模型
無狀態協定
無狀態協定
1.1.4 HTTP請求方法
GET請求
POST請求
敏感資訊
書籤設置考量
瀏覽器快取
安全與等冪
POST請求
敏感資訊
書籤設置考量
瀏覽器快取
安全與等冪
1.1.5 有關URI編碼
保留字元
中文字元
中文字元
1.1.6 後端?前端?
1.1.7 Web安全觀念
1.2 簡介Servlet/JSP 1.1.7 Web安全觀念
1.2.1 何謂Web容器?
1.2.2 Servlet與JSP的關係
1.2.3 關於MVC/Model 2
1.2.4 簡介Java EE
1.3 重點複習 1.2.2 Servlet與JSP的關係
1.2.3 關於MVC/Model 2
1.2.4 簡介Java EE
課後練習
- 撰寫與設定Servlet
2.1 第一個Servlet
2.1.1 準備開發環境
2.1.2 第一個Servlet程式
2.2 在Hello之後 92.1.2 第一個Servlet程式
2.2.1 關於HttpServlet
2.2.2 使用@WebServlet
2.2.3 使用web.xml
2.2.4 檔案組織與部署
2.3 進階部署設定 2.2.2 使用@WebServlet
2.2.3 使用web.xml
2.2.4 檔案組織與部署
2.3.1 URI模式設定
2.3.3 使用web-fragment.xml
2.4 重點複習 環境路徑
Servlet路徑
路徑資訊
HttpServletMapping
2.3.2 Web資料夾結構 Servlet路徑
路徑資訊
HttpServletMapping
2.3.3 使用web-fragment.xml
web-fragment.xml
web.xml與web-fragment.xml
metadata-complete屬性
web.xml與web-fragment.xml
metadata-complete屬性
課後練習
- 請求與回應
3.1 從容器到HttpServlet
3.1.1 Web容器做了什麼?
3.1.2 doXXX()方法?
3.2 關於HttpServletRequest 3.1.2 doXXX()方法?
3.2.1 處理請求參數
3.2.2 處理請求標頭
3.2.3 請求參數編碼處理
3.2.5 getPart()、getParts()取得上傳檔案
3.2.6 使用RequestDispatcher調派請求
3.3 關於HttpServletResponse 3.2.2 處理請求標頭
3.2.3 請求參數編碼處理
POST請求參數編碼處理
GET請求參數編碼處理
3.2.4 getReader()、getInputStream()讀取本體 GET請求參數編碼處理
3.2.5 getPart()、getParts()取得上傳檔案
3.2.6 使用RequestDispatcher調派請求
使用include()方法
請求範圍屬性
使用forward()方法
請求範圍屬性
使用forward()方法
3.3.1 設定回應標頭、緩衝區
3.3.2 使用getWriter()輸出字元
3.3.4 使用sendRedirect()、sendError()
3.4 綜合練習/微網誌 3.3.2 使用getWriter()輸出字元
設定Locale
使用setCharacterEncoding()或setContentType()
3.3.3 使用getOutputStream()輸出位元 使用setCharacterEncoding()或setContentType()
3.3.4 使用sendRedirect()、sendError()
3.4.1 微網誌應用程式功能概述
3.4.2 實作會員申請功能
3.4.3 實作會員登入功能
3.5 重點複習 3.4.2 實作會員申請功能
3.4.3 實作會員登入功能
課後練習
- 會話管理
4.1 會話管理基本原理
4.1.1 使用隱藏欄位
4.1.2 使用Cookie
4.2 HttpSession會話管理 4.1.2 使用Cookie
Cookie原理
實現自動登入
Cookie安全性
4.1.3 使用URI重寫 實現自動登入
Cookie安全性
4.2.1 使用
HttpSession
4.2.2 HttpSession會話管理原理
4.2.3 HttpSession與URI重寫
4.3 綜合練習/微網誌 4.2.2 HttpSession會話管理原理
4.2.3 HttpSession與URI重寫
4.3.1 登入與登出
4.3.2 會員訊息管理
4.3.3 新增與刪除訊息
4.4 重點複習 4.3.2 會員訊息管理
4.3.3 新增與刪除訊息
課後練習
- Servlet進階API、過濾器與傾聽器
5.1 Servlet進階API
5.1.1 Servlet、ServletConfig
與GenericServlet
5.1.2 使用ServletConfig
5.1.3 使用ServletContext
5.2 應用程式事件、傾聽器 5.1.2 使用ServletConfig
5.1.3 使用ServletContext
getRequestDispatcher()
getResourcePaths()
getResourceAsStream()
5.1.4 使用PushBuilder getResourcePaths()
getResourceAsStream()
5.2.1 ServletContext事件、傾聽
器
5.3 過濾器
ServletContextListener
ServletContextAttributeListener
5.2.2 HttpSession事件、傾聽器 ServletContextAttributeListener
HttpSessionListener
HttpSessionAttributeListener
HttpSessionBindingListener
HttpSessionActivationListener
HttpSessionIdListener
5.2.3 HttpServletRequest事件、傾聽器 HttpSessionAttributeListener
HttpSessionBindingListener
HttpSessionActivationListener
HttpSessionIdListener
ServletRequestListener
ServletRequestAttributeListener
ServletRequestAttributeListener
5.3.1 過濾器的概念
5.3.2 實作與設定過濾器
5.4 非同步處理 5.3.2 實作與設定過濾器
Filter
GenericFilter與HttpFilter
過濾器的設定
5.3.3 請求包裹器 GenericFilter與HttpFilter
過濾器的設定
實作字元替換過濾器
實作編碼設定過濾器
5.3.4 回應包裹器 實作編碼設定過濾器
5.4.1 簡介
AsyncContext
5.4.2 非同步Long Polling
5.4.3 更多AsyncContext細節
5.4.4 非同步Server-Sent Event
5.4.5 使用ReadListener
5.4.6 使用WriteListener
5.5 綜合練習/微網誌 5.4.2 非同步Long Polling
5.4.3 更多AsyncContext細節
5.4.4 非同步Server-Sent Event
5.4.5 使用ReadListener
5.4.6 使用WriteListener
5.5.1 建立
UserService
5.5.2 設定過濾器
5.5.3 重構微網誌
5.6 重點複習 5.5.2 設定過濾器
5.5.3 重構微網誌
課後練習
- 使用JSP
6.1 從JSP到Servlet
課後練習
6.1.1 JSP生命週期
6.1.2 Servlet至JSP的簡單轉換
6.1.3 指示元素
6.1.4 宣告、Scriptlet與運算式元素
6.1.5 註解元素
6.1.6 隱含物件
6.1.7 錯誤處理
6.2 標準標籤 6.1.2 Servlet至JSP的簡單轉換
6.1.3 指示元素
6.1.4 宣告、Scriptlet與運算式元素
6.1.5 註解元素
6.1.6 隱含物件
6.1.7 錯誤處理
6.2.1
<jsp:include>、<jsp:forward>標籤
6.2.2 簡介<jsp:useBean>、<jsp:setProperty> 與<jsp:getProperty>
6.2.3 深入<jsp:useBean>、<jsp:setProperty> 與<jsp:getProperty>
6.2.4 談談Model 1
6.2.5 XML格式標籤
6.3 運算式語言(EL) 6.2.2 簡介<jsp:useBean>、<jsp:setProperty> 與<jsp:getProperty>
6.2.3 深入<jsp:useBean>、<jsp:setProperty> 與<jsp:getProperty>
6.2.4 談談Model 1
6.2.5 XML格式標籤
6.3.1 簡介EL
6.3.2 使用EL取得屬性
6.3.3 EL隱含物件
6.3.4 EL運算子
6.3.5 自訂EL函式
6.3.6 EL 3.0
6.4 綜合練習/微網誌 6.3.2 使用EL取得屬性
6.3.3 EL隱含物件
6.3.4 EL運算子
6.3.5 自訂EL函式
6.3.6 EL 3.0
6.4.1 改用JSP實現視圖
6.4.3 建立register.jsp、index.jsp、user.jsp
6.5 重點複習 設定內容類型
用JSP實現註冊成功網頁
用JSP實現註冊失敗網頁
用JSP實現會員網頁
6.4.2 重構UserService與member.jsp 用JSP實現註冊成功網頁
用JSP實現註冊失敗網頁
用JSP實現會員網頁
6.4.3 建立register.jsp、index.jsp、user.jsp
課後練習
- 使用JSTL
7.1 簡介JSTL
7.2 核心標籤庫
7.6 綜合練習/微網誌
課後練習
7.2 核心標籤庫
7.2.1 流程處理標籤
7.2.2 錯誤處理標籤
7.2.3 網頁匯入、重新導向、URI處理標籤
7.2.4 屬性處理與輸出標籤
7.3 I18N相容格式標籤庫 7.2.2 錯誤處理標籤
7.2.3 網頁匯入、重新導向、URI處理標籤
7.2.4 屬性處理與輸出標籤
7.3.1 I18N基礎
7.3.3 地區標籤
7.3.4 格式標籤
7.4 XML標籤庫 關於Java字串
關於ResourceBundle
關於國際化
7.3.2 訊息標籤 關於ResourceBundle
關於國際化
7.3.3 地區標籤
7.3.4 格式標籤
7.4.1 XPath、XSLT基礎
7.4.3 流程處理標籤
7.4.4 文件轉換標籤
7.5 函式標籤庫 XPath路徑表示
XSTL基礎
7.4.2 剖析、設定與輸出標籤 XSTL基礎
7.4.3 流程處理標籤
7.4.4 文件轉換標籤
7.6 綜合練習/微網誌
7.6.1 修改index.jsp、
register.jsp
7.6.2 修改member.jsp
7.6.3 修改user.jsp
7.7 重點複習 7.6.2 修改member.jsp
7.6.3 修改user.jsp
課後練習
- 自訂標籤
8.1 Tag
File自訂標籤
課後練習
8.1.1 簡介Tag
File
8.1.2 處理標籤屬性與本體
8.1.3 TLD檔案
8.2 Simple Tag自訂標籤 8.1.2 處理標籤屬性與本體
8.1.3 TLD檔案
8.2.1 簡介Simple Tag
8.2.2 了解API架構與生命週期
8.2.3 處理標籤屬性與本體
8.2.4 與父標籤溝通
8.2.5 TLD檔案
8.3 Tag自訂標籤 8.2.2 了解API架構與生命週期
8.2.3 處理標籤屬性與本體
8.2.4 與父標籤溝通
8.2.5 TLD檔案
8.3.1 簡介Tag
8.3.2 了解架構與生命週期
8.3.3 重複執行標籤本體
8.3.4 處理本體執行結果
8.3.5 與父標籤溝通
8.4 綜合練習/微網誌 8.3.2 了解架構與生命週期
8.3.3 重複執行標籤本體
8.3.4 處理本體執行結果
8.3.5 與父標籤溝通
8.4.1 重構/使用DAO
8.4.2 加強user.jsp
8.5 重點複習 8.4.2 加強user.jsp
課後練習
- 整合資料庫
9.1 JDBC入門
課後練習
9.1.1 簡介JDBC
9.1.2 連接資料庫
9.1.4 使用PreparedStatement、CallableStatement
9.2 JDBC進階 9.1.2 連接資料庫
註冊Driver實作物件
取得Connection實作物件
關閉Connection實作物件
9.1.3 使用Statement、ResultSet 取得Connection實作物件
關閉Connection實作物件
9.1.4 使用PreparedStatement、CallableStatement
9.2.1 使用DataSource取得連
線
9.2.2 使用ResultSet捲動、更新資料
9.2.3 批次更新
9.2.4 Blob與Clob
9.2.5 簡介交易
9.2.7 簡介RowSet
9.3 使用SQL標籤庫 9.2.2 使用ResultSet捲動、更新資料
9.2.3 批次更新
9.2.4 Blob與Clob
9.2.5 簡介交易
更新遺失(Lost
update)
髒讀(Dirty read)
無法重複的讀取(Unrepeatable read)
幻讀(Phantom read)
9.2.6 簡介metadata 髒讀(Dirty read)
無法重複的讀取(Unrepeatable read)
幻讀(Phantom read)
9.2.7 簡介RowSet
9.3.1 資料來源、查詢標籤
9.3.2 更新、參數、交易標籤
9.4 綜合練習/微網誌 9.3.2 更新、參數、交易標籤
9.4.1 使用JDBC實作DAO
9.4.2 設定JNDI部署描述
9.4.3 實作首頁最新訊息
9.5 重點複習 9.4.2 設定JNDI部署描述
9.4.3 實作首頁最新訊息
課後練習
- Web容器安全管理
10.1 了解與實作Web容器安全管理
課後練習
10.1.1 Java
EE安全基本觀念
10.1.2 宣告式基本驗證
10.1.3 容器基本驗證原理
10.1.4 宣告式表單驗證
10.1.5 容器表單驗證原理
10.1.6 使用HTTPS保護資料
10.1.7 程設式安全管理
10.1.8 標註存取控制
10.2 綜合練習/微網誌 10.1.2 宣告式基本驗證
10.1.3 容器基本驗證原理
10.1.4 宣告式表單驗證
10.1.5 容器表單驗證原理
10.1.6 使用HTTPS保護資料
10.1.7 程設式安全管理
10.1.8 標註存取控制
10.2.1 使用容器表單驗證
10.2.2 設定DataSourceRealm
10.3 重點複習 10.2.2 設定DataSourceRealm
課後練習
- JavaMail入門
11.1 使用JavaMail
課後練習
11.1.1 傳送純文字郵件
11.1.2 傳送多重內容郵件
11.2 綜合練習/微網誌 11.1.2 傳送多重內容郵件
11.2.1 傳送驗證帳號郵件
11.2.2 驗證使用者帳號
11.2.3 傳送重設密碼郵件
11.2.4 重新設定密碼
11.3 重點複習 11.2.2 驗證使用者帳號
11.2.3 傳送重設密碼郵件
11.2.4 重新設定密碼
課後練習
- Spring起步走
12.1 使用Gradle
課後練習
12.1.1 下載、設定Gradle
12.1.2 簡單的Gradle專案
12.1.3 Gradle與Eclipse
12.2 認識Spring核心 12.1.2 簡單的Gradle專案
12.1.3 Gradle與Eclipse
12.2.1 相依注入
12.2.2 使用Spring核心
12.3 重點複習 12.2.2 使用Spring核心
課後練習
- 整合Spring MVC
13.1 初嘗Spring MVC
課後練習
13.1.1 程式庫或框架?
13.2 逐步善用Spring MVC IoC(Inversion of
Control)
需要使用框架嗎?
13.1.2 初步套用Spring MVC 需要使用框架嗎?
設定Gradle支援
初始前端控制器
重構控制器
在web.xml宣告安全設定
13.1.3 注入服務物件與屬性 初始前端控制器
重構控制器
在web.xml宣告安全設定
13.2.1 簡化控制器
13.2.2 建立表單物件
13.2.3 關於Thymeleaf模版
13.3 重點複習 13.2.2 建立表單物件
13.2.3 關於Thymeleaf模版
課後練習
- 簡介Spring Boot
14.1 初嘗Spring Boot
課後練習
14.1.1 哈囉!Spring
Boot!
14.2 整合IDE Spring
Initializer
使用spring指令
14.1.2 實現MVC 使用spring指令
建立控制器
使用Thymeleaf
建立與注入元件
14.1.3 使用JSP 使用Thymeleaf
建立與注入元件
14.2.1 匯入Spring
Boot專案
14.2.2 Spring Tool Suite
14.3 重點複習 14.2.2 Spring Tool Suite
課後練習
- A 如何使用本書專案
A.1 專案環境配置
A.2 範例專案匯入
A.2 範例專案匯入