具體描述
內容簡介
本書分為五部分共20章,包括入門、JSP編程、Servlet和JavaBean開發、應用開發與框架、實訓。本書逐步地引領讀者從基礎到各個知識點的學習,全書內容由淺入深,並輔以大量的實例說明,書末提供瞭一些實訓的內容。
本書提供瞭所有實例的源代碼,以及開發過程中用到的軟件,供讀者學習參考使用。
本書為學校教學量身定做,每個章節都有建議的課時。本書適閤作為高校Java Web開發相關課程的教材,也適閤有Java SE知識基礎但沒有Java Web開發基礎的程序員作為入門用書,更可以作為社會Java嵌入式培訓班的教材。本書對於缺乏項目實戰經驗的程序員來說,可用於快速積纍項目開發經驗。
內頁插圖
目錄
第1部分入門
第1章Java Web開發環境配置
1.1B/S結構
1.2服務器安裝
1.2.1服務器的作用
1.2.2獲取服務器軟件
1.2.3安裝服務器
1.2.4測試服務器
1.2.5配置服務器
1.3IDE安裝
1.3.1IDE的作用
1.3.2獲取IDE軟件
1.3.3安裝IDE
1.3.4配置IDE
1.4第一個Web項目
1.4.1創建一個Web項目
1.4.2目錄結構
1.4.3部署
1.4.4常見錯誤
1.5本章小結
1.6上機習題
第2章HTML基礎
2.1靜態網頁製作
2.1.1HTML簡介
2.1.2HTML文檔的基本結構
2.2HTML中的常見標簽
2.2.1文字布局及字體標簽
2.2.2列錶標簽
2.3錶格標簽
2.3.1錶格基本設計
2.3.2閤並單元格
2.4鏈接和圖片標簽
2.5錶單標簽
2.6框架
2.7本章小結
2.8上機習題
第3章JavaScript基礎
3.1JavaScript簡介
3.1.1第一個JavaScript程序
3.1.2JavaScript語法
3.2JavaScript內置對象
3.2.1window對象
3.2.2history對象
3.2.3document對象
3.2.4location對象
3.3本章小結
3.4上機習題
第2部分JSP編程
第4章JSP基本語法
4.1第一個JSP頁麵
4.2注釋
4.3JSP錶達式
4.4JSP程序段
4.5JSP聲明
4.6URL傳值
4.7JSP指令和動作
4.7.1JSP指令
4.7.2JSP動作
4.8本章小結
4.9上機習題
第5章錶單開發
5.1認識錶單
5.1.1錶單的作用
5.1.2定義錶單
5.2單一錶單元素數據的獲取
5.2.1獲取文本框中的數據
5.2.2獲取密碼框中的數據
5.2.3獲取多行文本框中的數據
5.2.4獲取單選按鈕中的數據
5.2.5獲取下拉菜單中的數據
5.3捆綁錶單元素數據的獲取
5.3.1獲取復選框中的數據
5.3.2獲取多選列錶框中的數據
5.3.3獲取其他同名錶單元素中的數據
5.4隱藏錶單
5.5其他問題
5.5.1用JavaScript進行提交
5.5.2中文亂碼問題
5.6本章小結
5.7上機習題
第6章JSP訪問數據庫
6.1JDBC簡介
6.2建立ODBC數據源
6.3JDBC操作
6.3.1添加數據
6.3.2刪除數據
6.3.3修改數據
6.3.4查詢數據
6.4使用PreparedStatement
6.5事務
6.6使用廠商驅動進行數據庫連接
6.7本章小結
6.8上機習題
第7章JSP內置對象(1)
7.1認識JSP內置對象
7.2out對象
7.3request對象
7.4response對象
7.4.1利用response對象進行重定嚮
7.4.2利用response設置HTTP頭
7.5Cookie操作
7.6本章小結
7.7上機習題
第8章JSP內置對象(2)
8.1利用session開發購物車
8.1.1購物車需求
8.1.2如何用session開發購物車
8.2session其他API
8.2.1session的其他操作
8.2.2sessionId
8.2.3利用session保存登錄信息
8.3application對象
8.4其他對象
8.5本章小結
8.6上機習題
第3部分Servlet和JavaBean開發
第9章Servlet編程
9.1認識Servlet
9.2編寫Servlet
9.2.1建立Servlet
9.2.2Servlet運行機製
9.3Servlet生命周期
9.4Servlet與JSP內置對象
9.5設置歡迎頁麵
9.6在Servlet中讀取參數
9.6.1設置參數
9.6.2獲取參數
9.7使用過濾器
9.7.1為什麼需要過濾器
9.7.2編寫過濾器
9.7.3需要注意的問題
9.8異常處理
9.9本章小結
9.10上機習題
第10章JSP和JavaBean
10.1認識JavaBean
10.1.1編寫JavaBean
10.1.2特殊JavaBean屬性
10.2在JSP中使用JavaBean
10.3JavaBean的範圍
10.4DAO和VO
10.4.1為什麼需要DAO和VO
10.4.2編寫DAO和VO
10.4.3在JSP中使用DAO和VO
10.5本章小結
10.6上機習題
第4部分應用開發與框架
第11章EL和JSTL
11.1認識錶達式語言
11.1.1為什麼需要錶達式語言
11.1.2錶達式語言基本語法
11.2基本運算符
11.2.1.和[]運算符
11.2.2算術運算符
11.2.3關係運算符
11.2.4邏輯運算符
11.2.5其他運算符
11.3數據訪問
11.3.1對象的作用域
11.3.2訪問JavaBean
11.3.3訪問集閤
11.3.4其他隱含對象
11.4認識JSTL
11.5核心標簽庫
11.5.1核心標簽庫介紹
11.5.2用核心標簽進行基本數據操作
11.5.3用核心標簽進行流程控製
11.6XML標簽庫簡介
11.7國際化標簽庫簡介
11.8數據庫標簽庫簡介
11.9函數標簽庫簡介
11.10本章小結
11.11上機習題
第12章AJAX入門
12.1AJAX概述
12.1.1為什麼需要AJAX技術
12.1.2AJAX技術介紹
12.2AJAX開發
12.2.1AJAX核心代碼
12.2.2API解釋
12.3AJAX簡單案例
12.3.1錶單驗證需求
12.3.2實現方法
12.3.3需要注意的問題
12.4本章小結
12.5上機習題
第13章驗證碼和文件上傳下載
13.1使用JSP驗證碼
13.2驗證碼開發
13.2.1在JSP上實現驗證碼
13.2.2實現驗證碼刷新
13.2.3用驗證碼進行驗證
13.3認識文件上傳
13.4實現文件上傳
13.4.1文件上傳包
13.4.2如何實現文件上傳
13.5文件下載
13.6本章小結
13.7上機習題
第14章MVC和Struts2基本原理
14.1MVC模式
14.2Struts2簡介
14.3Struts2的基本原理
14.3.1環境配置
14.3.2Struts2原理
14.4Struts2的基本使用方法
14.4.1導入Struts2
14.4.2編寫JSP
14.4.3編寫並配置ActionForm
14.4.4編寫並配置Action
14.4.5測試
14.5其他問題
14.5.1程序運行流程
14.5.2Action生命周期
14.5.3在Action中訪問Web對象
14.6本章小結
14.7上機習題
第15章Web網站安全
15.1URL操作攻擊
15.1.1URL操作攻擊介紹
15.1.2解決方法
15.2Web跨站腳本攻擊
15.2.1跨站腳本攻擊的原理
15.2.2跨站腳本攻擊的危害
15.2.3防範方法
15.3SQL注入
15.3.1SQL注入的原理
15.3.2SQL注入攻擊的危害
15.3.3防範方法
15.4密碼保護與驗證
15.5本章小結
第5部分實訓
第16章編程實訓1——投票係統
16.1投票係統的案例需求
16.2投票係統分析
16.3開發過程
16.3.1準備數據
16.3.2如何齣現進度條
16.3.3編寫display.jsp
16.3.4編寫vote.jsp
16.4進一步改進
16.4.1存在的問題
16.4.2如何封裝數據庫連接
16.4.3如何重用代碼
16.5思考題: 如何防止刷票
第17章編程實訓2——投票係統改進版和成績輸入係統
17.1案例1——基於錶單的投票係統
17.1.1案例需求
17.1.2投票係統分析
17.1.3開發過程
17.1.4存在的問題
17.2案例2——成績輸入係統
17.2.1案例需求
17.2.2係統分析
17.2.3開發過程
17.2.4思考
第18章編程實訓3——在綫交流係統
18.1在綫交流係統的案例需求
18.2係統分析
18.2.1頁麵結構
18.2.2狀態保存
18.3開發過程
18.3.1準備數據
18.3.2編寫DAO和VO
18.3.3編寫loginForm.jsp和loginAction.jsp
18.3.4編寫chatForm.jsp和chatAction.jsp
18.3.5編寫msgs.jsp
18.3.6編寫logoutAction.jsp
18.4思考題——如何進行session檢查
第19章編程實訓4——購物係統
19.1購物車案例需求
19.2係統分析
19.2.1提取係統中的動作和視圖
19.2.2設計動作和視圖
19.2.3設計DAO和VO
19.2.4設計數據結構和其他模塊
19.3開發過程
19.3.1準備數據
19.3.2編寫DAO和VO
19.3.3編寫SessionListener.java
19.3.4編寫InitServlet.java和showAllBook.jsp
19.3.5編寫buyForm.jsp和AddServlet.java
19.3.6編寫showCart.jsp和RemoveServlet.java
19.4思考題——如何進行session檢查
第20章編程實訓5——AJAX應用
20.1用AJAX實現自動查詢
20.1.1需求介紹
20.1.2實現過程
20.1.3類似應用
20.2按需取數據
20.2.1需求介紹
20.2.2實現過程
20.2.3類似應用
20.3頁麵部分刷新
20.3.1需求介紹
20.3.2實現過程
20.3.3類似應用
附錄A配套素材內容與使用說明
A.1配套素材內容
A.2使用實例源代碼
A.3在MyEclipse中打開源代碼
前言/序言
Java Web開發是Java EE技術中的一個重要的組成部分,在B/S開發領域占有一席之地。本書針對Java Web開發編程進行瞭詳細的講解,以簡單的、通俗易懂的案例,循序漸進地逐步引領讀者從基礎到各個知識點進行學習。本書涵蓋瞭Java Web開發環境配置、HTML和JavaScript、JSP開發、Servlet開發、應用開發和框架等內容。每個章節後麵都有上機習題,用於對該章內容進行總結演練。另外,書末還提供課程設計供教師教學選用。
一、 本書的知識體係
學習Java Web開發最好能有Java麵嚮對象編程的基礎,本書的知識體係結構如下所示。
第1部分入門
第1章Java Web開發環境配置
第2章HTML基礎
第3章JavaScript基礎
第2部分JSP編程
第4章JSP基本語法
第5章錶單開發
第6章JSP訪問數據庫
第7章JSP內置對象(1)
第8章JSP內置對象(2)
第3部分Servlet和JavaBean開發
第9章Servlet編程
第10章JSP和JavaBean
第4部分應用開發與框架
第11章EL和JSTL
第12章AJAX入門
第13章驗證碼和文件上傳下載
第14章MVC和Struts2基本原理
第15章Web網站安全
第5部分實訓
第16章編程實訓1——投票係統
第17章編程實訓2——投票係統改進版和成績輸入係統
第18章編程實訓3——在綫交流係統
第19章編程實訓4——購物係統
第20章編程實訓5——AJAX應用
二、 章節內容介紹
全書共分為五部分,第1部分為入門部分,包括3章。
第1章講解Java Web開發的軟件安裝和環境配置,並開發第一個Web程序; 第2章講解HTML的基礎知識; 第3章講解JavaScript的基礎知識。
第2部分為JSP編程,共分為5章講解。
第4章介紹JSP基本語法,引導讀者開發簡單的JSP程序; 第5章介紹JSP中的錶單開發; 第6章針對網頁的應用要求,講解在JSP中訪問數據庫的方法; 第7章和第8章講解JSP的內置對象。
第3部分為Servlet和JavaBean開發,共分為兩章講解。
第9章介紹Servlet基礎編程,主要包括Servlet基礎API、Servlet生命周期等; 第10章介紹JavaBean在Web開發中的應用。
第4部分為應用開發與框架,主要針對Java Web開發過程中的重要問題進行闡述,共分為7章講解。
第11章介紹錶達式語言及其和JSTL的配閤使用; 第12章介紹Web 2.0的代錶技術: AJAX開發; 第13章介紹Web開發過程中的兩個重要技術: 驗證碼和文件上傳下載; 第14章介紹目前比較流行的一個Web開發框架: Struts2; 第15章介紹Web網站的安全性。
第5部分為實訓,主要針對Java Web常見技術設計瞭5個實訓題目,供教師教學時選用。
本書為學校教學量身定做,供高校Java Web開發相關課程使用,也可供有Java SE知識基礎但沒有Java Web開發基礎的程序員作為入門用書,更可以供社會Java技術培訓班作為教材使用,對於缺乏項目實戰經驗的程序員來說可用於快速積纍項目開發經驗。
本書提供瞭所有實例的源代碼,供讀者學習參考使用,所有程序均經過瞭作者精心的調試,並按照章節順序打包。
由於時間倉促和作者的水平有限,書中不妥之處在所難免,敬請讀者批評指正。
有關本書的意見反饋和谘詢,讀者可在清華大學齣版社網站相關版塊中與作者進行交流。
郭剋華
2016年7月
精通Java Web開發,構建現代動態網站 本書是一本麵嚮Java Web程序設計的進階教程,旨在幫助讀者深入理解Java Web開發的核心技術與實踐,掌握構建高質量、高性能、可擴展的現代動態網站的必備知識與技能。本書內容涵蓋瞭從基礎的Servlet/JSP開發到流行的Spring MVC框架的應用,再到數據庫集成、RESTful API設計以及前端交互等關鍵領域。通過本書的學習,讀者將能夠獨立完成復雜的Java Web應用程序的設計與開發。 一、 Java Web開發基礎:Servlet與JSP的強大基石 本書將首先為讀者打下堅實的Java Web開發基礎,重點講解Java EE(Enterprise Edition)的核心組件——Servlet和JSP(JavaServer Pages)。 Servlet:服務器端Java的靈魂 Servlet生命周期深入解析: 詳細闡述Servlet的創建、初始化、服務處理和銷毀過程,幫助讀者理解Servlet容器(如Tomcat)的工作機製,以及如何在關鍵生命周期方法中編寫高效的代碼。 請求與響應處理: 深入講解`HttpServletRequest`和`HttpServletResponse`對象的用法,包括獲取請求參數、設置響應頭、發送響應內容(HTML、JSON、XML等)、處理Cookie和Session等。讀者將學會如何接收和處理客戶端的各種請求,並生成定製化的響應。 Servlet與Servlet容器交互: 剖析Servlet與Tomcat等Web服務器之間的通信原理,理解`web.xml`(或Servlet 3.0+的注解配置)的配置方式,包括Servlet的注冊、URL映射、初始化參數設置等。 請求轉發與重定嚮: 區分並詳細講解`RequestDispatcher`的`forward()`和`include()`方法,以及`HttpServletResponse.sendRedirect()`方法,讓讀者掌握在不同場景下如何將請求轉移到其他資源或引導用戶跳轉到新的URL。 Filter(過濾器)與Listener(監聽器): 介紹Filter在請求處理鏈中的作用,例如日誌記錄、身份驗證、字符編碼設置等。同時,講解Listener在Web應用生命周期事件(如Servlet上下文創建、Session創建/銷毀)中的應用,使讀者能夠對Web應用的整體流程有更精細的控製。 JSP:簡化Web頁麵開發的強大工具 JSP語法詳解: 講解JSP的四大內置對象(`request`, `response`, `session`, `application`)、九大內置組件(`pageContext`, `config`, `page`, `out`, `exception`, `translator`, `session`, `request`, `response`),以及JSP動作標簽、JSP錶達式、JSP腳本元素等。 JSP與Servlet的結閤: 演示如何通過JSP調用Servlet的業務邏輯,以及Servlet如何將數據傳遞給JSP進行頁麵展示,實現MVC(Model-View-Controller)模式的初步實踐。 JSTL(JSP Standard Tag Library): 詳細介紹JSTL標簽庫,包括核心標簽庫(`c:if`, `c:forEach`, `c:out`等)、格式化標簽庫、SQL標簽庫(雖不推薦直接使用,但理解其原理有助於學習更底層的數據庫訪問)、XML標簽庫。通過JSTL,讀者可以編寫更簡潔、可讀性更強的JSP頁麵,避免大量的Java代碼混入HTML。 EL(Expression Language): 講解EL錶達式,它是一種簡化JSP頁麵訪問JavaBean屬性、集閤元素以及通過`pageContext`訪問作用域數據的簡便方式,進一步提升JSP頁麵的開發效率。 JSP頁麵開發最佳實踐: 強調將業務邏輯從JSP中剝離,使其專注於視圖展示,遵循MVC模式,提升代碼的可維護性和可復用性。 二、 Spring MVC框架:現代化Java Web開發的利器 本書將深入剖析Spring MVC框架,它是目前Java Web開發中最流行、最強大的MVC框架之一,能夠極大地簡化Web應用的開發流程,提供強大的功能支持。 Spring MVC核心概念: 詳細解釋Spring MVC的工作原理,包括`DispatcherServlet`(前端控製器)、`HandlerMapping`(處理器映射器)、`Controller`(處理器)、`ModelAndView`(模型與視圖)、`ViewResolver`(視圖解析器)等核心組件的作用。 Controller開發: 注解驅動開發: 掌握使用`@Controller`, `@RequestMapping`, `@RequestParam`, `@PathVariable`, `@RequestBody`, `@ResponseBody`等注解來定義Controller和處理HTTP請求,實現RESTful風格的API設計。 請求參數綁定: 學習如何自動將HTTP請求參數綁定到Controller方法的參數上,支持基本類型、JavaBean對象、集閤等。 模型數據傳遞: 講解如何使用`Model`、`ModelAndView`等方式將數據傳遞給視圖進行展示。 視圖選擇與渲染: 配置`ViewResolver`,實現視圖的自動查找與實例化,支持多種視圖技術(如JSP、Thymeleaf、Freemarker等)。 數據校驗與格式化: Bean Validation API(JSR 303/380): 介紹Hibernate Validator等實現,如何在JavaBean上使用注解(如`@NotNull`, `@Size`, `@Email`)定義校驗規則,並在Controller層進行校驗。 數據格式化: 學習如何使用`@DateTimeFormat`, `@NumberFormat`等注解對請求參數和模型數據進行日期、數字等格式的轉換。 RESTful API設計與實現: 理解RESTful原則: 講解REST(Representational State Transfer)的核心原則,包括資源、URI、HTTP方法(GET, POST, PUT, DELETE)、狀態碼等。 Spring MVC實現RESTful服務: 示範如何使用Spring MVC構建符閤RESTful風格的Web服務,支持JSON、XML等數據格式的交互。 Spring Boot集成: 簡要介紹Spring Boot如何簡化Spring MVC應用的配置,通過約定大於配置的理念,極大提升開發效率,實現快速原型開發和生産部署。 三、 數據庫集成:持久化數據存儲與管理 任何Web應用都離不開數據的持久化,本書將詳細講解如何將Java Web應用與數據庫集成。 JDBC(Java Database Connectivity): 基礎API: 講解JDBC的核心接口和類,如`Connection`, `Statement`, `PreparedStatement`, `ResultSet`,以及數據庫連接池(如Druid、HikariCP)的配置和使用,提高數據庫訪問效率,避免頻繁創建和銷毀連接。 SQL注入防範: 強調使用`PreparedStatement`的重要性,有效防止SQL注入攻擊。 事務管理: 講解如何使用JDBC實現事務的提交(commit)和迴滾(rollback),確保數據的一緻性。 MyBatis框架: ORM(Object-Relational Mapping)思想: 介紹ORM的概念,以及MyBatis如何簡化Java對象與數據庫錶的映射。 XML映射文件: 學習如何編寫`.xml`映射文件,定義SQL語句,並將SQL語句與Java接口方法關聯起來。 注解開發: 掌握使用MyBatis注解(如`@Select`, `@Insert`, `@Update`, `@Delete`)直接在Java接口上編寫SQL。 動態SQL: 講解MyBatis強大的動態SQL能力,如`if`, `choose`, `when`, `otherwise`, `foreach`等標簽,實現靈活的SQL查詢。 緩存機製: 理解MyBatis的一級緩存和二級緩存,以及如何配置和使用緩存來提升查詢性能。 Spring Data JPA: JPA(Java Persistence API)規範: 介紹JPA作為Java EE的ORM規範,以及Spring Data JPA如何簡化JPA的使用。 實體(Entity)映射: 學習如何使用`@Entity`, `@Table`, `@Column`, `@Id`等注解將Java類映射為數據庫錶。 Repository接口: 掌握Spring Data JPA提供的`CrudRepository`, `JpaRepository`等接口,通過簡單的繼承即可獲得基本的CRUD(Create, Read, Update, Delete)操作能力。 自定義查詢: 學習如何使用方法命名查詢(Method-based Query Creation)和`@Query`注解編寫復雜的查詢語句。 事務管理: 講解Spring提供的聲明式事務管理(`@Transactional`注解)與JPA的結閤使用。 四、 前端交互與API設計:構建用戶友好的Web界麵 一個優秀的Web應用不僅需要強大的後端邏輯,還需要良好用戶界麵和流暢的交互體驗。 AJAX(Asynchronous JavaScript and XML): 核心概念: 講解AJAX的原理,以及如何在不刷新整個頁麵的情況下與服務器進行異步通信。 JavaScript實現: 使用原生的`XMLHttpRequest`對象或`fetch` API實現AJAX請求。 jQuery AJAX: 介紹jQuery提供的便捷的AJAX封裝方法(`$.ajax`, `$.get`, `$.post`),簡化AJAX開發。 JSON數據格式: 學習如何處理JSON格式的數據,這是前後端數據交換最常用的格式。 RESTful API實戰: API設計原則: 結閤Spring MVC,進一步深化RESTful API的設計思想,包括URI設計、HTTP方法選擇、請求與響應體格式。 API文檔: 簡要介紹Swagger/OpenAPI等工具,用於生成API文檔,方便前後端協作和API的測試。 用戶認證與授權: Session與Cookie: 深入理解Session和Cookie在用戶狀態管理中的作用。 Spring Security(簡要介紹): 介紹Spring Security作為Java領域最強大的安全框架,提供瞭全麵的身份驗證和訪問控製功能,用於保護Web應用免受未經授權的訪問。 五、 實用技術與最佳實踐:提升開發效率與代碼質量 本書還將涵蓋一些實用的技術和重要的開發實踐,幫助讀者構建健壯、高效、易於維護的Java Web應用程序。 Maven/Gradle構建工具: 介紹Maven和Gradle作為項目管理和構建工具的重要性,學習如何管理項目依賴、執行構建任務(編譯、測試、打包)。 日誌管理: 講解SLF4J(Simple Logging Facade for Java)和Logback等日誌框架的使用,以及如何配置日誌級彆和輸齣目的地,便於調試和監控。 異常處理: 學習如何設計健壯的異常處理機製,捕獲、記錄和處理程序中的異常,提供友好的錯誤提示給用戶。 單元測試與集成測試: 強調測試的重要性,介紹JUnit等框架,以及如何在Spring MVC環境下編寫單元測試和集成測試,保證代碼的正確性。 部署與上綫(簡要概述): 簡要介紹如何將Java Web應用打包成WAR文件,並部署到Tomcat等Web服務器上。 通過對以上各個方麵的深入學習和實踐,讀者將能夠掌握現代Java Web開發的完整流程,從零開始構建功能完善、性能優越的動態網站與Web服務。本書將引導讀者循序漸進,理論結閤實踐,最終成為一名齣色的Java Web開發者。