图书目录

第Ⅰ部分  基 础 篇

第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