Servlet/JSP深入詳解——基于Tomcat的Web開發(暢銷書升級版)( 簡體 字) | |
作者:孫鑫 | 類別:1. -> 程式設計 -> 網路編程 -> JSP |
出版社:電子工業出版社 | 3dWoo書號: 51215 詢問書籍請說出此書號! 有庫存 NT售價: 695 元 |
出版日:6/1/2019 | |
頁數:688 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787121361500 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
Servlet篇
第1章 Servlet與Tomcat 1 1.1 Web技術的發展 1 1.2 Servlet與Servlet容器 3 1.3 Servlet容器的分類 4 1.4 Tomcat簡介 5 1.5 Tomcat的安裝與配置 6 1.5.1 Tomcat的目錄結構 8 1.5.2 運行Tomcat 9 1.5.3 Tomcat啟動分析 13 1.6 Tomcat的體系結構 15 1.7 Tomcat的管理程序 17 1.8 小結 19 第2章 Servlet技術 20 2.1 Servlet API 20 2.1.1 Servlet接口 21 2.1.2 ServletRequest和ServletResponse 22 2.1.3 ServletConfig 25 2.1.4 一個簡單的Servlet 25 2.1.5 GenericServlet 33 2.1.6 HttpServlet 34 2.1.7 HttpServletRequest和HttpServletResponse 35 2.2 幾個實例 38 2.2.1 實例一:WelcomeServlet 38 2.2.2 實例二:OutputInfoServlet 44 2.2.3 實例三:LoginServlet 48 2.3 Servlet異常 53 2.3.1 ServletException類 53 2.3.2 UnavailableException類 53 2.4 Servlet生命周期 54 2.5 Servlet上下文 56 2.5.1 ServletContext接口 56 2.5.2 頁面訪問量統計實例 58 2.6 請求轉發 62 2.6.1 RequestDispatcher接口 62 2.6.2 得到RequestDispatcher對象 63 2.6.3 請求轉發的實例 63 2.6.4 sendRedirect()和forward()方法的區別 70 2.7 小結 71 第3章 Web應用程序的部署 72 3.1 配置任意目錄下的Web應用程序 72 3.2 WAR文件 75 3.3 與Servlet配置相關的元素 78 3.3.1 <servlet>元素及其子元素 78 3.3.2 <servlet-mapping>元素及其子元素 80 3.4 一個實例 82 3.5 小結 86 第4章 數據庫訪問 87 4.1 JDBC驅動程序的類型 88 4.1.1 JDBC-ODBC橋 88 4.1.2 部分本地API、部分Java驅動程序 89 4.1.3 JDBC網絡純Java驅動程序 89 4.1.4 本地協議的純Java驅動程序 89 4.2 安裝數據庫 90 4.3 下載MySQL JDBC驅動 94 4.4 JDBC API 95 4.4.1 加載并注冊數據庫驅動 96 4.4.2 建立到數據庫的連接 99 4.4.3 訪問數據庫 100 4.4.4 事務處理 129 4.4.5 可滾動和可更新的結果集 138 4.5 JDBC數據源和連接池 140 4.6 小結 145 第5章 會話跟蹤 146 5.1 用于會話跟蹤的技術 147 5.1.1 SSL會話 147 5.1.2 Cookies 148 5.1.3 URL重寫 149 5.2 Java Servlet API的會話跟蹤 149 5.2.1 HttpSession接口 150 5.2.2 Session的生命周期 151 5.2.3 Cookie的應用 165 5.2.4 Session和Cookie的深入研究 173 5.3 Session的持久化 175 5.4 小結 176 第6章 Servlet的異常處理機制 177 6.1 聲明式異常處理 178 6.1.1 HTTP錯誤代碼的處理 178 6.1.2 Java異常的處理 182 6.2 程序式異常處理 185 6.2.1 在try-catch語句中處理異常 185 6.2.2 使用RequestDispatcher來處理異常 188 6.3 小結 191 第7章 開發線程安全的Servlet 192 7.1 多線程的Servlet模型 192 7.2 線程安全的Servlet 193 7.2.1 變量的線程安全 193 7.2.2 屬性的線程安全 202 7.3 SingleThreadModel接口 206 7.4 小結 206 JSP篇 第8章 JSP技術 207 8.1 JSP簡介 207 8.2 JSP的運行機制 208 8.3 JSP的語法 213 8.3.1 指令元素(directive element) 213 8.3.2 腳本元素(scripting element) 218 8.3.3 動作元素(action element) 220 8.3.4 注釋 228 8.4 JSP的隱含對象 229 8.4.1 pageContext 229 8.4.2 out 230 8.4.3 page 231 8.4.4 exception 231 8.5 對象和范圍 232 8.6 留言板程序 235 8.7 留言板管理程序 244 8.8 JSP文檔 250 8.8.1 JSP文檔的標識 251 8.8.2 JSP文檔中的元素語法 251 8.9 小結 255 第9章 JSP與JavaBean 256 9.1 JavaBean簡介 256 9.1.1 屬性的命名 257 9.1.2 屬性的類型 259 9.2 在JSP中使用JavaBean 259 9.2.1 <jsp:useBean> 260 9.2.2 <jsp:setProperty> 261 9.2.3 <jsp:getProperty> 262 9.2.4 示例 262 9.3 網上書店程序 267 9.4 小結 291 第10章 JSP開發的兩種模型 292 10.1 模型1 292 10.2 模型2 296 10.3 MVC模式的實現總結 303 10.4 小結 303 第11章 標簽庫(Tag Library) 304 11.1 標簽庫API 304 11.1.1 標簽的形式 304 11.1.2 Tag接口 306 11.1.3 IterationTag接口 307 11.1.4 BodyTag接口 309 11.2 標簽庫描述符 310 11.2.1 <taglib>元素 311 11.2.2 <validator>元素 312 11.2.3 <listener>元素 313 11.2.4 <tag>元素 313 11.2.5 <tag-file>元素 316 11.2.6 <function>元素 316 11.3 傳統標簽的開發 318 11.3.1 實例一:<hello>標簽 318 11.3.2 實例二:<max>標簽 321 11.3.3 實例三:<greet>標簽 323 11.3.4 實例四:<switch>標簽 326 11.3.5 實例五:<iterate>標簽 331 11.4 簡單標簽的開發 337 11.4.1 SimpleTag接口 337 11.4.2 實例一:<welcome>標簽 339 11.4.3 實例二:<max_ex>標簽 341 11.5 自定義標簽開發總結 343 11.6 小結 343 第12章 表達式語言(EL) 344 12.1 語法 344 12.1.1 “[ ]”和“.”操作符 344 12.1.2 算術操作符 345 12.1.3 關系操作符 346 12.1.4 邏輯操作符 346 12.1.5 Empty操作符 346 12.1.6 條件操作符 346 12.1.7 圓括號 346 12.1.8 操作符的優先級 346 12.2 隱含對象 347 12.3 命名變量 348 12.4 保留的關鍵字 349 12.5 函數 349 12.6 小結 351 第13章 JSP標準標簽庫(JSTL) 352 13.1 JSTL簡介 352 13.2 配置JSTL 353 13.3 Core標簽庫 354 13.3.1 一般用途的標簽 354 13.3.2 條件標簽 358 13.3.3 迭代標簽 361 13.3.4 URL相關的標簽 364 13.4 I18N標簽庫 369 13.4.1 國際化標簽 369 13.4.2 格式化標簽 375 13.5 SQL標簽庫 384 13.5.1 <sql:setDataSource> 384 13.5.2 <sql:query> 385 13.5.3 <sql:param> 389 13.5.4 <sql:dateParam> 390 13.5.5 <sql:update> 390 13.5.6 <sql:transaction> 392 13.6 XML標簽庫 393 13.6.1 核心操作 394 13.6.2 流程控制 397 13.6.3 轉換操作 401 13.7 Functions標簽庫 404 13.7.1 fn:contains 404 13.7.2 fn:containsIgnoreCase 405 13.7.3 fn:startsWith 405 13.7.4 fn:endsWith 406 13.7.5 fn:indexOf 407 13.7.6 fn:replace 407 13.7.7 fn:substring 408 13.7.8 fn:substringBefore 409 13.7.9 fn:substringAfter 410 13.7.10 fn:split 410 13.7.11 fn:join 411 13.7.12 fn:toLowerCase 412 13.7.13 fn:toUpperCase 413 13.7.14 fn:trim 413 13.7.15 fn:escapeXml 414 13.7.16 fn:length 414 13.8 小結 415 第14章 標簽文件(Tag Files) 416 14.1 標簽文件的語法 416 14.2 一個簡單的標簽文件 416 14.3 標簽文件的隱含對象 420 14.4 標簽文件的指令 421 14.4.1 tag指令 421 14.4.2 attribute指令 423 14.4.3 variable指令 423 14.5 標簽文件實例講解 425 14.5.1 實例一:<welcome>標簽 425 14.5.2 實例二:<toHtml>標簽 426 14.6 <jsp:invoke>動作元素 428 14.7 <jsp:doBody>動作元素 428 14.8 小結 429 應用篇 第15章 Servlet監聽器 430 15.1 監聽器接口 430 15.2 ServletContextListener接口 431 15.3 HttpSessionBindingListener接口 433 15.4 在線人數統計程序 434 15.5 小結 441 第16章 Filter在Web開發中的應用 442 16.1 過濾器概述 442 16.2 Filter API 443 16.2.1 Filter接口 444 16.2.2 FilterConfig接口 444 16.2.3 FilterChain接口 445 16.3 過濾器的部署 445 16.4 過濾器的開發 448 16.5 對用戶進行統一驗證的過濾器 450 16.6 對請求和響應數據進行替換的過濾器 456 16.7 對響應內容進行壓縮的過濾器 467 16.8 小結 474 第17章 中文亂碼問題與國際化 475 17.1 中文亂碼問題產生的由來 475 17.1.1 常用字符集 475 17.1.2 對亂碼產生過程的分析 478 17.2 中文亂碼問題的解決方案 480 17.3 使用過濾器解決中文問題 482 17.4 讓Tomcat支持中文文件名 487 17.5 國際化與本地化 488 17.5.1 Locale 488 17.5.2 資源包 490 17.5.3 消息格式化 492 17.5.4 編寫國際化的Web應用程序 493 17.6 小結 498 第18章 開發安全的Web應用程序 499 18.1 概述 499 18.2 理解驗證機制 501 18.2.1 HTTP Basic Authentication 501 18.2.2 HTTP Digest Authentication 502 18.2.3 HTTPS Client Authentication 502 18.2.4 Form Based Authentication 502 18.3 聲明式安全 503 18.3.1 <security-constraint>元素 503 18.3.2 多個安全約束的聯合 506 18.3.3 <login-config>元素 507 18.3.4 基本驗證的實現 508 18.3.5 基于表單驗證的實現 510 18.3.6 使用數據庫保存用戶名和密碼 513 18.4 程序式安全 517 18.5 SQL注入攻擊的防范 520 18.6 小結 522 第19章 避免表單的重復提交 523 19.1 在客戶端避免表單的重復提交 523 19.2 在服務器端避免表單的重復提交 526 19.3 小結 534 第20章 使用Eclipse開發Web應用 535 20.1 Eclipse介紹 535 20.1.1 下載并安裝Eclipse 535 20.1.2 Eclipse開發環境介紹 536 20.1.3 配置Eclipse 540 20.2 文件的上傳 544 20.2.1 基于表單的文件上傳 544 20.2.2 文件上傳格式分析 545 20.2.3 commons-fileupload組件 546 20.2.4 文件上傳實例 548 20.3 文件的下載 561 20.4 給圖片添加水印和文字 570 20.5 小結 574 第21章 Servlet 3.0新特性詳解 576 21.1 新增的注解 577 21.1.1 @WebServlet注解 577 21.1.2 @WebFilter注解 579 21.1.3 @WebInitParam注解 580 21.1.4 @WebListener注解 581 21.1.5 @MultipartConfig注解 582 21.2 異步處理 582 21.2.1 實例:計算斐波那契數列 585 21.2.2 AsyncListener 588 21.3 動態添加和配置Web組件 590 21.3.1 實例一:實現ServletContextListener接口來添加Servlet 592 21.3.2 實例二:實現ServletContainerInitializer接口來添加組件 593 21.4 Web片段和可插性支持 596 21.4.1 Web模塊開發 597 21.4.2 解決Web模塊加載順序的問題 599 21.5 HttpServletRequest 對文件上傳的支持 601 21.6 總結 605 附錄A 快速掌握HTML 606 A.1 WWW簡介 606 A.2 快速掌握HTML 608 A.2.1 HTML(Hypertext Markup Language) 608 A.2.2 HTML元素的四種形式 608 A.2.3 第一個頁面 608 A.2.4 第二個頁面 609 A.2.5 與段落控制相關的標簽 610 A.2.6 控制文本的顯示 611 A.2.7 如何輸入特殊的字符 613 A.2.8 注釋 615 A.2.9 列表 615 A.2.10 表格 619 A.2.11 HTML交互式表單 622 A.2.12 其他常用標簽 629 A.2.13 框架 633 A.3 小結 634 附錄B 解析HTTP 635 B.1 概述 635 B.2 HTTP URL 636 B.3 HTTP請求 637 B.3.1 請求行 637 B.3.2 消息報頭 638 B.3.3 請求正文 638 B.4 HTTP響應 639 B.4.1 狀態行 639 B.4.2 消息報頭 641 B.4.3 響應正文 641 B.5 HTTP消息 642 B.6 實驗 647 B.7 小結 649 附錄C server.xml文件 650 C.1 頂層元素 651 C.1.1 Server元素 651 C.1.2 Service元素 651 C.2 連接器 652 C.2.1 HTTP連接器 652 C.2.2 AJP連接器 654 C.3 容器 654 C.3.1 Engine元素 654 C.3.2 Host元素 655 C.3.3 Context元素 656 C.4 小結 657 附錄D web.xml文件 658 D.1 <description>元素 659 D.2 <display-name>元素 659 D.3 <icon>元素 660 D.4 <distributable>元素 660 D.5 <context-param>元素 660 D.6 <filter>元素 660 D.7 <filter-mapping>元素 661 D.8 <listener>元素 662 D.9 <servlet>元素 662 D.10 <servlet-mapping>元素 664 D.11 <session-config>元素 664 D.12 <mime-mapping>元素 664 D.13 <welcome-file-list>元素 665 D.14 <error-page>元素 665 D.15 <jsp-config>元素 665 D.16 <security-constraint>元素 667 D.17 <login-config>元素 668 D.18 <security-role>元素 669 D.19 <env-entry>元素 669 D.20 <ejb-ref>元素 670 D.21 <ejb-local-ref>元素 670 D.22 <resource-ref>元素 671 D.23 <resource-env-ref>元素 671 D.24 <locale-encoding-mapping-list>元素 671 D.25 小結 672 本書共分3篇,分別為Servlet篇、JSP篇及其應用篇,書中展示了Java Web開發中各種技術的應用,幫助讀者快速掌握Java Web開發。在知識的講解上,本書采用理論與實踐相結合的方式,從程序運行的內部機制進行分析講解,并通過大量的實例和實驗來驗證并運用本書的知識。大部分章節都提供了多個例子,而且很多例子都是目前Web開發中經常使用的,具有相當高的實用價值。本書不僅可以作為Java Web開發的學習用書,還可以作為從事Java Web開發的程序員的參考用書和必備手冊。
隨著Java語言的流行,Java在網站和企業級應用的開發上應用得越來越普遍,Java Web開發已經成為Java企業級解決方案中不可或缺的組成部分。
本書遵照Servlet和JSP 規范,系統、完整地介紹了Java Web開發中的各種技術,從知識的講解→知識的運用→實際問題的解決,一步一步地引導讀者掌握Java Web開發的知識體系結構。 本書面向的讀者 本書面向的讀者群包括: ? 毫無Web經驗的初學者。 ? 有一定的Web經驗,但沒有從事過Web開發的讀者。 ? 具有其他腳本語言Web開發經驗,想要快速轉向Java Web開發的程序員。 ? 正在從事Java Web開發的初、中級程序員。 本書的內容組織 全書共分3篇,包括Servlet篇、JSP篇和應用篇。前兩篇相對獨立,但在內容上又有遞進的關系。最后一個部分綜合應用前兩個部分的知識,講解了一些高級應用,并結合實際開發中要解決的問題,給出了很多具有實用價值的實例程序。 附錄作為本書不可或缺的部分,對HTML和HTTP協議進行了介紹,缺少Web經驗的讀者可以從這部分內容中學到Web開發的必備知識。此外,附錄還提供了server.xml和web.xml文件的介紹,可以作為讀者從事Java Web開發的參考。 本書在內容的編排上獨具匠心,將知識的連貫性和學習規律有機地組織在一起。本書首先介紹了Servlet技術及其應用,并介紹了Tomcat服務器的體系結構和相關配置。在第一篇中,包括了下面的主題: ? Servlet與Tomcat ? Servlet技術 ? Web應用程序的部署 ? 數據庫訪問 ? 會話跟蹤 ? Servlet的異常處理機制 ? 開發線程安全的Servlet 讀者如果掌握了這部分的內容,就可以開始Web應用程序的開發了。 本書第二篇是JSP篇,包括了與JSP相關的各種技術。主要內容有JSP技術、JSP與JavaBean、JSP開發的兩種架構模型、自定義標簽庫、表達式語言、JSTL、標簽文件。JSP是建立在Servlet規范提供的功能之上的動態網頁技術,讀者看完第1篇介紹的Servlet,自然也就能理解JSP了。第二篇的內容細致全面,不但可以作為學習資料使用,而且可以作為以后工作中的參考手冊。 本書第三篇是應用篇,結合前2篇介紹的知識,講解了一些高級應用,給出了很多具有實用價值的實例程序。主要內容有: ? Servlet監聽器 ? 過濾器在Web開發中的應用 ? 中文亂碼問題與國際化 ? Web應用程序安全 ? 避免表單重復提交等實例 ? 使用Eclipse開發Web應用程序 ? Servlet 3.0新特性詳解 這部分內容從應用開發的角度幫助讀者提升Java Web開發技能。 本書的實例程序 筆者在編寫本書時,使用的操作系統是Windows 8.1專業版,JDK版本是1.8.0_192,Web容器是Tomcat 9.0.14,開發工具是Eclipse IDE for Enterprise Java Developers(版本2018-12),數據庫是MySQL 8.0.13。本書所有的實例程序都在上述環境中運行正常。 本書絕大部分的例子程序,都沒有放在Tomcat安裝目錄的webapps目錄下,而是單獨放在自定義的一個目錄中。讀者要運行這些程序,有兩種方式:一種方式是直接將網站上下載的例子程序目錄復制到Tomcat的webapps目錄下運行;另一種方式是配置Web應用程序的運行目錄,在%CATALINA_HOME%confCatalinalocalhost目錄下(%CATALINA_ HOME%表示Tomcat的安裝目錄),建立chXX.xml(XX表示每章的序號,例如第5章是ch05.xml,第13章是ch13.xml)文件。例如,要配置第5章的例子程序,可以在%CATALINA_HOME%confCatalinalocalhost目錄下創建ch05.xml文件,編輯這個文件,輸入下面的內容: <Context docBase="F:JSPLessonch05" reloadable="true"/> 將“F:JSPLessonch05”替換為讀者機器上對應章節的Web應用程序所在的目錄。 此外,在每章例子程序的開發步驟中也給出了詳細的配置過程,讀者按照步驟操作,會發現配置非常容易。 當采用數據源的方式來訪問數據庫時,你需要將MySQL的JDBC驅動復制到Tomcat安裝目錄的lib子目錄中。 學習建議 作者針對三種不同類型的讀者,提出下面的學習建議。 (1)對HTML和HTTP協議不是很了解的讀者,建議從附錄A、附錄B開始學習,然后再從第1章開始學習。在學習第1篇的Servlet時,要結合附錄B,隨時參照,以加深對HTTP Servlet的理解。 (2)對HTML和HTTP協議比較清楚的讀者,可以直接從第1章開始學習,按照章節的順序一步一步進行下去。 (3)有Java Web開發經驗的讀者,可以有選擇性地學習本書的內容,并在開發過程中,以本書作為參考用書。 最后,衷心地祝愿讀者能夠從此書獲益,從而實現自己的開發夢想。由于本書的內容較多、牽涉的技術較廣,錯誤和疏漏之處在所難免,歡迎廣大技術專家和讀者指正。 |