《深入体验Java Web开发内幕-高级特性》PDF下载

  • 购买积分:15 如何计算积分?
  • 作  者:张孝祥,王建英,方立勋编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2007
  • ISBN:7121051516
  • 页数:462 页
图书介绍:本书是《深入体验Java Web开发内幕——核心基础》的姊妹篇,Java Web开发的初学者在阅读本书前,应该先学习《深入体验Java Web开发内幕——核心基础》。本书详细阐述了Java Web应用开发中的各种高级特性——Apache文件上传组件的源码分析及应用和编写原理,Servlet过滤器、监听器的原理及高级应用,开发国际化的Web应用,EL表达式语言,Tag(自定义标签)、Simple Tag(简单标签)和Tag File(标签文件)的开发与应用、JSTL(标准标签库)的应用,WEB安全域、Tomcat服务器的配置和管理平台,JSP文档,以及Servlet 2.4规范的应用程序部署描述符。本书适合所有Web应用的开发人员、Java程序员在工作和学习中参考阅读,也适合作为相关专业本科生、研究生的学习参考资料,也可作为相关培训机构的培训教材。

第1章 文件上传组件的应用与编写 1

1.1 准备实验环境 1

1.2 Apache文件上传组件的应用 3

1.2.1 查看API文档 3

1.2.2 DiskFileUpload类 3

1.2.3 FileItem类 6

1.2.4 FileUploadException类 9

1.2.5 文件上传编程实例 9

动手体验:使用Apache文件上传组件 9

脚下留心 14

1.3 Apache文件上传组件的源码赏析 15

1.3.1 Apache文件上传组件的类工作关系 15

1.3.2 Apache文件上传组件的核心编程问题 17

1.3.3 MultipartStream类 20

1.3.4 DeferredFileOutputStream类 33

1.3.5 DefaultFileItem类 37

1.3.6 DefaultFileItemFactory类 44

1.3.7 DiskFileUpload类 44

第2章 Filter(过滤器) 53

2.1 准备实验环境 53

2.2 Filter应用入门 54

2.2.1 Filter的基本工作原理 54

2.2.2 Filter链 55

2.2.3 Filter接口 56

2.2.4 FilterChain接口 57

2.2.5 FilterConfig接口 57

2.2.6 编写与编译Filter程序 58

动手体验:编写与编译Filter程序 58

2.2.7 Filter的注册与运行 61

动手体验:注册与运行Filter程序 63

2.2.8 Filter的运行过程分析 67

2.2.9 用Filter实现对资源的集中访问保护 71

动手体验:用Filter程序实现静态HTML页面的访问保护 72

2.3 Filter的高级应用 76

2.3.1 在Filter程序中修改请求和响应消息的原理 77

2.3.2 HttpServletRequest Wrapper类 82

2.3.3 用Filter实现文件上传请求的透明处理 83

动手体验:包装“multipart/form-data”类型的请求消息 83

2.3.4 HttpServletResponse Wrapper类 92

2.3.5 用Filter实现响应正文的压缩 94

动手体验:查看压缩Filter程序的运行效果 105

2.3.6 Filter链的应用 107

动手体验:了解Filter链的运行过程 107

2.4 思考与实践 111

第3章 Servlet事件监听器 112

3.1 概述 112

3.2 监听域对象的创建和销毁 113

3.2.1 ServletContextListener接口 113

3.2.2 HttpSessionListener接口 114

3.2.3 ServletRequestListener接口 115

3.2.4 域对象事件监听器的综合案例 115

动手体验:域对象事件监听器 116

3.2.5 统计当前在线人数的编程实例 120

3.3 监听域对象中的属性变更 123

3.3.1 监听对象的属性事件监听器接口 123

3.3.2 域对象属性事件监听器的综合案例 124

动手体验:域对象的属性事件监听器 124

3.4 感知Session绑定的事件监听器 127

3.4.1 HttpSessionBindingListener接口 128

3.4.2 HttpSessionActivationListener接口 128

3.4.3 感知Session绑定的综合案例 128

3.5 思考与实践 132

第4章 开发国际化的Web程序 133

4.1 国际化与本地化概述 133

动手体验:建立对国际化和本地化的直观认识 133

4.2 与国际化相关的Java类 136

4.2.1 Locale类 136

动手体验:Locale类方法的应用实例 139

4.2.2 DateFormat类 140

动手体验:对日期/时间进行本地格式化 142

动手体验:对日期/时间进行本地化解析 143

4.2.3 NumberFormat类 145

动手体验:对数值进行本地格式化 147

动手体验:对数值字符串进行本地化解析 148

4.2.4 MessageFormat类 149

4.2.5 ResourceBundle类 159

动手体验:使用native2ascii程序转换字符编码 161

动手体验:从资源包中读取资源信息 163

4.2.6 ResourceBundle类的扩展应用 165

动手体验:使用自定义的ResourceBundle的子类管理资源信息 166

4.3 Web应用的国际化 171

4.3.1 获取Web应用中的本地信息 171

动手体验:获得客户端支持的本地信息 172

4.3.2 Web应用的国际化举例 173

动手体验:Web应用的国际化 173

第5章 表达式语言(EL) 176

5.1 准备实验环境 176

5.2 EL概述 176

5.3 EL的基本应用 177

5.3.1 JSP标签的属性值中使用EL表达式 177

5.3.2 JSP模板中使用EL表达式 177

5.3.3 忽略JSP页面的EL表达式 178

5.3.4 使JSP页面的脚本元素无效 179

5.4 隐含对象 179

5.4.1 隐含对象与域属性 180

5.4.2 pageContext隐含对象 181

5.4.3 代表特定域属性集合的隐含对象 182

5.4.4 代表请求参数集合的隐含对象 182

5.4.5 代表HTTP请求消息头集合的隐含对象 182

5.4.6 cookie隐含对象 182

5.4.7 initParam隐含对象 183

5.5 EL的基础语法 184

5.5.1 EL中的标识符 184

5.5.2 EL中的保留字 184

5.5.3 EL中的常量 185

5.5.4 EL中的变量 186

5.5.5 EL的处理错误机制 186

5.6 EL中的运算符 188

5.6.1 方括号运算符([])和点运算符(.) 188

多学两招 189

5.6.2 算术运算符 189

5.6.3 比较运算符 189

5.6.4 逻辑运算符 190

5.6.5 empty运算符 190

5.6.6 条件运算符 191

5.6.7 圆括号运算符 191

5.6.8 运算符的优先级 191

5.7 EL自定义函数 192

5.7.1 什么是EL自定义函数 192

5.7.2 编写用做EL自定义函数的Java方法 193

5.7.3 在标签库描述符文件中描述EL自定义函数 194

5.7.4 在JSP页面导入和使用EL自定义函数 196

5.7.5 EL自定义函数的执行流程总结 198

第6章 自定义标签的开发与使用 200

6.1 自定义标签入门 200

6.1.1 什么是自定义标签 200

6.1.2 自定义标签的应用形式 201

6.1.3 入门自定义标签的开发和调用 202

动手体验:开发用于显示客户端IP地址的自定义标签 207

多学两招:自定义标签与JavaBean的区别 208

6.1.4 自定义标签的功能及其基本原理 209

6.1.5 自定义标签API 209

6.2 自定义标签的基本应用 213

6.2.1 Tag接口 213

6.2.2 控制是否执行标签体内容 215

动手体验:显示用户信息的自定义标签 215

6.2.3 控制是否执行JSP页面的内容 217

动手体验:阻止执行JSP页面内容的自定义标签 218

6.3 自定义标签的属性 220

6.3.1 定义标签属性 220

动手体验:为自定义标签增加属性 222

6.3.2 动态属性值的应用 224

动手体验:用JSP动态元素设置标签的属性 224

6.3.3 动态属性的应用 227

动手体验:利用自定义标签的动态属性生成下拉列表框 227

6.4迭代标签 230

6.4.1 IterationTag接口 230

6.4.2 迭代标签的应用与编程原理 230

动手体验:用自定义标签迭代输出集合中的元素 231

6.5 深入自定义标签的运行原理 234

6.5.1 自定义标签的运行原理 234

多学两招 236

6.5.2 Tomcat中的自定义标签的缓存分析 237

动手体验:验证自定义标签的缓存 237

指点迷津 240

6.5.3 Tomcat中自定义标签的线程安全问题 241

动手体验:分析自定义标签的线程安全问题 241

指点迷津 244

6.6 用自定义标签定义JSP脚本变量 244

6.6.1 用自定义标签定义JSP脚本变量 244

6.6.2 在TLD文件中定义JSP脚本变量 246

动手体验:用TLD文件定义脚本变量 247

6.6.3 用TagExtraInfo类定义JSP脚本变量 250

动手体验:使用TagExtraInfo类定义脚本变量 251

多想一想:使用TLD文件和使用TagExtraInfo类定义脚本变量的区别 253

动手体验:编写功能与<jsp:usebean>标签相同的自定义标签<it315:usebean> 253

6.7 处理标签体内容 257

6.7.1 BodyTag接口 257

6.7.2 BodyContent类 258

动手体验:BodyTag接口的简单应用 260

6.7.3 解析BodyTag接口的工作原理 262

6.7.4 BodyTag接口的编程实例 264

动手体验:对HTML特殊字符进行转义的自定义标签 265

6.7.5 标签体类型 270

动手体验:理解tagdependent类型的含义 270

第7章 简单标签与标签文件 271

7.1 简单标签库开发 271

7.1.1 SimpleTag接口 271

7.1.2 JspFragment类 273

7.1.3 SimpleTagSupport类 274

7.1.4 利用简单标签控制标签体和JSP页面的执行 274

动手体验:利用简单标签控制标签体和JSP页面的执行 274

7.1.5 对数组中的元素进行迭代输出的简单标签 277

动手体验:利用简单标签对数组中的元素进行迭代输出 277

7.1.6 对标签体内容进行修改的简单标签 279

动手体验:对标签体内容进行修改的简单标签 279

多想一想:嵌套标签内使用的out对象 283

7.1.7 处理<jsp:attribute>标签设置的属性 284

动手体验:借助<jsp:attribute>标签将多个JSP代码片段传递给简单标签 284

7.1.8 简单标签与传统标签的比较总结 287

7.2 标签库的描述符和部署 288

7.2.1 标签库描述文件 288

7.2.2 标签库的引用原理 291

动手体验:将TLD文件放置到jar包 292

7.3 标签文件 293

7.3.1 标签文件开发入门 293

动手体验:体验标签文件的开发 295

7.3.2 标签文件的运行原理 296

7.3.3 标签文件的基本语法 300

7.3.4 attribute指令 300

动手体验:标签属性应用实例 301

7.3.5 variable指令 302

动手体验:variable指令的同步实验 303

7.3.6 <jsp:invoke>标签 305

动手体验:测试<jsp:invoke>标签的属性 307

7.3.7 <jsp:doBody>标签 308

7.4 标签文件的应用案例 308

7.4.1 创建可重用的显示单元 308

7.4.2 为JSP页面提供填充数据 311

第8章 标准标签库(JSTL) 315

8.1 准备实验环境 315

8.2 JSTL概述 316

8.2.1 JSTL简介 316

8.2.2 安装和测试JSTL 318

8.3 核心标签库 319

8.3.1 <c:out>标签 319

8.3.2 <c:set>标签 322

8.3.3 <c:remove>标签 325

8.3.4 <c:catch>标签 325

8.3.5 <c:if>标签 327

8.3.6 <c:choose>标签 328

8.3.7 <c:forEach>标签 329

8.3.8 <c:forTokens>标签 337

8.3.9 URL相关的标签概述 339

8.3.10 <c:param>标签 339

8.3.11 <c:url>标签 340

8.3.12 <c:import>标签 341

8.3.13 <c:redirect>标签 344

8.4 国际化标签 345

8.4.1 国际化标签库概述 345

8.4.2 <fmt:setLocale>标签 346

8.4.3 <fmt:setBundle>标签 348

8.4.4 <fmt:bundle>标签 349

8.4.5 <fmt:message>标签 350

8.4.6 <fmt:param>标签 352

8.4.7 <fmt:requestEncoding>标签 353

8.4.8 <fmt:timeZone>标签 354

8.4.9 <fmt:setTimeZone> 355

8.4.10 <fmt:formatDate>标签 356

8.4.11 <fmt:parseDate>标签 358

8.4.12 <fmt:formatNumber>标签 360

8.4.13 <fmt:parseNumber>标签 363

8.5 数据库标签 365

8.5.1 <sql:setDataSource>标签 366

8.5.2 <sql:query>标签 368

8.5.3 <sql:update>标签 370

8.5.4 <sql:transaction>标签 373

8.5.5 <sql:param>标签 375

8.5.6 <sql:dateParam>标签 376

8.6 XML标签 377

8.6.1 XML标签概述 377

8.6.2 <x:parse>标签 378

8.6.3 <x:out>标签 383

8.6.4 <x:set>标签 383

8.6.5 XML选择标签和迭代标签概述 384

8.6.6 <x:if>标签 384

8.6.7 <x:choose>标签 386

8.6.8 <x:forEach>标签 387

8.6.9 <x:transform>标签 388

8.6.10 <x:param>标签 392

8.7 JSTL函数 392

8.7.1 fn:toLowerCase函数 392

8.7.2 fn:toUpperCase函数 393

8.7.3 fn:trim函数 393

8.7.4 fn:escapeXml函数 393

8.7.5 fn:length函数 394

8.7.6 fn:split函数 394

8.7.7 fn:ioin函数 395

8.7.8 fn:indexOf函数 395

8.7.9 fn:contains函数 395

8.7.10 fn:containsIgnoreCase函数 396

8.7.11 fn:startsWith函数 396

8.7.12 fn:endsWith函数 396

8.7.13 fn:replace函数 397

8.7.14 fn:substring函数 397

8.7.15 fn:substringAfter函数 398

8.7.16 fn:substringBefore函数 398

8.8 思考与实践 399

第9章 Web安全域 400

9.1 安全域概述 400

9.1.1 安全域的实现过程 400

9.1.2 安全域的应用实例 401

9.2 设置Web资源的安全约束 404

9.2.1 在web.xml文件中配置安全约束 404

9.2.2 配置访问者的登录验证方式 406

9.3 Web服务器的安全域 412

9.3.1 Tomcat服务器中的安全域 412

9.3.2 设置Tomcat服务器的内存域 413

9.3.3 设置Tomcat服务器的JDBC域 414

第10章 Tomcat的配置和管理平台 417

10.1 安装Tomcat的系统配置和管理平台 417

10.1.1 设置Tomcat的配置和管理平台的用户权限 418

10.1.2 登录Tomcat的配置和管理平台 419

10.2 Tomcat的系统配置平台 419

10.2.1 Tomcat Server目录 420

10.2.2 Resources目录 421

10.2.3 User Definition目录 421

10.3 Tomcat的Web应用程序管理平台 421

第11章 JSP文档 424

11.1 JSP文档概述 424

11.2 JSP文档 425

11.2.1 标识JSP文档 425

11.2.2 JSP文档的语法概述 427

11.2.3 名称空间声明 428

11.2.4 JSP文档的一些执行细节 433

11.3 JSP文档元素 434

11.3.1 <jsp:root>元素 434

11.3.2 <jsp:text>元素 435

11.3.3 <jsp:output>元素 436

11.3.4 <jsp:directive.page>元素 438

11.3.5 <jsp:directive.include>元素 439

11.3.6 <jsp:element>元素 439

11.3.7 <jsp:attribute>元素 440

11.3.8 <jsp:body>元素 442

11.3.9 JSP文档的模板内容 442

11.4 JSP页面的XML视图 444

11.5 XML语法格式的标签文件 445

附录A 应用程序部署描述符 446