第1章 开发环境的搭建 1
1. 如何配置Eclipse+Tomcat+Lomboz开发环境 2
2. 如何配置JBuilder + Tomcat开发环境 7
3. 如何将Tomcat的默认首页换成自定义的首页 9
4. 如何集成Tomcat与Apache服务器 10
5. 如何集成Tomcat与IIS 15
6. 如何将Tomcat嵌入到Java应用程序中 18
7. JSP相比于其他技术(ASP和PHP等)有什么优势 19
8. 在Tomcat下有哪几种发布JSP应用程序的方法 20
第2章 JSP基本应用 23
9. 如何记录一个页面被访问的次数 24
10. 如何使用JSP page指令生成动态网页 25
11. 如何通过使用JSP指令生成Word和Excel文档 27
12. include指令和include动作的区别是什么 28
13. 如何使用动作保护Web页面 30
14. 有哪几种方法可以实现页面间跳转 30
15. 如何在JSP页面间传递参数 31
16. 如何实现JSP网页模板 33
17. 如何在JSP页面中包含Applet 34
18. 如何实现Applet与JavaScript的通信 36
19. 如何在Applet中显示另一个HTML页面 37
20. 如何正确显示文本域的内容 38
21. 如何给页面添加打印功能 40
22. 如何为JSP页面添加日期选择功能 42
23. 如何为JSP页面添加日历功能 43
24. 如何实现二级联动下拉菜单功能 44
25. 如何判断字符串是否以指定字符串开头或结束 46
26. 如何检测一个字符串的出现次数 46
27. 如何判断字符是否是英文字符或数字 47
28. 如何判断两个对象是否相等 48
29. 如何使用迭代器遍历集合 50
30. 如何使用枚举对象 51
31. 如何使用特定字符串对一个字符串进行分割 52
32. 如何对较长的字符串省略显示 53
33. 如何格式化输出数字和字符串 54
34. 如何进行String类型和其他原生数据类型之间的转化 57
35. 如何进行日期时间有关的操作 57
36. 如何生成一定范围内的随机数 60
37. 如何调用其他应用程序 61
38. 如何操作大整数 63
第3章 JSP内建对象 65
39. 什么是变量作用域 66
40. 如何使用request对象进行参数存取 67
41. 如何使用session对象进行参数存取 71
42. 如何使用application对象进行参数存取 73
43. session和cookie的区别是什么 74
44. 如何使用cookie记录用户的偏好 75
45. 如何使用cookie记录用户访问次数 76
46. 如何使用session对象防止表单重复提交 78
47. 如何使session强制失效 80
48. 如何获取用户真实的IP地址 81
49. 如何获取用户的浏览器信息 82
50. 如何在JSP中获取当前绝对路径 84
51. 如何取得请求中的所有参数 85
52. 如何获取完整的请求URL 86
53. 如何判断session是否过期 89
54. 如何利用Referer报头跟踪广告在不同网站的点击率 90
55. 如何在重新显示表单时保留用户已输入的合法数据 91
56. 如何在response对象中控制页面缓存 95
57. 如何利用application对象进行站点访问计数 97
第4章 Servlet基础 101
58. Servlet和JSP之间的关系是什么 102
59. 如何理解Servlet的生命周期 102
60. 有哪些常用的Servlet API 103
61. 如何开发并部署一个Servlet 107
62. 如何取得配置文件中Servlet的参数 109
63. 如何取得配置文件中的全局参数 111
64. 如何使服务器启动时就加载并初始化Servlet的实例 112
65. 如何使Servlet成为线程安全的 112
66. sendRedirect和forward的区别是什么 114
67. 在Servlet中如何压缩响应的Web页面 115
68. 如何处理含有文件上传和正常参数混合的表单提交 116
69. 如何访问标准的CGI变量 118
70. 如何使用ServletContext 120
71. 如何使用RequestDispatcher 121
72. Servlet之间以及与JSP间如何通信 122
73. 如何获取当前绝对路径 124
74. 如何在Servlet中操作cookie 125
75. 如何使用Servlet生成JPEG图像 127
76. 如何实现Applet与Servlet的通信 129
77. 如何使用JavaBean由Servlet向JSP传递数据 130
78. 如何在Servlet中根据请求参数自动填充Java对象 132
79. 如何将一个JSP应用程序打成war包 134
80. 如何实现投票系统 135
81. 如何设置HTTP应答头 137
82. 如何在JSP或Servlet中调用DLL 138
83. 如何在JSP中调用ActiveX控件 140
第5章 JavaBean及高级应用技巧 143
84. 如何在JSP页面中使用JavaBean 144
85. 如何设置和获取JavaBean的属性 145
86. 如何在不同范围内共享JavaBean 147
87. 如何设置JavaBean的一个属性与输入参数关联 149
88. 如何将Bean的所有属性与请求参数关联 150
89. 如何使用JavaBean访问数据库 150
90. 如何使用JavaBean实现分页处理 152
91. 如何实现对服务器上的目录结构的浏览 156
92. 如何实现三层Web应用 158
93. 如何使用SmartUpload实现文件上传 158
94. 如何生成JSP彩色验证码 160
95. 如何在JSP中用JavaBean生成柱状图 163
96. 如何提高JSP性能 166
97. 如何使用iReport和Jasperreport整合开发Web报表 168
98. 如何用JavaBean在JSP页面实现进度条 171
99. 如何实现支持HTML标记的留言本 174
100. 如何实现基于数据库的站内检索 178
101. 如何实现电子邮件自动发送 179
102. 如何发送HTML格式的邮件 182
103. 如何发送带有附件的邮件 184
104. 如何发送邮件给多个接收者 186
105. 如何查看服务器上的邮件列表信息 187
106. 如何删除服务器上的邮件 190
107. 如何使用POI组件操作Excel 191
108. 如何使用JXL组件操作Excel 193
109. 使用iText生成PDF 195
110. 如何不借助第三方组件实现Word、Excel报表格式打印 196
第6章 JSP高级组件 203
111. 如何开发并部署自己的标记 204
112. 如何使用自定义标记实现分页 207
113. 如何使用DisplayTag标记库 217
114. 如何使用JSTL实现条件性输出 219
115. 如何使用JSTL实现迭代 221
116. 如何使用表达式语言 226
117. 如何阻止表达式语言的求值 229
118. 如何阻止脚本元素的使用 231
119. 如何访问作用域变量 231
120. 如何访问Bean的属性 234
121. 如何访问集合 238
122. 如何引用隐式对象 240
123. 如何使用过滤器对响应页面中的敏感字进行过滤 241
124. 如何使用过滤器实现身份验证 243
125. 如何使用过滤器进行网站流量统计记录 244
126. 如何使用过滤器给图片加入水印 246
127. Servlet有哪些监听器,可以监听哪些事件 250
128. 如何利用监听器实现在线人数统计 251
129. 如何利用监听器记录session中属性信息的变化 253
130. 如何利用session监听器记录用户登录日志 254
第7章 表单验证 257
131. get和post方法的区别 258
132. 如何解决表单下拉框元素遮挡层元素的问题 258
133. 如何取得表单中提交的所有数据 262
134. 如何处理表单提交数据中的特殊字符 264
135. 为什么服务器端的验证是必需的 266
136. 如何验证字符串为空和不超过指定长度 266
137. 如何验证数字、整数、电子邮件 268
138. 如何验证字符串中包含有效字符 272
139. 如何验证IP地址 274
140. 如何验证日期时间 276
141. 如何验证汉字 278
第8章 文件处理和XML技术 281
142. 如何使用遍历文件目录 282
143. 如何访问Windows注册表 284
144. 如何访问类路径上的资源文件 287
145. 如何操作文件和目录 289
146. 如何使用Java I/O流技术读写文件 291
147. 如何获取文件属性 293
148. 如何使用XML文件存储持久化对象 294
149. 如何结合XML和XSL输出HTML页面 297
150. 如何使用JSP技术生成XML文档 300
151. 如何使用XML配置文件 302
152. 如何使用SAX和DOM读取XML文件 304
153. 如何将HTML文件转换成XML文件 309
第9章 数据库连接和访问技术 313
154. 什么是JDBC 314
155. 如何使用JDBC访问各种数据库 315
156. 如何使数据库连接信息可配置化 316
157. 如何防范SQL注入 318
158. 为何不宜在页面中操纵ResultSet 320
159. 如何获取数据库信息 321
160. 如何实现分段读取和排行 322
161. 如何存取Blob/Clob类型的大对象 324
162. 如何选取和生成主键 325
163. 如何理解数据库连接池 327
164. 如何配置Tomcat连接池和数据源 328
165. 如何配置WebLogic连接池和数据源 332
166. 如何应用DAO设计模式操作数据库 343
167. 如何用事务保证数据一致性和安全性 347
第10章 JSP技术安全 351
168. 如何禁止列出站点文件目录 352
169. 如何防止用户直接输入地址访问JSP文件 353
170. 如何防止表单重复提交 356
171. 如何使页面全屏显示 359
172. 如何在页面中屏蔽鼠标右键 361
173. 如何在页面中屏蔽键盘功能键 362
174. 如何禁止用户复制网页内容 363
175. 如何在web.xml中进行安全性配置 365
176. JSP提供了哪些登录和验证方式 366
177. 如何实现基本验证方式 368
178. 如何实现表单验证方式 369
179. 如何实现摘要验证方式 371
180. 什么是客户凭证验证方式 372
181. 如何实现数字签名加密技术 373
182. 如何使用JAAS实现用户登录认证 375
183. 如何使用LDAP实现权限控制 378
184. 如何使用MD5对密码等进行加密 378
185. 如何使用户安全退出 385
186. 如何建立SSL方式连接 388
187. 如何保护Java代码不被暴露 390
188. 如何使用混淆器保护Java代码 391
189. 如何拒绝Get方式的请求 393
190. 如何向客户隐藏底层错误信息 395
191. 如何覆盖Invoker Servlet和部署Servlet 397
192. 如何将出现在地址栏中的参数变为乱码 398
193. 如何实现不在地址栏显示当前URL 399
第11章 编码专题 401
194. 如何进行各种字符编码间的转换 402
195. 如何正确显示JSP文件中的中文 403
196. 如何正确显示MySQL数据库中的中文 404
197. 如何处理表单输入域的中文 405
198. 如何处理上传中的中文乱码问题 408
199. 如何使用过滤器设置请求编码 410
200. 如何使JSP程序国际化 412
第12章 异常处理、调试及发布 415
201. 如何理解Java的异常处理机制 416
202. 页面中抛出NullPointerException异常可能有哪些原因 418
203. Web应用未能被服务器启动是怎么回事 419
204. JSP开发中有哪些常见错误 422
205. 如何对错误准确定位 425
206. 如何使浏览器显示友好的错误信息 426
207. 调试JSP和Servlet有哪些方法 428
208. 如何在Eclipse中调试JSP 432
209. 对JSP页面修改后为什么没有反应 435
210. 如何使用Log4j打印调试信息 436
211. 如何使用JUnit测试JSP程序 439
212. 如何使用Cactus进行测试 441
213. 如何使用HttpUnit进行集成测试 444
214. 如何将Web应用打为war包 447
215. 如何利用Ant实现自动发布 448
216. 如何在Eclipse中进行版本控制 451
217. 如何使用Log4j记录日志 453
第13章 Struts专题 457
218. Struts带来的好处是什么 458
219. 如何开发一个Struts应用程序 459
220. Struts配置文件的功能是什么 464
221. 如何使用Validator框架实现表单自动验证 468
222. 如何使用动态ActionForm 471
223. Struts中有哪些标记库 472
224. 如何使用Struts HTML标记库 473
225. 如何使用Struts Bean标记库 477
226. 如何使用Struts Logic标记库 481
227. 如何使用Struts Template标记库 484
228. 如何使用Token防止表单重复提交 485
229. 如何使用资源包实现国际化 487
230. 如何扩展Struts框架核心类 489
231. 如何实现Struts应用分模块开发 490