第1部分 基础篇 2
第1章 从HTTP协议谈起 2
1.1 HTTP协议简介 2
1.2 HTTP协议的原理 2
1.2.1 HTTP连接 3
1.2.2 HTTP请求 3
1.2.3 HTTP响应 4
第2章 使用Servlet技术简化WEB程序的开发 6
2.1 Servlet体系结构 6
2.2 Servlet中主要的类 7
2.2.1 Servlet体系的核心——Servlet接口 8
2.2.2 处理请求/响应模式的协议——GenericServlet类 8
2.2.3 处理HTTP协议——HttpServlet类 8
2.2.4 封装HTTP协议的请求——HttpServletRequest接口 9
2.2.5 封装HTTP协议的响应——HttpServletResponse接口 9
2.2.6 封装HTTP协议的会话——HttpSession接口 9
2.2.7 封装的Cookie——Cookie类 9
2.3 Servlet中3种不同范围的内存 9
2.3.1 Request范围内存 9
2.3.3 Application范围内存 10
2.3.2 Session范围内存 10
第3章 WEB开发的架构模式 12
3.1 完整的MVC模式描述 12
3.2 WEB开发中的架构模式 13
3.2.1 JSP+JavaBean的系统架构——Model1 13
3.2.2 JSP集合Servlet的架构——Model2 14
3.2.3 结合XML的系统架构——Model2x模型 14
4.2 用Velocity说HelloWorld 16
4.1 Velocity简介 16
第4章 Velocity技术 16
第2部分 开源兵器谱 16
4.3 Velocity体系结构 20
4.3.1 模板处理 21
4.3.2 Velocity中的Runtime对象 22
4.3.3 Velocity基于Servlet的开发 23
4.3.4 Velocity中的Context对象 25
4.4 Velocity模板语言 25
4.4.1 注释 26
4.4.2 引用(references) 26
4.4.3 指令(directives) 29
4.5.1 Runtime Log 36
4.5 Velocity配置文件 36
4.5.2 字符编码 37
4.5.3 循环 37
4.5.4 #include和#parse 37
4.5.5 资源管理 38
4.5.6 Velocity宏 39
4.5.7 Runtime Configuration 39
4.6 在WEB应用中使用Velocity 39
5.2 Struts的体系结构 46
第5章 Struts技术 46
5.1 Struts简介 46
5.3 编写Struts版的forumdemo 48
5.3.1 准备必要的运行环境 48
5.3.2 用JSP页面替换掉velocity模板 49
5.3.3 创建Struts的配置文件 51
5.3.4 编写控制器组件 52
5.4 Struts组件介绍 54
5.4.1 View层组件介绍 54
5.4.2 Model层组件介绍 61
5.4.3 Controller层组件介绍 68
5.4.4 Struts的配置文件 76
第6章 VelocityTools技术 81
6.1 VelocityTools简介 81
6.2 VelocityTools的体系结构 81
6.3 常用的VelocityTools 82
6.3.1 基本工具——GenericTool 82
6.3.2 与WEB应用结合---VelocityView 86
6.3.3 Velocity与Struts的“桥梁”——VelocityStruts 88
6.4 使用VelocityTools编写WEB应用程序 93
6.5 编写自己的VelocityTools 97
6.6 对VelocityTools使用的思考 100
第7章 Tiles技术 101
7.1 Tiles简介 101
7.2 Tiles体系结构 101
7.2.1 TilesRequestProcessor类 102
7.2.2 Controller接口 105
7.3 使用配置文件定义Tiles组件创建复合式页面 106
7.3.1 tiles-defs.xml文件 106
7.4 使用tiles分割forumdemo页面 107
7.3.3 在页面中使用Tiles 107
7.3.2 在struts-config.xml中使用Tiles组件 107
7.5 几种页面组合方式的比较 110
7.5.1 方案1:基本的velocity模板 110
7.5.2 方案2:使用velocity的parse 111
7.5.3 方案3:Struts+Tiles 112
7.5.4 方案4:Tiles继承 112
7.5.5 方案总结 113
8.1.1 基于Struts的传统验证方式 114
8.1 Validator技术简介 114
第8章 Validator技术 114
8.1.2 validator-rules.xml文件 115
8.1.3 validation.xml文件 120
8.1.4 在validator中使用正则表达式 122
8.2 使用Validator为forumdemo做表单验证 124
8.3 Validator的扩充 128
8.3.1 编写自己的验证规则 128
第9章 跨越对象与关系的桥梁Hibernate 131
9.1 Hibernate简介 131
9.2.1 使用Hibernate实现关系模型中的封装 132
9.2 使用Hibernate进行O/R Mapping 132
9.2.2 使用Hibernate实现关系模型之间的关系 136
9.2.3 使用Hibernate实现关系模型中的继承和多态 142
第10章 Spring技术 149
10.1 Spring简介 149
10.1.1 Spring简介 149
10.1.2 使用场景 150
10.2 Spring的控制反转/依赖注入 152
10.2.1 什么是控制反转/依赖注入 152
10.2.2 Spring的控制反转/依赖注入 155
10.3.1 什么是面向方面编程 161
10.3 Spring的面向方面编程 161
10.3.2 运用Spring实现面向方面编程 162
10.4 Spring的事务管理 164
10.4.1 Spring的编程式事务管理 164
10.4.2 Spring的声明式事务管理 165
10.5 Spring的数据访问 166
10.5.1 使用JDBC进行数据访问 166
10.5.2 使用ORM工具进行数据访问 168
10.6 Spring提供的几个Filter 169
10.6.1 OpenSessionInViewFilter 170
10.6.2 CharacterEncodingFilter 171
10.7.1 在WEB.xml中声明Spring框架 173
10.7 使用spring组装forumdemo各层 173
10.7.2 applicationContext.xml 174
10.7.3 改写DAO和Action 176
第3部分 项目实战篇 180
第11章 文章发布系统开发详解 180
11.1 项目组人员介绍及分工 180
11.2 项目原始需求的提出 181
11.3 项目需求文档的编写 182
11.4.1 开发环境的安装部署 183
11.4 项目开发环境的选择 183
11.4.2 其他辅助工具的选择 187
11.4.3 数据库的选择 188
11.5 开发支持平台的搭建 188
11.5.1 版本管理工具的搭建 188
11.5.2 Bug管理工具的搭建 199
11.6 系统架构的设计 205
11.6.1 系统设计原则 205
11.6.2 文章发布系统的架构设计 207
11.6.3 使用开源框架实现的架构设计 208
11.6.4 ProphetCMS系统的业务建模 210
11.7 系统领域模型的建立过程 217
11.7.1 数据驱动的建模过程 218
11.7.2 模型驱动的建模过程 225
11.8 建立Hibernate的调试环境 238
11.8.1 下载和安装 238
11.8.2 运行 238
11.9 系统的分层开发 241
11.9.1 系统整体目录结构 241
11.9.2 业务逻辑的描述 242
11.9.3 开发控制器层——Struts中Action的编写 243
11.9.4 开发业务逻辑层——Service层的编写 249
11.9.5 开发数据操作层——DAO层的编写 253
11.9.6 HttpClient的使用 264
11.9.7 页面美工人员与程序开发人员之间的鸿沟 265
11.10 系统的调试 266
11.10.1 测试 266
11.10.2 Bug管理 288
11.11 系统的发布 295
附录 299