第1章 Web应用程序开发基础知识 1
1.1 HTTP通信协议的基本概念 1
1.1.1 为什么要使用HTTP通信协议来开发Web应用程序 2
1.1.2 HTTP请求的基本结构 3
1.1.3 HTTP回应的基本结构 4
1.2 传统的Web应用程序开发方式 6
1.2.1 CGI程序扮演的角色 7
1.2.2 CGI程序的运行原理 7
1.3 Servlet——Java基础上的Web应用程序组件 8
1.3.1 什么是Servlet 8
1.3.2 Setvlet的基本运行原理 9
1.4 安装Tomcat服务器 11
1.4.1 Tomcat简介 11
1.4.2 安装Tomcat服务器 12
1.4.3 启动与测试Tomcat 13
1.4.4 关闭Tomcat服务器 15
1.4.5 Tomcat启动失败故障的排除 16
第2章 Servlet模型 19
2.1 Servlet如何处理HTTP请求 19
2.1.1 Servlet处理HTTP请求的流程 19
2.1.2 如何取得Servlet的请求内容 20
2.1.3 如何取得HTTP请求的标头信息 21
2.1.4 HTTP请求形式的实例探讨 22
2.2 Servlet如何产生HTTP回应 27
2.3 实例演练:撰写第一个HTTP Servlet 32
2.4 Servlet的生命周期(1ife cycle) 39
2.4.1 service()方法 39
2.4.2 service()方法 41
2.4.3 destroy()方法 41
2.4.4 Servlet生命周期的实例探讨 42
2.5 请求转送(Request Dispatching) 45
2.5.1 ServletRequest接口所提供的“请求转送”方法 45
2.5.2 ServletContext接口所提供的“请求转送”方法 46
2.6 实例演练:请求转送(Request Dispatching) 48
2.7 考前回顾 52
2.8 本章模拟试题 54
第3章 Wrb应用程序的结构与部署 59
3.1 Web应用程序起始路径 59
3.1.1 Web应用程序的context路径 60
3.1.2 Context路径下的重要目录与文件 60
3.2 部署描述文件(web.xml) 62
3.3 与Servlet执行方式有关的web.xml元素 64
3.3.1 <servlet>元素:定义Servlet实体 64
3.3.2 <servlet-mapping>元素:定义Servlet与其对应的URL 66
3.4 如何存取Servlet起始参数 66
3.4.1 <init-param>元素:定义Servlet起始参数 67
3.4.2 ServletConfig接口所定义的方法 67
3.4.3 如何存取Servlet起始参数 68
3.5 Web应用程序的部署议题 68
3.5.1 WAR(Web Archive)文件 69
3.5.2 建立WAR文件 70
3.6 实例演练:web.xml的基本配置技巧 71
3.7 考前回顾 81
3.8 本章模拟试题 83
第4章 Servlet容器模型 87
4.1 Web应用程序的起始参数 87
4.1.1 ServletContext对象 87
4.1.2 <context-param>元素:设定Context起始参数 88
4.1.3 存取Context起始参数的方式 89
4.1.4 ServletContext接口所提供的方法 90
4.1.5 实例探讨:用Context起始参数建立JDBC数据库连接 93
4.2 Web应用程序的“事件”与“监听器” 97
4.2.1 Web应用程序的生命周期 98
4.2.2 ServletContextListener接口 98
4.2.3 Servlet Context“监听器类”的运行方式 99
4.2.4 设计Web应用程序初始化程序的基本步骤 101
4.2.5 ServletContextAttributel Listener接口 102
4.3 与HTTP会话有关的“监听器接口” 103
4.3.1 HttpSessionListener接口 103
4.3.2 HttpSessionActivationListener接口 104
4.3.3 HttpSessionAttributeListener接口 104
4.3.4 HttpSessionBindingListener接口 105
4.4 分布式Web应用程序 106
4.5 实例演练:初始化Web应用程序 107
4.6 考前回顾 116
4.7 本章模拟试题 118
第5章 Servlet的异常处理机制 125
5.1 服务器端异常处理机制 126
5.2 声明式异常处理 127
5.2.1 声明HTTP错误所对应的错误页面 128
5.2.2 处理Java异常 129
5.3 程序化异常处理 131
5.3.1 在try-catch描述语句内直接处理异常 132
5.3.2 将异常转交给其他Servlet处理 132
5.4 该使用哪一种异常处理机制 133
5.4.1 “声明式异常处理”的优缺点 134
5.4.2 “程序化异常处理”的优缺点 134
5.5 实例演练:Web应用程序的异常处理 135
5.6 记录异常的相关信息 149
5.6.1 GenericServlet类提供的log()方法 149
5.6.2 ServletContext接口提供的log()方法 150
5.7 考前回顾 151
5.8 本章模拟试题 152
第6章 会话管理 157
6.1 基本的会话管理方式 157
6.1.1 何谓HTTP会话 158
6.1.2 HTTP会话与Session ID 159
6.2 HttpSession接口内重要的方法 161
6.2.1 存取HTTP会话内容 161
6.2.2 终止HTTP会话 162
6.3 实例演练:管理HTTP会话信息 164
6.3.1 使用Cookie功能管理HTTP会话可能发生的问题 177
6.4 使用“URL重写”来管理HTTP会话信息 179
6.4.1 “URL重写”的基本概念 179
6.4.2 如何动态产生HTML网页与Session ID 181
6.5 实例演练:“URL重写”技巧 182
6.6 考前回顾 192
6.7 本章模拟试题 193
第7章 Web应用程序的安全性 199
7.1 Web应用程序的安全性问题 199
7.1.1 何谓“验证” 200
7.1.2 何谓“授权” 200
7.1.3 Web服务器的安全防护措施 200
7.2 Web服务器的“声明式安全管理” 202
7.2.1 声明式验证 203
7.2.2 声明式授权 203
7.3 BASIC验证机制 206
7.4 实现FORM验证机制 208
7.4.1 实现FORM验证机制 208
7.4.2 撰写HTML自定义登录网页的注意事项 210
7.5 如何在Web应用程序内辨识用户身份 210
7.6 实例演练:声明式验证机制 213
7.7 考前回顾 221
7.8 本章模拟试题 222
第8 章开发“线程安全”的Servlet 227
8.1 “线程安全”的重要性 227
8.1.1 如何声明“线程安全”的变量 227
8.1.2 如何撰写“线程安全”的程序代码 232
8.2 哪些变量与属性为“线程安全” 242
8.3 SingThreadModel接口 246
8.3.1 Servlet容器如何运行STM Servlet 246
8.3.2 使用SingThreadModel接口的注意事项 248
8.4 考前回顾 248
8.5 本章模拟试题 249
第9章 JSP模型 253
9.1 JSP简介 253
9.1.1 什么是JSP 253
9.1.2 JSP的组成 255
9.2 JSP的运行方式 256
9.2.1 JSP的生命周期方法 256
9.2.2 JSP生命周期的七个阶段 257
9.2.3 部署JSP 261
9.3 JSP标准指令(Standard Directive) 261
9.4 JSP程序代码元素(Scripting Elements) 265
9.4.1 Declaration Tag(声明标签) 265
9.4.2 Scriptlet Tag(程序代码标签) 266
9.4.3 Expression Tag(表达式标签) 267
9.4.4 Comments Tag(注解标签) 267
9.5 JSP标准动作元素 269
9.6 JSP的隐含变量 269
9.6.1 何谓JSP隐含变量 269
9.6.2 各种隐含变量的存取范围(scope) 270
9.7 JSP的异常处理机制 270
9.7.1 撰写JSP错误页面 271
9.7.2 指定异常应交由哪个JSP错误页面处理 271
9.8 以XML语法撰写JSP 272
9.8.1 jsp:root元素 272
9.8.2 JSP Document指令元素 273
9.8.3 JSP Document程序代码元素 273
9.8.4 JSP Document注解元素 274
9.9 实例演练:JSP异常处理机制 274
9.10 考前回顾 276
9.11 本章模拟试题 279
第10章 开发可复用的JSP 285
10.1 JSP的复用概念 285
10.2 在JSP内包含其他JSP文件内容 288
10.2.1 使用JSP Standard Directive的include指令 288
10.2.2 使用JSP Standard Action的<jsp:include>元素 290
10.3 考前回顾 292
10.4 本章模拟试题 293
第11章 JSP与JavaBean 297
11.1 JavaBean简介 297
11.12 如何在JSP内使用JavaBean 298
11.2.1 JavaBean的四种存取范围(Scope) 299
11.2.2 <jsp:useBean>元素 299
11.2.3 <jsp:setProperty>元素 301
11.2.4 <jsp:getProperty>元素 303
11.2.5 JavaBean的初始化方式 303
11.3 实例演练:在JSP内使用JavaBean 305
11.4 考前回顾 312
11.5 本章模拟试题 314
第12章 JSP与自定义标签库 319
12.1 “自定义标签”与“标签库” 319
12.1.1 何谓“自定义标签” 319
12.1.2 自定义标签的分类 324
12.1.3 何谓“自定义标签库” 325
12.2 标签处理类(Tag Handler Class) 326
12.2.1 Tag接口 326
12.2.2 IterationTag接口 328
12.2.3 TagSupport类 329
12.2.4 BodyTagSupport类 332
12.2.5 撰写“标签处理类” 334
12.3 标签库描述文件(TLD) 339
12.3.1 什么是“标签库描述文件” 339
12.3.2 <tag>元素与其子元素 341
12.4 在JSP内使用“自定义标签库” 342
12.4.1 在web.xml内声明TLD所在位置 343
12.4.2 在JSP内声明欲使用的TLD 343
12.5 实例演练:开发“自定义标签库” 344
12.6 考前回顾 349
12.7 本章模拟试题 352
第13章 J2EE设计模式 359
13.1 J2EE设计模式简介 359
13.1.1 什么是“设计模式” 359
13.1.2 J2EE应用程序模型与J2EE设计模式 360
13.2 SCWCD涵盖的设计模式 362
13.2.1 Model-View-Controller设计模式 364
13.2.2 Value Object设计模式 366
13.2.3 Data Access Object设计模式 370
13.2.4 Business Delegate设计模式 374
13.2.5 Front Component设计模式 377
13.3 考前回顾 381
13.4 本章模拟试题 382
第14章 SCWCD模拟试题 385
SCWCD模拟试题(一) 385
SCWCD模拟试题(二) 404
第15章 SCWCD模拟试题详解 425
SCWCD模拟试题详解(一) 425
SCWCD模拟试题详解(二) 444