第Ⅰ部分 基 础 篇
第1章 Web编程概述 2
1.1 浏览器/服务器(B/S)模型 2
1.1.1 客户端/服务器(C/S)模型的问题 2
1.1.2 浏览器/服务器(B/S)模型的优劣 2
1.2 Web服务器与Web请求 3
1.3 Web开发技术的发展 3
1.3.1 客户端技术的发展 3
1.3.2 服务端技术的发展 5
1.3.3 J2EE vs微软.NET 6
1.4 ASP.NET技术 6
1.4.1 彻底的颠覆——ASP.NET与ASP 6
1.4.2 更强更完善——ASP.NET 2.0与1.1 7
1.5 其他基础知识 8
1.6 回顾与总结 8
第2章 建立开发环境 9
2.1 安装IIS 9
2.2 安装.NET框架与集成开发环境 10
2.3 熟悉IIS 12
2.3.1 注册ASP.NET 2.0 12
2.3.2 了解IIS的设置 13
2.3.3 配置虚拟目录 15
2.4 熟悉集成开发环境 16
2.5 回顾与总结 17
第3章 C#编程基础 18
3.1 创建你的第一个C#程序 18
3.2 变量和运算 20
3.2.1 单值类型 20
3.2.2 类型转换 21
3.2.3 枚举与数组类型 23
3.2.4 运算操作 24
3.2.5 四则运算的例子 27
3.3 字符串操作 28
3.4 流程控制 30
3.4.1 流程控制概述 30
3.4.2 选择语句 31
3.4.3 迭代语句 33
3.4.4 冒泡排序的例子 37
3.4.5 字符串与整数互转的例子 38
3.5 了解面向对象编程 40
3.5.1 面向对象概述 40
3.5.2 冒泡排序类 40
3.5.3 类和成员 46
3.5.4 值类型和引用类型 48
3.5.5 汽车类的例子 50
3.6 回顾与总结 53
第4章 强大的.NET类库 55
4.1 常用命名空间 55
4.1.1 基础命名空间 55
4.1.2 图形命名空间 55
4.1.3 数据命名空间 56
4.1.4 Web命名空间 56
4.1.5 框架服务命名空间 56
4.1.6 安全性命名空间 57
4.1.7 网络命名空间 57
4.1.8 配置命名空间 57
4.1.9 本地化命名空间 58
4.2 集合类型 58
4.2.1 System.Collections命名空间概述 58
4.2.2 使用ArrayList类型 58
4.2.3 使用Hashtable类型 60
4.2.4 使用SortedList类型 62
4.2.5 使用Stack类型 64
4.2.6 泛型集合 68
4.3 磁盘操作 69
4.3.1 System.IO命名空间概述 69
4.3.2 使用DriveInfo类型读取
驱动器信息 70
4.3.3 使用Directory和DirectoryInfo
类型操作目录 70
4.3.4 使用File和FileInfo类型
操作文件 72
4.3.5 使用StreamReader和StreamWriter
类型读写文件 73
4.4 反射 75
4.4.1 System.Relection命名空间概述 75
4.4.2 反射对象的成员 78
4.4.3 反射对象的字段 78
4.4.4 反射对象的属性 79
4.4.5 反射对象的方法 80
4.5 图形图像处理 80
4.5.1 System.Drawing命名空间概述 80
4.5.2 生成验证码的例子 81
4.5.3 生成缩略图的例子 83
4.5.4 生成黑白图的例子 85
4.6 网络 86
4.6.1 从远程地址下载文件的例子 86
4.6.2 Ping操作的例子 87
4.7 回顾与总结 87
第5章 数据库基础 89
5.1 使用IDE连接SQL Server 89
5.2 创建数据库与表 90
5.3 SQL查询 93
5.3.1 记录添加 94
5.3.2 记录修改 94
5.3.3 记录删除 95
5.3.4 单表查询 95
5.3.5 多表查询 97
5.3.6 聚合函数 98
5.3.7 分组查询 98
5.3.8 子查询 99
5.4 存储过程 99
5.4.1 存储过程与参数 99
5.4.2 存储过程与事务 102
5.4.3 声明变量与循环 103
5.5 回顾与总结 104
第6章 快速入门——简易留言簿 105
6.1 编码前的准备 105
6.1.1 回顾基本概念 105
6.1.2 设计数据结构 106
6.2 实现 106
6.2.1 创建数据库 106
6.2.2 实现发表留言功能 107
6.2.3 显示用户发表的留言 113
6.2.4 管理员操作 116
6.3 回顾与总结 120
第Ⅱ部分 技 术 篇
第7章 .NET框架与ASP.NET 122
7.1 .NET框架体系结构概述 122
7.2 公共语言运行库CLR 122
7.2.1 公共语言运行库概述 122
7.2.2 编译的过程和原理 123
7.2.3 CLR的自动内存管理 124
7.3 程序集 124
7.3.1 程序集概述 125
7.3.2 程序集的构成 125
7.3.3 构建程序集信息 126
7.4 应用程序域 129
7.4.1 应用程序域概述 129
7.4.2 应用程序域编程 129
7.5 ASP.NET代码结构与编译 132
7.5.1 ASP.NET代码模型 132
7.5.2 ASP.NET 2.0的保留文件夹 135
7.5.3 ASP.NET 2.0页面模型 136
7.5.4 ASP.NET 2.0编译模型 138
7.6 ASP.NET请求和响应 142
7.6.1 ASP.NET应用程序的生命周期 142
7.6.2 ASP.NET处理管线 143
7.6.3 HttpRequest对象 145
7.6.4 HttpResponse对象 147
7.6.5 访问记录程序 147
7.6.6 文件下载程序 148
7.6.7 ASP.NET页面生命周期 149
7.7 ASP.NET事件模型 152
7.7.1 ASP.NET事件模型概述 152
7.7.2 ASP.NET服务器控件事件模型 153
7.8 ASP.NET 2.0 Provider模型概述 156
7.8.1 Provider模型概述 156
7.8.2 Provider模型基本结构 157
7.8.3 ASP.NET 2.0中的Provider 158
7.9 回顾与总结 160
第8章 服务器控件 162
8.1 服务器控件概述 162
8.1.1 传统的解决方案 162
8.1.2 ASP.NET的解决方案 163
8.1.3 使用IDE添加控件 163
8.1.4 控件的属性 164
8.1.5 控件的标签 165
8.1.6 特殊的服务器控件 166
8.2 服务器控件的层次结构 167
8.2.1 控件的层次结构与基类 167
8.2.2 使用程序访问控件 168
8.2.3 使用智能感知熟悉控件 169
8.2.4 Web服务器控件层次结构 170
8.2.5 HTML服务器控件层次结构 171
8.3 服务器控件树 172
8.3.1 使用程序输出控件树 172
8.3.2 LiteralControl控件 174
8.4 服务器控件的事件 176
8.4.1 为控件添加事件 176
8.4.2 事件参数与自动回发 177
8.4.3 服务端事件与客户端事件 178
8.5 服务器控件的使用 180
8.5.1 下拉列表控件DropDownList 181
8.5.2 多选框列表控件CheckBoxList 182
8.5.3 文件上传控件FileUpload 183
8.5.4 多重视图控件MultiView 185
8.5.5 必须字段验证控件
RequiredFieldValidator 186
8.6 网络文件夹的例子 187
8.6.1 网络文件夹的界面预览 187
8.6.2 网络文件夹的功能需求 188
8.6.3 网络文件夹的代码实现 188
8.7 回顾与总结 199
第9章 ADO.NET数据访问模型 200
9.1 ADO.NET概述 200
9.2 连接数据库 201
9.2.1 连接字符串 201
9.2.2 使用Connection对象
连接数据库 202
9.2.3 使用ConnectionStringBuilder
构建连接字符串 206
9.2.4 枚举所有可用数据源 207
9.3 执行SQL语句 207
9.3.1 回顾论坛数据库 207
9.3.2 使用SqlCommand执行
SQL语句 208
9.3.3 SQL注入带来的威胁 211
9.4 使用参数化SQL与存储过程
提高安全性 213
9.4.1 使用参数来防止SQL注入 213
9.4.2 创建存储过程 214
9.4.3 使用SqlCommand对象执行
存储过程 215
9.5 使用DataReader访问数据 216
9.5.1 使用DataReader读取单记录集 216
9.5.2 使用DataReader读取多记录集 218
9.6 DataSet数据容器 220
9.6.1 DataSet对象的基本结构 220
9.6.2 创建DataSet 221
9.6.3 访问DataSet 222
9.6.4 使用DataRelation实现父子表 224
9.7 离线模式操作数据库 226
9.7.1 使用DataAdapter来获取数据 226
9.7.2 使用DataAdapter来更新数据 229
9.8 回顾与总结 233
第10章 数据绑定与数据绑定控件 234
10.1 数据绑定概述——简化数据访问和
实现页面与程序的分离 234
10.1.1 单值绑定 234
10.1.2 绑定表达式 235
10.2 重复值绑定 237
10.2.1 各种类型的数据源 237
10.2.2 支持数据源绑定的控件 238
10.2.3 把数据源绑定到控件 239
10.3 复杂数据绑定控件之GridView 242
10.3.1 回顾论坛数据库结构 242
10.3.2 把数据源绑定到GridView 243
10.3.3 GridView的绑定列与模板列 244
10.3.4 GridView的事件 250
10.3.5 对你的GridView进行美化 256
10.3.6 格式化GridView 261
10.3.7 数据的排序与分页 262
10.4 复杂数据绑定控件之DataList——在
一行中显示多条记录 266
10.4.1 DataList的属性与模板 266
10.4.2 DataList的模板与事件 268
10.5 复杂数据绑定控件之Repeater——完成
论坛分类和版块管理 271
10.5.1 使用Web.config存储
连接字符串 271
10.5.2 使用Repeater呈现父子
表数据 272
10.6 回顾与总结 278
第11章 ASP.NET应用程序统筹 280
11.1 ASP.NET应用程序统筹概述 280
11.1.1 大型系统的需求 280
11.1.2 ASP.NET的解决方案 280
11.2 母版页——构建具有统一外观的
应用程序 281
11.2.1 创建母版页 281
11.2.2 创建基于母版页的Web窗体 283
11.2.3 以编程方式访问母版页 286
11.3 为你的网站创建主题和皮肤 286
11.3.1 CSS样式概述 286
11.3.2 使用CSS统一页面样式 290
11.3.3 创建与应用主题 291
11.3.4 创建控件的皮肤 293
11.3.5 切换网站主题 295
11.4 用户控件 299
11.4.1 创建用户控件 299
11.4.2 使用用户控件 302
11.4.3 以编程方式访问用户控件 304
11.5 本地化和资源——创建多语言网站 304
11.5.1 生成本地资源 304
11.5.2 创建多语言资源文件 307
11.5.3 实现多语言切换 308
11.5.4 以编程方式访问本地资源 309
11.5.5 创建和使用全局资源 310
11.6 导航控件和站点地图 311
11.6.1 创建自动的导航路径 311
11.6.2 多语言和多主题的导航 313
11.7 回顾与总结 315
第12章 状态管理--记录你网站访客的活动 316
12.1 状态管理概述 316
12.1.1 状态管理与数据库 316
12.1.2 状态管理的比较参数 316
12.2 Cookie 317
12.2.1 Cookie概述 317
12.2.2 Cookie的使用 317
12.2.3 Cookie总结 320
12.3 Session 320
12.3.1 Session概述 320
12.3.2 Session的使用 321
12.3.3 把Session存储在独立
的进程中 322
12.3.4 把Session存储在数据库中 324
12.3.5 Session的使用范围与
大小限制 325
12.3.6 Session的生命周期 327
12.3.7 遍历与销毁Session 328
12.3.8 Session的常见问题与总结 328
12.4 Application 329
12.4.1 全局应用程序类 329
12.4.2 使用Application统计
网站访问 331
12.4.3 Application总结 332
12.5 Cache 333
12.5.1 Cache概述 333
12.5.2 Cache性能与过期策略 333
12.5.3 Cache的更新策略 337
12.5.4 Cache总结 339
12.6 隐藏域/ViewState/ControlState--保存
数据的另一个场所 339
12.6.1 使用隐藏域 339
12.6.2 使用ViewState 340
12.6.3 ViewState的安全与性能 340
12.6.4 ControlState概述 343
12.6.5 总结 343
12.7 以人为本的Profile 343
12.7.1 使用Profile制作个性化页面 343
12.7.2 Profile总结 348
12.8 其他 349
12.8.1 QueryString 349
12.8.2 跨页提交 349
12.9 完善论坛 350
12.10 回顾与总结 355
第13章 强类型DataSet 357
13.1 强类型DataSet概述 357
13.2 使用强类型DataSet进行数据访问 357
13.3 论坛程序总结 368
13.4 回顾与总结 371
第Ⅲ部分 提 高 篇
第14章 请求上下文 374
14.1 HTTP上下文简介 374
14.2 HttpHandler 375
14.2.1 Http处理程序简介 375
14.2.2 自定义HTTP处理程序——实现
图片防盗链的功能 375
14.2.3 IhttpHandlerFactory--实现
文件下载管理 379
14.3 HttpModule 384
14.3.1 Http模块简介 384
14.3.2 创建简单的Http模块——一个
IP过滤的例子 384
14.4 回顾与总结 386
第15章 保护你的ASP.NET应用程序 387
15.1 ASP.NET应用程序安全概述 387
15.1.1 安全相关的名词 387
15.1.2 ASP.NET安全结构 387
15.1.3 身份验证方式 388
15.2 用户账户模拟 388
15.2.1 一个模拟请求用户的例子 388
15.2.2 模拟某一个用户 392
15.2.3 使用编程方式进行临时模拟 392
15.3 基于Windows的身份验证 394
15.3.1 概述 394
15.3.2 配置IIS安全 394
15.3.3 配置Windows安全 395
15.3.4 配置Windows身份验证 397
15.3.5 配置Windows授权 397
15.3.6 实现自定义角色 398
15.3.7 获取用户信息 399
15.4 基于表单的身份验证 399
15.4.1 概述 399
15.4.2 启用表单身份验证 399
15.4.3 配置表单身份验证 400
15.4.4 配置表单授权——一个限制
匿名下载的例子 402
15.4.5 登录与注销 403
15.4.6 使用Web.config进行
身份验证 405
15.4.7 获取用户信息 406
15.5 ASP.NET 2.0的成员资格和
角色管理器 406
15.5.1 成员资格概述 406
15.5.2 成员资格的配置 407
15.5.3 角色管理器概述 409
15.5.4 角色管理器的配置 410
15.5.5 安全性相关的控件 411
15.5.6 ASP.NET网站管理工具 412
15.5.7 成员资格和角色管理器
API编程 413
15.6 安全性相关的控件 413
15.6.1 ASP.NET登录控件概述 413
15.6.2 登录控件 414
15.6.3 创建用户向导控件 414
15.6.4 密码恢复控件 415
15.6.5 修改密码控件 415
15.6.6 其他控件 415
15.7 ASP.NET网站管理工具 416
15.7.1 ASP.NET网站管理工具概述 416
15.7.2 用户管理 417
15.7.3 角色管理 418
15.7.4 访问规则管理 420
15.7.5 其他配置 421
15.8 成员资格和角色管理API编程 422
15.8.1 成员资格API概述 422
15.8.2 角色管理API概述 423
15.8.3 创建、修改、获取和
删除用户 423
15.8.4 验证和解锁用户 425
15.8.5 角色管理 426
15.8.6 角色验证 428
15.8.7 其他重要成员 428
15.9 回顾与总结 429
第16章 Web Part让网站个性化 430
16.1 Web Part概述 430
16.2 进一步了解Web Part 431
16.2.1 Web Part的层次结构 431
16.2.2 ASP.NET中的Web Part
控件 431
16.3 使用Web Part 432
16.3.1 创建一个简单的个性化页面 433
16.3.2 页面显示模式介绍 434
16.3.3 在页面中添加Web Part 437
16.3.4 在页面中编辑Web Part 439
16.3.5 Web Part的导入和导出 442
16.3.6 Web Part之间的通信 444
16.4 回顾与总结 449
第17章 Ajax无刷新技术 450
17.1 Ajax概述 450
17.1.1 什么是Ajax 450
17.1.2 Ajax历史 450
17.2 Ajax工作原理 451
17.3 微软ASP.NET Ajax 453
17.3.1 ASP.NET Ajax概述 453
17.3.2 ScriptManager控件 453
17.3.3 ScriptManagerProxy控件 455
17.3.4 UpdatePanel控件 457
17.3.5 UpdateProgress控件 458
17.3.6 Timer控件 459
17.3.7 ASP.NET Ajax与Web Service
的配合 460
17.3.8 ASP.NET Ajax应用示例:无
刷新留言簿 463
17.4 ASP.NET Ajax Control Toolkit 465
17.5 Ajax的优势与不足 466
17.5.1 Ajax应用优势 466
17.5.2 Ajax的不足 466
17.6 脚本调试 467
17.7 回顾与总结 467
第18章 性能与安全 468
18.1 性能优化概述 468
18.2 编码级别性能优化 468
18.2.1 数据访问 468
18.2.2 字符串操作 469
18.2.3 释放资源 470
18.2.4 其他优化 471
18.3 页面级别性能优化 472
18.3.1 页面缓存 472
18.3.2 视图状态 473
18.3.3 页面加速 473
18.3.4 其他优化 473
18.4 构架级别性能优化 474
18.4.1 数据缓存 474
18.4.2 分布式程序 474
18.4.3 分布静态资源 475
18.4.4 其他优化 475
18.5 配置与部署性能优化 475
18.5.1 网站配置 475
18.5.2 网站部署 476
18.6 安全概述 476
18.7 页面与编码相关安全防护 477
18.7.1 控件与页面 477
18.7.2 状态机制 478
18.7.3 SQL注入 478
18.7.4 提示信息 479
18.8 构架相关安全防护 479
18.8.1 隔离数据库 479
18.8.2 独立的操作日志模块 479
18.9 服务器配置相关安全防护 480
18.9.1 细化数据库权限 480
18.9.2 SSL/HTTPS 480
18.10 其他安全措施 480
18.10.1 防恶意提交 480
18.10.2 跳转令牌 480
18.10.3 重复确认身份 481
18.10.4 防跨网站脚本 481
18.11 回顾与总结 481
第19章 调试与错误处理 482
19.1 编码习惯 482
19.1.1 代码格式化 482
19.1.2 命名 483
19.1.3 其他 484
19.1.4 代码注释 484
19.1.5 版本跟踪 486
19.2 发现错误 486
19.2.1 编译错误 486
19.2.2 断点调试 487
19.2.3 跟踪应用程序 491
19.3 处理错误 492
19.3.1 异常概述 492
19.3.2 捕获和处理异常 493
19.3.3 自定义错误页 495
19.4 回顾与总结 496
第20章 打包与部署 497
20.1 发布网站 497
20.2 打包网站 500
20.2.1 创建Web安装项目 500
20.2.2 Web安装项目的细节 502
20.3 回顾与总结 506
第21章 学成出师——单点登录系统 507
21.1 单点登录的例子 507
21.1.1 单点登录概述 507
21.1.2 单点登录基本思想 507
21.2 实现单点登录 508
21.3 使用令牌增进安全 516
21.4 总结和概述 525
第IV部分 扩 展 篇
第22章 常见的数据访问方式 528
22.1 数据访问概述 528
22.1.1 常见的数据访问方式 528
22.1.2 回顾ADO.NET直接方式 528
22.1.3 回顾强类型DataSet方式 529
22.2 ADO.NET封装方式 530
22.3 从数据访问中解放——ORM方式 531
22.3.1 ORM概述 531
22.3.2 使用NHibernate制作留言簿 531
22.4 ORM的妥协——Sql Map方式 542
22.4.1 Sql Map概述 542
22.4.2 使用IBatisNet制作留言簿 542
22.5 随心所欲——代码生成方式 549
22.5.1 代码生成概述 549
22.5.2 代码生成方案举例 549
22.6 回顾与总结 557
第23章 分布式应用程序 559
23.1 分布式应用程序概述 559
23.2 Web服务 560
23.2.1 创建Web服务 560
23.2.2 HTTP-GET方式的Web服务 564
23.2.3 异步调用Web服务 565
23.3 .NET Remoting 567
23.3.1 第一个.NET Remoting
应用程序 567
23.3.2 Remoting的信道 571
23.3.3 使用配置文件增加灵活性 573
23.3.4 使用接口降低耦合 575
23.3.5 使用Windows服务承载
远程对象 578
23.3.6 异步操作 581
23.4 回顾与总结 582
第24章 分层与构架 583
24.1 分层与构架概述 583
24.2 多层构架 583
24.2.1 多层构架概述 583
24.2.2 使用三层构架重写留言簿 585
24.3 依赖注入框架 592
24.3.1 依赖注入概述 592
24.3.2 使用Spring.NET进行
依赖注入 596
24.4 回顾与总结 598
第25章 学习资源 599
25.1 官方资料 599
25.2 技术博客 599
25.3 技术网站 600
25.4 技术论坛 600
