图书目录

第1部分入门

第1章Java Web入门

第2部分JSP基础开发

第2章JSP基本语法

第3章JSP访问数据库

第4章URL传值

第5章JSP指令和动作

第6章实践指导1

第7章基本表单开发

第8章同名表单元素和隐藏表单元素

第9章JSP和JavaBean

第10章实践指导2

第3部分JSP内置对象

第11章JSP内置对象(上)

第12章用Cookie保存登录信息

第13章JSP内置对象(下)

第14章实践指导3

第4部分Servlet开发

第15章Servlet基础编程

第16章Servlet高级编程

第17章过滤器和监听器

第18章实践指导4

第5部分标签应用与开发

第19章EL

第20章JSTL

第21章自定义标签

第6部分AJAX开发

第22章利用AJAX改善客户体验

第23章利用AJAX处理XML文档

第24章实践指导5

第7部分常用工具

第25章查询分页

第26章文件上传下载

第27章验证码开发

第28章用JFreeChart开发图片报表

第29章用iText开发PDF报表

第30章JavaMail

第31章网站安全

第32章log4j和ant

第8部分综合案例

第33章GoodEdu教务管理系统项目文档

2. 章节内容介绍

全书共分为8部分。

第1部分为入门部分,包括1章。

第1章为Java Web入门,介绍了B/S结构的主要特点,然后介绍服务器的安装、IDE的安装和配置。最后介绍建立简单的Web项目,并介绍Web项目的结构。

第2部分为JSP基础开发,包括9章。

第2章为JSP基本语法,首先学习编写JSP页面、使用注释,然后学习编写表达式、程序段和声明的方法。

第3章为JSP访问数据库,基于JDBC(Java Data Base Connectivity)技术,讲解对数据库的增删改查,然后讲解数据库操作过程中应该注意的一些问题。

第4章为URL传值,首先介绍URL传值的使用范围,然后介绍几种常用的URL传值方法,最后介绍URL传值中一些常见的问题。

第5章为JSP指令和动作,学习常见的指令,掌握page指令的各种属性及其应用、利用include属性导入外部页面,以及通过include动作导入外部页面,并掌握两种include的区别,最后掌握利用forward进行跳转。

第6章为实践指导1,利用一个投票系统,对前面内容进行复习。

第7章为基本表单开发,学习JSP编程中的表单开发,首先对表单的基本结构和基本属性进行学习,然后学习表单元素与服务器的交互。

第8章为同名表单元素和隐藏表单元素,学习同名和隐藏表单元素开发,首先对同名和隐藏表单元素的基本作用进行学习,然后学习同名表单与隐藏元素的使用方法。

第9章为JSP和JavaBean,学习JavaBean概念和编写,特别对属性的编写重点进行强调,然后学习JSP中使用JavaBean,以及JavaBean的范围,最后学习DAO和VO的应用。

第10章为实践指导2,利用两个案例对前面内容进行复习。

第3部分为JSP内置对象,包括4章。

第11章为JSP内置对象(上),学习JSP中的内置对象out、request和response。

第12章为用Cookie保存登录信息,首先学习Cookie的用途,然后学习Cookie的读写,最后学习Cookie的检查与安全。

第13章为JSP内置对象(下),首先学习session,利用session解决购物车问题,并学习session的其他作用; 然后学习application对象; 还对JSP中的其他内置对象exception、page、config、pageContext进行学习。

第14章为实践指导3,利用一个案例对前面内容进行复习。

第4部分为Servlet开发,包括4章。

第15章为Servlet基础编程,介绍Servlet的作用、如何创建一个Servlet、Servlet的生命周期、Servlet中如何使用JSP页面中常用的内置对象。

第16章为Servlet高级编程,主要学习Web容器中Servlet经常使用的高级功能。主要包括欢迎页面的设定、在Servlet内实现跳转、在Servlet中实现包含、初始化参数的设定、异常的集中处理等,并学习一种常见的开发模式——MVC模式。

第17章为过滤器和监听器,介绍过滤器、监听器的原理、编写方法和配置过程。

第18章为实践指导4,利用一个案例对前面的内容进行复习。

第5部分为标签应用与开发,包括3章。

第19章为EL,学习EL在JSP中常用的功能,包括EL中的基本语法、EL基本运算符、EL中的数据访问和内置对象。

第20章为JSTL,学习核心标签库、XML标签库、国际化标签库、数据库标签库和函数标签库中各个重要标签的应用。

第21章为自定义标签,学习自定义标签的开发、配置、使用,了解几种不同的自定义标签。

第6部分为AJAX开发,包括3章。

第22章为利用AJAX改善客户体验,首先通过一些实际的案例,学习AJAX技术的必要性,了解AJAX技术的原理; 接下来,将学习AJAX技术的基础API编程,以及了解简单的案例。

第23章为利用AJAX处理XML文档,学习怎样在AJAX中通过DOM技术来解析XML输出。

第24章为实践指导5,基于AJAX基础知识,讲解AJAX的一些典型应用,根据AJAX在不同场合的应用,将AJAX分为自动查询、按需取数据、页面部分刷新等使用领域进行学习。

第7部分为常用工具,包括8章。

第25章为查询分页,将学习查询分页的两种方法: 基于缓存的分页和基于查询的分页。

第26章为文件上传下载,将学习文件上传下载的基本实现。

第27章为验证码开发,将学习验证码的原理以及实现方式。

第28章为用JFreeChart开发图片报表,将学习报表的实现方式,基于JFreeChart,学习柱状报表、饼状报表、曲线报表等报表的生成。

第29章为用iText开发PDF报表,将学习PDF报表的实现方式。

第30章为JavaMail,将学习用Java Web编程收发邮件的方法: JavaMail。

第31章为网站安全,将学习Web编程中的一些安全问题,包括URL操作攻击、跨站脚本和SQL注入。

第32章为log4j和ant,首先讲解log4j的作用,接下来讲解其配置文件的编写,以及日志的级别操作。本章还讲解了如何利用ant来进行项目的部署。

第8部分为综合案例,即第33章。

第33章为GoodEdu教务管理系统项目文档,按照软件工程的一般过程进行开发,文档包括了软件开发的各个过程: 需求分析—总体设计—详细设计—编码的过程,文档的编写严格按照国家标准,项目的源代码将提供电子版。

3. 教学数据库介绍

本书的所有内容都基于教务管理系统。本系统中需要用到的数据表如表1~表4所示。

表1教师(T_TEACHER)(职工号,密码,姓名,性别,职称)

序号数据名称数据代码类型宽度备注

1职工号TEANOVARCHAR2(20)20主键

2密码TEAPWDVARCHAR2(20)20

3姓名TEANAMEVARCHAR2(20)20

4性别TEASEXVARCHAR2(20)20

5职称TITLEVARCHAR2(20)20

表2学生(T_STUDENT)(学号,密码,姓名,性别)

序号数据名称数据代码类型宽度备注

1学号STUNOVARCHAR2(20)20主键

2密码STUPWDVARCHAR2(20)20

3姓名STUNAMEVARCHAR2(20)20

4性别STUSEXVARCHAR2(20)20

表3课程(T_COURSE)(课程号,课程名称,学分,职工号)

序号数据名称数据代码类型宽度备注

1课程号COURSENOVARCHAR2(20)20主键

2课程名称COURSENAMEVARCHAR2(20)20

3学分CREDITFLOAT

4职工号TEANOVARCHAR2(20)20外键

表4考试成绩(T_SCORE)(学号,课程号,类型,分数)

序号数据名称数据代码类型宽度备注

1学号STUNOVARCHAR2(20)20

2课程号COURSENOVARCHAR2(20)20

3类型TYPEVARCHAR2(20)20主键

4分数SCOREFLOAT

本书提供了全书所有实例的源代码,供读者学习参考使用,所有程序均经过了作者精心的调试。

由于时间仓促和作者水平有限,书中的错误和不妥之处在所难免,敬请读者批评指正。

有关本书的意见反馈和咨询,可在清华大学出版社相关版块中与作者进行交流。

本书所用部分程序可以从清华大学出版社网站相关版面下载,或者在作者官方网站http://www.chinasei.com进行下载。

郭克华

2012年2月

第1部分入门

第1章Java Web入门

1.1认识B/S结构

1.1.1什么是B/S结构

1.1.2B/S结构的特点

1.2服务器安装

1.2.1为什么需要服务器

1.2.2获取服务器软件

1.2.3安装服务器软件

1.2.4测试服务器

1.2.5配置服务器

1.3IDE安装

1.3.1为什么需要IDE

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常见错误

本章知识体系

第2部分JSP基础开发

第2章JSP基本语法

2.1第一个JSP页面

2.1.1什么是JSP

2.1.2如何编写JSP

2.1.3测试JSP

2.2注释

2.2.1几种不同的注释

2.2.2如何写注释

2.3JSP表达式

2.3.1什么是JSP表达式

2.3.2如何使用JSP表达式

2.4JSP程序段

2.4.1什么是JSP程序段

2.4.2编写JSP程序段

2.4.3混合JSP程序段、HTML和表达式

2.4.4程序段中的变量作用范围

2.5JSP声明

2.5.1什么是JSP声明

2.5.2编写JSP声明

2.5.3需要注意的问题

本章知识体系

第3章JSP访问数据库

3.1认识JDBC

3.1.1什么是JDBC

3.1.2JDBC如何连接数据库

3.2使用厂商驱动进行数据库连接

3.2.1如何获取厂商驱动

3.2.2准备工作: 确定连接配置

3.3JDBC操作

3.3.1添加数据

3.3.2删除数据

3.3.3修改数据

3.3.4查询数据

3.4使用PreparedStatement和调用存储过程

3.4.1为什么要使用PreparedStatement

3.4.2如何使用PreparedStatement

3.4.3如何调用存储过程

3.5事务

3.5.1为什么需要事务

3.5.2如何使用事务

3.6用ODBC连接数据库

本章知识体系

第4章URL传值

4.1认识URL传值

4.1.1为什么需要URL传值

4.1.2如何使用URL传值

4.1.3如何得到URL参数

4.2用URL传值实现删除

4.2.1编写displayStu.jsp

4.2.2编写deleteStu.jsp

4.2.3将两个页面合成一个页面

4.3需要注意的问题

4.3.1怎样解决中文乱码

4.3.2URL传值的功能和安全问题

本章知识体系

第5章JSP指令和动作

5.1指令和动作

5.1.1什么是指令和动作

5.1.2指令和动作的分类

5.2page指令

5.2.1什么是page指令

5.2.2导入包

5.2.3设定字符集

5.2.4设定错误页面

5.2.5设定MIME类型和字符编码

5.2.6其他属性

5.3include指令

5.3.1为什么需要include指令

5.3.2如何使用include指令

5.3.3需要注意的问题

5.4include动作

5.4.1include动作介绍

5.4.2区分include动作和include指令

5.4.3需要注意的问题

5.5forward动作

5.5.1什么是forward动作

5.5.2如何使用forward

5.5.3传递参数

5.5.4需要注意的问题

本章知识体系

第6章实践指导1

6.1投票系统的案例需求

6.2投票系统分析

6.3开发过程

6.3.1准备数据

6.3.2如何出现进度条

6.3.3编写display.jsp

6.3.4编写vote.jsp

6.4进一步改进

6.4.1存在的问题

6.4.2如何封装数据库连接

6.4.3如何重用代码

6.5思考题: 如何防止刷票

第7章基本表单开发

7.1认识表单

7.1.1表单的作用

7.1.2定义表单

7.2单一表单元素数据的获取

7.2.1获取文本框中的数据

7.2.2获取密码框中的数据

7.2.3获取多行文本框中的数据

7.2.4获取单选按钮中的数据

7.2.5获取下拉菜单中的数据

7.3其他问题

7.3.1用JavaScript进行验证提交

7.3.2怎样解决中文乱码

7.4用表单添加学生信息

7.4.1案例需求

7.4.2案例实现

7.4.3案例思考

本章知识体系

第8章同名表单元素和隐藏表单元素

8.1认识同名表单元素

8.1.1什么是同名表单元素

8.1.2获取复选框组中的数据

8.1.3获取多选列表框中的数据

8.1.4获取其他同名表单元素中的数据

8.2隐藏表单元素

8.2.1为什么需要隐藏表单元素

8.2.2如何使用隐藏表单元素

8.2.3用隐藏表单元素实现修改

8.2.4用隐藏表单元素实现批量修改

8.2.5需要注意的问题

本章知识体系

第9章JSP和JavaBean

9.1认识JavaBean

9.1.1为什么需要JavaBean

9.1.2如何编写JavaBean 

9.1.3如何编写JavaBean属性 

9.2在JSP中使用JavaBean

9.2.1定义JavaBean

9.2.2设置JavaBean属性

9.2.3获取JavaBean属性

9.3DAO和VO

9.3.1为什么需要DAO和VO

9.3.2编写DAO和VO

9.3.3在JSP中使用DAO和VO

本章知识体系

第10章实践指导2 

10.1案例1: 基于表单的投票系统

10.1.1案例需求

10.1.2投票系统分析

10.1.3开发过程

10.1.4存在的问题

10.2案例2: 成绩输入系统

10.2.1案例需求

10.2.2系统分析

10.2.3开发过程

10.2.4思考

第3部分JSP内置对象

第11章JSP内置对象(上)

11.1认识JSP内置对象

11.1.1什么是内置对象

11.1.2JSP的内置对象

11.2out对象

11.2.1什么是out对象

11.2.2利用out对象进行客户端输出

11.2.3利用out对象管理缓冲区

11.3request对象

11.3.1什么是request对象

11.3.2利用request对象获得客户端参数

11.3.3利用request对象获得客户端基本信息

11.4response对象

11.4.1什么是response对象

11.4.2利用response对象进行重定向

11.4.3两种跳转方法的区别

11.4.4利用response设置HTTP头

本章知识体系

第12章用Cookie保存登录信息

12.1认识Cookie

12.1.1为什么需要Cookie

12.1.2如何将Cookie写入客户端

12.1.3如何读取客户端的Cookie

12.2Cookie的应用

12.2.1用Cookie实现自动登录

12.2.2用Cookie实现页间传值

12.2.3用Cookie保存客户个性化信息

12.3Cookie安全

12.3.1Cookie是安全的吗

12.3.2如何解决安全问题

本章知识体系

第13章JSP内置对象(下)

13.1利用session开发购物车

13.1.1生活中的购物车

13.1.2为什么要学习session

13.1.3如何使用session开发购物车

13.2session进阶

13.2.1session的其他API

13.2.2session内容初始化技巧

13.2.3sessionId

13.3session的其他应用

13.3.1利用session保存登录信息

13.3.2利用session传值

13.4application对象

13.4.1为什么要学习application

13.4.2如何使用application

13.4.3利用application对象获取资源物理路径

13.5exception对象

13.6page对象

13.7config对象

13.8pageContext对象

本章知识体系

第14章实践指导3

14.1在线交流系统的案例需求

14.2系统分析

14.2.1页面结构

14.2.2状态保存

14.3开发过程

14.3.1准备数据

14.3.2编写DAO和VO

14.3.3编写loginForm.jsp和loginAction.jsp

14.3.4编写chatForm.jsp和chatAction.jsp

14.3.5编写msgs.jsp

14.3.6编写logoutAction.jsp

14.4思考题: 如何进行session检查

第4部分Servlet开发

第15章Servlet基础编程

15.1认识Servlet

15.1.1什么是Servlet

15.1.2寻找JSP对应的Servlet

15.2编写第一个Servlet

15.2.1建立Servlet

15.2.2编写Servlet

15.2.3配置Servlet

15.2.4部署Servlet

15.2.5测试Servlet

15.2.6Servlet运行机制

15.3Servlet方法

15.3.1doGet()/doPost()方法

15.3.2init()方法

15.3.3service()方法

15.3.4destroy()方法

15.3.5Servlet生命周期

15.4Servlet与JSP内置对象

15.4.1为什么要在Servlet中使用内置对象

15.4.2获得out对象

15.4.3获得request和response对象

15.4.4获得session对象

15.4.5获得application对象

15.4.6获得其他对象

本章知识体系

第16章Servlet高级编程

16.1设置欢迎页面

16.1.1为什么需要欢迎页面

16.1.2如何设置欢迎页面

16.1.3设置多个欢迎页面

16.2在Servlet内实现跳转和包含

16.2.1为什么要在Servlet内跳转

16.2.2用response对象实现跳转

16.2.3用forward方法实现跳转

16.2.4在Servlet内实现包含

16.3在Servlet中读取参数

16.3.1为什么要设置参数

16.3.2如何设置参数

16.3.3如何获取参数

16.4MVC模式

16.4.1为什么需要MVC

16.4.2MVC基本结构

16.5异常集中处理

16.5.1什么时候需要异常处理

16.5.2如何进行异常处理

本章知识体系

第17章过滤器和监听器

17.1认识过滤器

17.1.1为什么需要过滤器

17.1.2如何编写过滤器

17.1.3如何配置过滤器

17.1.4需要注意的问题

17.2过滤器的其他应用

17.2.1利用过滤器进行session检查

17.2.2利用过滤器进行Cookie检查

17.2.3利用过滤器进行权限检查

17.3认识监听器

17.3.1为什么需要监听器

17.3.2如何编写监听器

17.3.3如何配置监听器

本章知识体系

第18章实践指导4

18.1购物车案例需求

18.2系统分析

18.2.1提取系统中的动作和视图

18.2.2设计动作和视图

18.2.3设计DAO和VO

18.2.4设计数据结构和其他模块

18.3开发过程

18.3.1准备数据

18.3.2编写DAO和VO

18.3.3编写SessionListener.java

18.3.4编写InitServlet.java和showAllBook.jsp

18.3.5编写buyForm.jsp和AddServlet.java

18.3.6编写showCart.jsp和RemoveServlet.java

18.4思考题: 如何进行session检查

第5部分标签应用与开发

第19章EL

19.1认识表达式语言

19.1.1为什么需要表达式语言

19.1.2如何使用表达式语言

19.2EL基本运算

19.2.1.和[]运算符

19.2.2算术运算符

19.2.3关系运算符

19.2.4逻辑运算符

19.2.5其他运算符

19.3EL数据访问

19.3.1对象的作用域

19.3.2如何访问JavaBean

19.3.3如何访问集合

19.4其他内置对象

19.4.1使用param对象获得参数

19.4.2使用cookie内置对象

19.4.3使用initParam内置对象

本章知识体系

第20章JSTL

20.1认识JSTL

20.1.1为什么需要JSTL

20.1.2什么是JSTL

20.2核心标签库

20.2.1什么是核心标签库

20.2.2用核心标签进行基本数据操作

20.2.3用核心标签实现选择流程

20.2.4用核心标签实现循环流程

20.2.5用核心标签进行URL操作

20.3XML标签库

20.4国际化标签库

20.5数据库标签库

20.6函数标签库

20.6.1函数标签库介绍

20.6.2函数标签的使用

本章知识体系

第21章自定义标签

21.1认识自定义标签

21.1.1什么是JSP标签

21.1.2为什么需要自定义标签

21.2开发自定义标签

21.2.1确定标签父类

21.2.2编写标签中的函数

21.3配置自定义标签

21.3.1为什么需要配置自定义标签

21.3.2编写标签库定义文件

21.3.3配置标签库

21.4使用自定义标签

21.4.1导入标签库

21.4.2使用标签

21.5开发具有属性的标签

21.5.1为什么需要属性

21.5.2开发属性

21.5.3配置属性

21.5.4测试

21.5.5使用默认属性

21.5.6使用必需属性

21.5.7设置表达式属性

本章知识体系

第6部分AJAX开发

第22章利用AJAX改善客户体验

22.1AJAX概述

22.1.1为什么需要AJAX技术

22.1.2AJAX技术介绍

22.2开发AJAX

22.2.1AJAX核心代码

22.2.2API解释

22.3用AJAX实现登录

22.3.1表单验证需求

22.3.2实现方法

22.3.3需要注意的问题

本章知识体系

第23章利用AJAX处理XML文档

23.1响应的类型

23.1.1文本响应类型

23.1.2XML响应类型

23.2DOM读取

23.2.1API介绍

23.2.2案例应用

23.3DOM修改

23.3.1API介绍

23.3.2案例应用

本章知识体系

第24章实践指导5

24.1用AJAX实现自动查询

24.1.1需求介绍

24.1.2实现过程

24.1.3类似应用

24.2按需取数据

24.2.1需求介绍

24.2.2实现过程

24.2.3类似应用

24.3页面部分刷新

24.3.1需求介绍

24.3.2实现过程

24.3.3类似应用

第7部分常 用 工 具

第25章查询分页

25.1认识查询分页

25.1.1什么是查询分页

25.1.2如何进行查询分页

25.2基于缓存的分页

25.2.1如何计算页数和记录范围

25.2.2编写代码

25.3查询时分页

25.3.1如何组织SQL语句

25.3.2编写代码

本章知识体系

第26章文件上传下载

26.1认识文件上传

26.1.1什么是文件上传

26.1.2文件上传控件

26.2实现文件上传

26.2.1文件上传包

26.2.2如何编写上传表单

26.2.3如何实现上传

26.2.4如何以虚拟路径保存文件

26.2.5应该注意的问题

26.3文件下载

26.3.1什么是文件下载

26.3.2如何实现文件下载

26.3.3如何出现保存对话框

本章知识体系

第27章验证码开发

27.1认识验证码

27.1.1为什么需要验证码

27.1.2验证码原理

27.2开发验证码

27.2.1在JSP上实现验证码

27.2.2如何嵌入验证码

27.2.3如何刷新验证码

27.3如何用验证码进行验证

本章知识体系

第28章用JFreeChart开发图片报表

28.1认识报表

28.1.1为什么需要报表

28.1.2什么是报表

28.1.3环境配置

28.2开发柱状报表

28.2.1什么是柱状报表

28.2.2如何开发柱状报表

28.2.3改善柱状报表的美观性

28.3开发饼状报表

28.3.1什么是饼状报表

28.3.2如何开发饼状报表

28.4开发曲线报表

28.4.1什么是曲线报表

28.4.2如何开发曲线报表

28.4.3如何开发多曲线报表

本章知识体系

第29章用iText开发PDF报表

29.1认识PDF报表

29.1.1为什么需要PDF报表

29.1.2如何配置iText框架

29.2如何输出PDF

29.2.1如何在服务器端生成PDF

29.2.2如何将PDF输送到客户端

29.3PDF文档内容管理

29.3.1如何美化PDF文本

29.3.2如何美化PDF文档

29.3.3如何添加中文支持

29.4输出表格和图片

29.4.1如何输出表格

29.4.2如何输出图像

本章知识体系

第30章JavaMail

30.1认识JavaMail

30.1.1为什么需要JavaMail

30.1.2准备工作

30.1.3了解基本知识

30.2通过JavaMail发送普通邮件

30.2.1基本API

30.2.2编写发送代码

30.3发送复杂的邮件

30.3.1发送HTML邮件

30.3.2发送带附件的邮件

30.4读取邮件

本章知识体系

第31章网站安全

31.1URL操作攻击

31.1.1什么是URL操作攻击

31.1.2解决方法

31.2Web跨站脚本攻击

31.2.1什么是跨站脚本

31.2.2跨站脚本如何实现攻击

31.2.3如何防范跨站脚本攻击

31.3SQL注入

31.3.1什么是SQL注入

31.3.2用SQL注入删除数据

31.3.3用SQL注入修改数据

31.3.4SQL注入攻击的危害

31.3.5防范方法

本章知识体系

第32章log4j和ant

32.1认识log4j

32.1.1为什么需要log4j

32.1.2如何安装log4j

32.2如何使用log4j

32.2.1如何编写配置文件

32.2.2日志测试

32.2.3详解日志消息级别

32.2.4详解日志布局

32.2.5日志文件的存放

32.2.6将日志保存到数据库

32.2.7需要注意的问题

32.3认识ant

32.3.1为什么需要ant

32.3.2下载并配置ant

32.3.3ant的使用

本章知识体系

第8部分综 合 案 例

第33章GoodEdu教务管理系统项目文档

33.1概述

33.1.1产品介绍

33.1.2产品应遵循的标准

33.1.3产品范围

33.2需求分析报告

33.2.1引言

33.2.2任务概述

33.2.3需求规定

33.2.4运行环境规定

33.3总体设计报告

33.3.1引言

33.3.2范围

33.3.3软件系统结构设计

33.3.4数据库结构设计

33.3.5界面设计

33.4详细设计报告

33.4.1引言

33.4.2程序系统的结构

33.4.3模块设计说明

33.5编码、测试和操作手册