黨的二十大報告指出: 教育、科技、人才是全面建設社會主義現(xiàn)代化國家的基礎性、戰(zhàn)略性支撐。必須堅持科技是第一生產(chǎn)力、人才是第一資源、創(chuàng)新是第一動力,深入實施科教興國戰(zhàn)略、人才強國戰(zhàn)略、創(chuàng)新驅(qū)動發(fā)展戰(zhàn)略,開辟發(fā)展新領域新賽道,不斷塑造發(fā)展新動能新優(yōu)勢。高等教育與經(jīng)濟社會發(fā)展緊密相連,對促進就業(yè)創(chuàng)業(yè)、助力經(jīng)濟社會發(fā)展、增進人民福祉具有重要意義。
Java技術(shù)為Web領域的發(fā)展注入了強勁的動力。Java Web應用開發(fā)基于Jakarta EE技術(shù)平臺,Jakarta EE是企業(yè)級應用的解決方案。Java Web是使用Java技術(shù)解決Web相關(guān)領域開發(fā)問題的技術(shù)棧,包括Web服務器端和Web客戶端兩部分。Java在服務器端的應用非常豐富,如Servlet、JSP和第三方框架等,這些技術(shù)屬于Jakarta EE技術(shù)的一部分。
基于Java的Web應用開發(fā)技術(shù)目前已成為Web開發(fā)的主流技術(shù)。本書以Servlet 6.0和JSP 4.0規(guī)范為基礎,詳細介紹Java Web應用的相關(guān)技術(shù)及SSM框架技術(shù)。
本書內(nèi)容
本書分為兩部分: 第一部分是Java Web核心技術(shù)基礎,內(nèi)容包括第1~8章; 第二部分介紹Java Web框架技術(shù),即目前流行的SSM(Spring Spring MVC MyBatis)框架的基礎知識和三大框架的整合開發(fā),內(nèi)容包括第9~17章。
第一部分: Java Web核心技術(shù)基礎
第1章介紹Java Web應用開發(fā)的基礎知識,包括HTTP和HTML、Tomcat服務器、IntelliJ IDEA的下載和安裝、Servlet和JSP簡介。
第2章介紹Servlet核心技術(shù),包括常用的Servlet API、Servlet生命周期、處理請求、發(fā)送響應、Web應用部署描述文件、ServletConfig對象與ServletContext對象等。
第3章介紹JSP技術(shù)基礎,包括JSP頁面的各種語法元素、JSP頁面的生命周期、JSP指令、JSP隱含變量、作用域?qū)ο、JavaBean及MVC設計模式等。
第4章介紹表達式語言(EL)和標準標簽庫(JSTL)的使用。
第5章介紹Web數(shù)據(jù)庫編程,包括數(shù)據(jù)庫的訪問步驟、使用數(shù)據(jù)源、DAO設計模式等。
第6章介紹會話跟蹤技術(shù),包括HttpSession、Cookie、URL重寫與隱藏表單域。
第7章介紹Web過濾器和Web監(jiān)聽器。
第8章介紹Java Web應用開發(fā)中的安全性問題和安全驗證方法等。
第二部分: SSM框架技術(shù)
第9章介紹Spring的入門知識,包括容器的概念、依賴注入、bean的配置與實例化等。
第10章介紹Spring MVC應用的開發(fā)步驟、控制器與請求處理方法,以及請求參數(shù)的接收方法和常用注解的使用。
第11章介紹Spring MVC的數(shù)據(jù)綁定和常用表單標簽庫的使用。
第12章介紹Spring MVC的幾個核心應用,包括類型轉(zhuǎn)換與格式化、數(shù)據(jù)驗證、攔截器和國際化處理。
第13章介紹文件的上傳與下載,這是Java Web開發(fā)常見的應用。
第14章介紹MyBatis的工作原理、簡單的MyBatis應用、核心對象和日志管理。
第15章介紹MyBatis配置文件和映射文件,重點介紹映射文件的元素和關(guān)聯(lián)映射,最后介紹動態(tài)SQL的構(gòu)建。
第16章介紹映射器注解的使用和動態(tài)構(gòu)建SQL語句,這是構(gòu)建SQL的首選方法。
第17章介紹SSM框架的整合與應用實例,首先介紹整合環(huán)境的搭建,然后通過簡單案例介紹基于SSM的項目的開發(fā)過程。
附錄A簡要介紹JUnit 5,這是一款非常流行的單元測試框架。
學習本書,讀者能夠掌握Java Web開發(fā)的基礎知識和基于SSM框架開發(fā)的基本技能,從而具備獨立開發(fā)中小型Web應用的能力。
本書特點
本書采用新版的Tomcat 11服務器和流行的IntelliJ IDEA開發(fā)工具; 講授內(nèi)容涵蓋Jakarta EE核心技術(shù)和SSM框架的整合; 通過大量精選示例和案例講解知識點和開發(fā)方法。
軟件版本
Java開發(fā)工具使用JDK 21。
Web服務器使用Tomcat 11.0.0。
集成開發(fā)環(huán)境使用IntelliJ IDEA 2023.1。
數(shù)據(jù)庫使用MySQL 8.0.32。
瀏覽器使用64位的Microsoft Edge。
教學資源
為便于教學,本書提供了豐富的配套資源,包括教學大綱、教學課件、電子教案、程序源碼、數(shù)學進度表、在線作業(yè)、習題答案和500分鐘的微課視頻。
資源下載提示
課件等資源: 掃描封底的圖書資源二維碼,在公眾號書圈下載。
素材(源碼)等資源: 掃描目錄上方的二維碼下載。
在線作業(yè): 掃描封底的作業(yè)系統(tǒng)二維碼,再掃描自測題二維碼在線做題及查看答案。
視頻等資源: 掃描封底的文泉云盤防盜碼,再掃描書中相應章節(jié)中的視頻講解二維碼,可以在線學習。
致謝
本書由沈澤剛編著,參加本書編寫的老師還有張野、董研、侯寶明、胡斌、任敏賢和王曉軒等,沈澤剛和張野錄制了微課教學視頻。
本書的出版得到多方面的支持,在這里特別感謝清華大學出版社魏江江分社長和編輯老師的辛勤工作,感謝使用本書的老師提出的寶貴的修改建議。由于編者水平有限,書中難免存在不妥和疏漏之處,懇請廣大讀者和同行批評指正。
編者
2024年8月
掃一掃
源碼下載
第一部分Java Web核心技術(shù)基礎
第1章Java Web起步入門
1.1Internet與萬維網(wǎng)
1.1.1主機和IP地址
1.1.2萬維網(wǎng)
1.1.3瀏覽器和服務器
1.1.4HTTP
1.1.5URL與URI
1.2Web前端技術(shù)
1.2.1HTML
1.2.2CSS
1.2.3JavaScript
1.3Web后端技術(shù)
1.3.1服務器端編程技術(shù)
1.3.2靜態(tài)與動態(tài)Web資源
1.3.3后端數(shù)據(jù)庫技術(shù)
1.3.4全棧與全棧開發(fā)員
1.4Tomcat服務器
1.4.1Tomcat的下載與安裝
1.4.2Tomcat的目錄結(jié)構(gòu)
1.4.3Tomcat的啟動和停止
1.4.4Web應用程序的目錄結(jié)構(gòu)
1.4.5Tomcat的配置文件
1.5IntelliJ IDEA開發(fā)環(huán)境
1.5.1下載和安裝IntelliJ IDEA
1.5.2在IDEA中創(chuàng)建Web項目
1.5.3配置Tomcat服務器
1.5.4在Tomcat中部署項目
1.5.5啟動Tomcat并訪問應用
1.6Maven入門
1.6.1Maven的項目結(jié)構(gòu)
1.6.2Maven的依賴管理
1.6.3在IntelliJ IDEA中使用Maven
1.7Servlet和JSP簡介
1.7.1Java Servlet
1.7.2JSP頁面
本章小結(jié)
練習與實踐
第2章Java Servlet技術(shù)
2.1Servlet概述
2.1.1Servlet API
2.1.2Servlet接口
2.1.3HttpServlet類
2.1.4HttpServletRequest接口和HttpServletResponse接口
2.2Servlet生命周期
2.2.1加載和實例化Servlet
2.2.2初始化Servlet
2.2.3為客戶提供服務
2.2.4銷毀和卸載Servlet
2.3處理請求
2.3.1HTTP請求的結(jié)構(gòu)
2.3.2發(fā)送HTTP請求
2.3.3處理HTTP請求
2.3.4請求參數(shù)的傳遞與獲取
2.3.5請求的轉(zhuǎn)發(fā)
2.3.6用請求對象存儲數(shù)據(jù)
2.3.7檢索客戶端信息
2.3.8檢索請求頭信息
2.4發(fā)送響應
2.4.1HTTP響應的結(jié)構(gòu)
2.4.2輸出流與內(nèi)容類型
2.4.3響應的重定向
2.4.4設置響應頭
2.4.5發(fā)送狀態(tài)碼
2.5案例學習: 表單數(shù)據(jù)處理
2.5.1常用表單控件元素
2.5.2表單數(shù)據(jù)處理
2.6部署描述文件
2.6.1servlet元素
2.6.2servletmapping元素
2.6.3welcomefilelist元素
2.7@WebServlet注解
2.8ServletConfig對象
2.9HttpSession對象
2.10ServletContext對象
2.10.1得到ServletContext引用
2.10.2獲取應用程序的初始化參數(shù)
2.10.3用ServletContext存儲數(shù)據(jù)
2.10.4用ServletContext獲取RequestDispatcher
2.10.5用ServletContext對象獲取資源
2.10.6記錄日志
本章小結(jié)
練習與實踐
第3章JSP技術(shù)基礎
3.1JSP頁面元素
3.1.1JSP指令簡介
3.1.2表達式語言
3.1.3JSP動作
3.1.4JSP腳本元素
3.1.5JSP注釋
3.2JSP生命周期
3.2.1JSP頁面的實現(xiàn)類
3.2.2JSP執(zhí)行過程
3.3JSP指令
3.3.1page指令
3.3.2include指令
3.3.3taglib指令
3.4JSP隱含變量
3.4.1request與response變量
3.4.2out變量
3.4.3application變量
3.4.4session變量
3.4.5exception變量
3.4.6config變量
3.4.7pageContext變量
3.5JSP動作
3.5.1jsp:include動作
3.5.2jsp:forward動作
3.6案例學習: 使用包含設計頁面布局
3.7錯誤處理
3.7.1聲明式錯誤處理
3.7.2使用Servlet和JSP頁面處理錯誤
3.8作用域?qū)ο?/p>
3.8.1應用作用域
3.8.2會話作用域
3.8.3請求作用域
3.8.4頁面作用域
3.9JavaBean
3.9.1JavaBean規(guī)范
3.9.2使用Lombok庫
3.9.3jsp:useBean動作
3.9.4jsp:setProperty動作
3.9.5jsp:getProperty動作
3.10MVC設計模式
3.10.1模型1介紹
3.10.2模型2介紹
3.10.3實現(xiàn)MVC設計模式的一般步驟
本章小結(jié)
練習與實踐
第4章EL與JSTL
4.1理解表達式語言
4.1.1表達式語言的語法
4.1.2表達式語言的功能
4.1.3屬性訪問運算符和集合元素訪問運算符
4.2使用EL訪問數(shù)據(jù)
4.2.1訪問作用域變量
4.2.2訪問JavaBean屬性
4.2.3訪問集合元素
4.2.4訪問靜態(tài)方法和靜態(tài)字段
4.3EL隱含變量
4.3.1pageContext變量
4.3.2pageScope、requestScope、sessionScope和applicationScope變量
4.3.3initParam變量
4.3.4param和paramValues變量
4.3.5header和headerValues變量
4.3.6cookie變量
4.4EL運算符
4.4.1算術(shù)運算符
4.4.2關(guān)系運算符與邏輯運算符
4.4.3條件運算符
4.4.4empty運算符
4.5JSTL
4.5.1JSTL概述
4.5.2通用目的標簽
4.5.3條件控制標簽
4.5.4循環(huán)控制標簽
4.5.5與URL相關(guān)的標簽
本章小結(jié)
練習與實踐
第5章Web數(shù)據(jù)庫編程
5.1MySQL數(shù)據(jù)庫
5.1.1MySQL的下載與安裝
5.1.2使用MySQL命令行工具
5.1.3MySQL Workbench
5.2數(shù)據(jù)庫的訪問步驟
5.2.1加載驅(qū)動程序
5.2.2建立連接對象
5.2.3創(chuàng)建語句對象
5.2.4執(zhí)行SQL語句并處理結(jié)果
5.2.5關(guān)閉有關(guān)對象
5.3案例學習: 使用Servlet訪問數(shù)據(jù)庫
5.4使用數(shù)據(jù)源
5.4.1數(shù)據(jù)源概述
5.4.2配置JNDI數(shù)據(jù)源
5.4.3案例學習: 使用JNDI數(shù)據(jù)源
5.5DAO設計模式
5.5.1設計實體類
5.5.2設計DAO接口
5.5.3使用DAO對象
本章小結(jié)
練習與實踐
第6章會話跟蹤技術(shù)
6.1會話管理
6.1.1理解狀態(tài)與會話
6.1.2會話管理機制
6.1.3HttpSession API
6.1.4使用HttpSession對象
6.1.5會話超時與失效
6.2案例學習: 用會話存儲購物車
6.2.1購物車設計
6.2.2顯示購物車
6.3Cookie及其應用
6.3.1Cookie API
6.3.2向客戶端發(fā)送Cookie
6.3.3從客戶端讀取Cookie
6.3.4Cookie的安全問題
6.4案例學習: 用Cookie實現(xiàn)自動登錄
6.5URL重寫與隱藏表單域
6.5.1URL重寫
6.5.2隱藏表單域
本章小結(jié)
練習與實踐
第7章過濾器與監(jiān)聽器
7.1Web過濾器
7.1.1什么是過濾器
7.1.2過濾器API
7.1.3案例學習: 簡單的編碼過濾器
7.1.4@WebFilter注解
7.1.5在web.xml中配置過濾器
7.2Web監(jiān)聽器
7.2.1監(jiān)聽ServletContext事件
7.2.2監(jiān)聽請求事件
7.2.3監(jiān)聽會話事件
7.2.4事件監(jiān)聽器的注冊
7.3Servlet的多線程問題
本章小結(jié)
練習與實踐
第8章Web安全性入門
8.1Web安全性概述
8.1.1Web安全性措施
8.1.2驗證的類型
8.1.3基本驗證的過程
8.1.4聲明式安全與編程式安全
8.2安全域模型
8.2.1Tomcat安全域
8.2.2定義角色與用戶
8.3定義安全約束
8.3.1安全約束的配置
8.3.2案例學習: 基本安全驗證
8.4編程式安全的實現(xiàn)
8.4.1Servlet的安全API
8.4.2安全注解類型
本章小結(jié)
練習與實踐
第二部分SSM框架技術(shù)
第9章Spring快速入門
9.1Spring框架簡介
9.1.1Spring框架模塊
9.1.2添加Spring依賴模塊
9.2Spring容器和依賴注入
9.2.1Spring容器
9.2.2依賴注入
9.2.3Spring配置文件
9.2.4一個簡單的Spring程序
9.2.5依賴注入的實現(xiàn)方式
9.3bean的配置與實例化
9.3.1構(gòu)造方法實例化
9.3.2向構(gòu)造方法傳遞參數(shù)
9.3.3靜態(tài)工廠實例化
9.3.4實例工廠實例化
9.3.5銷毀方法的使用
9.4bean的裝配方式
9.4.1基于XML的裝配
9.4.2基于Java注解的裝配
本章小結(jié)
練習與實踐
第10章Spring MVC入門
10.1Spring MVC體系結(jié)構(gòu)
10.1.1Spring MVC處理流程
10.1.2DispatcherServlet類
10.2案例學習: 簡單的Spring MVC應用程序
10.2.1創(chuàng)建Jakarta EE項目
10.2.2在web.xml中配置DispatcherServlet
10.2.3創(chuàng)建Spring MVC配置文件
10.2.4創(chuàng)建控制器
10.2.5創(chuàng)建視圖
10.2.6運行應用程序
10.3控制器與請求處理方法
10.3.1控制器類和@Controller注解
10.3.2@RequestMapping注解類型
10.3.3編寫請求處理方法
10.3.4模型
10.3.5視圖解析器
10.4請求參數(shù)的接收方法
10.4.1用HttpServletRequest接收請求參數(shù)
10.4.2用簡單數(shù)據(jù)類型接收請求參數(shù)
10.4.3用POJO對象接收請求參數(shù)
10.4.4用@PathVariable接收URL中的請求參數(shù)
10.5轉(zhuǎn)發(fā)、重定向與Flash屬性
10.6用@Autowired和@Service進行依賴注入
10.7@ModelAttribute注解
本章小結(jié)
練習與實踐
第11章數(shù)據(jù)綁定與表單標簽庫
11.1數(shù)據(jù)綁定
11.2表單標簽庫
11.2.1form標簽
11.2.2input標簽
11.2.3label標簽
11.2.4hidden標簽
11.2.5password標簽
11.2.6textarea標簽
11.2.7checkbox標簽
11.2.8checkboxes標簽
11.2.9radiobutton標簽
11.2.10radiobuttons標簽
11.2.11select標簽
11.2.12option標簽
11.2.13options標簽
11.2.14errors標簽
11.3案例學習: 表單標簽的應用
11.3.1設計領域類
11.3.2控制器類
11.3.3視圖
11.3.4測試應用程序
本章小結(jié)
練習與實踐
第12章Spring MVC核心應用
12.1類型轉(zhuǎn)換與格式化
12.1.1類型轉(zhuǎn)換的意義
12.1.2轉(zhuǎn)換器Converter
12.1.3格式化器Formatter
12.2數(shù)據(jù)驗證
12.2.1數(shù)據(jù)驗證概述
12.2.2JSR 380驗證
12.2.3案例學習: 使用JSR 380的驗證
12.2.4Spring驗證框架
12.2.5ValidationUtils類
12.2.6案例學習: 使用Spring Validator的驗證
12.3Spring MVC攔截器
12.3.1攔截器介紹
12.3.2攔截器的配置
12.3.3單個攔截器的執(zhí)行流程
12.3.4多個攔截器的執(zhí)行流程
12.3.5案例學習: 使用攔截器實現(xiàn)用戶登錄驗證
12.4國際化
12.4.1國際化概述
12.4.2資源文件
12.4.3加載資源文件
12.4.4設置Spring MVC的語言區(qū)域
12.4.5使用message標簽
12.4.6案例學習: JSP頁面的國際化
本章小結(jié)
練習與實踐
第13章文件的上傳與下載
13.1用Servlet API上傳文件
13.1.1客戶端編程
13.1.2使用Part對象實現(xiàn)文件的上傳
13.2用Commons FileUpload上傳文件
13.2.1MultipartFile接口
13.2.2定義領域類
13.2.3控制器
13.2.4配置文件
13.2.5JSP頁面
13.2.6應用程序的測試
13.3文件的下載
13.3.1通過鏈接下載文件
13.3.2通過編程方式下載文件
本章小結(jié)
練習與實踐
第14章MyBatis快速入門
14.1MyBatis概述
14.1.1MyBatis的使用
14.1.2MyBatis的工作原理
14.2案例學習: 簡單的MyBatis應用
14.2.1創(chuàng)建項目與環(huán)境
14.2.2創(chuàng)建配置文件
14.2.3定義POJO類
14.2.4定義映射文件
14.2.5Mapper代理接口
14.2.6編寫測試類
14.2.7MyBatisUtil工具類
14.3MyBatis核心對象
14.3.1SqlSessionFactory
14.3.2SqlSession
14.4日志管理
本章小結(jié)
練習與實踐
第15章配置文件和映射文件
15.1配置文件
15.1.1environments元素
15.1.2properties元素
15.1.3settings元素
15.1.4typeAliases元素
15.1.5typeHandlers元素
15.1.6objectFactory元素
15.1.7databaseIdProvider元素
15.1.8mappers元素
15.2映射文件
15.2.1select元素
15.2.2參數(shù)的傳遞
15.2.3insert元素
15.2.4update元素
15.2.5delete元素
15.2.6resultMap元素
15.2.7sql元素
15.2.8cache元素
15.3MyBatis關(guān)聯(lián)映射
15.3.1一對一關(guān)聯(lián)映射
15.3.2一對多關(guān)聯(lián)映射
15.4動態(tài)SQL
15.4.1if元素
15.4.2choose、when和otherwise元素
15.4.3where和trim元素
15.4.4set元素
15.4.5foreach元素
15.4.6bind元素
本章小結(jié)
練習與實踐
第16章映射器注解
16.1在Mapper接口上使用注解
16.1.1@Insert插入語句
16.1.2@Update更新語句
16.1.3@Delete刪除語句
16.1.4@Select查詢語句
16.2結(jié)果與關(guān)聯(lián)映射
16.2.1@ResultMap結(jié)果映射
16.2.2@One一對一映射
16.2.3@Many一對多映射
16.3動態(tài)構(gòu)建SQL
16.3.1@SelectProvider動態(tài)查詢
16.3.2@InsertProvider動態(tài)插入
16.3.3@DeleteProvider動態(tài)刪除
16.3.4@UpdateProvider動態(tài)更新
本章小結(jié)
練習與實踐
第17章SSM框架的整合與應用實例
17.1SSM框架的分層結(jié)構(gòu)
17.2整合環(huán)境的搭建
17.2.1在pom.xml中添加依賴項
17.2.2基于MapperScannerConfigurer的整合
17.2.3編寫配置文件
17.2.4開發(fā)測試應用程序
17.3基于SSM的會員管理
17.3.1數(shù)據(jù)庫與數(shù)據(jù)表
17.3.2POJO類的設計
17.3.3數(shù)據(jù)訪問層的設計
17.3.4業(yè)務邏輯層的設計
17.3.5控制器的開發(fā)
17.3.6視圖的實現(xiàn)
本章小結(jié)
練習與實踐
附錄AJUnit框架
A.1測試類型概述
A.2在項目中添加JUnit框架
A.3一個簡單的例子
A.4測試JDBC應用程序
參考文獻