Winner.Net@2007
专注与.Net技术
博客园
社区
首页
新随笔
联系
管理
订阅
随笔- 281 文章- 3 评论- 81
ASP应用程序与会话
第3章 ASP应用程序与会话
在前面的章节中介绍了ASP提供的访问一个客户请求和产生响应的方法,本章将讨论ASP的另两个对象。就是Application和 Session对象。这两个对象不是直接地与请求和响应的管理有关,而是更多地与ASP网页运行环境的管理相关。
与建立Web站点或Web应用程序有关的共同问题之一,是使用HTTP协议时没有状态。状态提供了与一个指定用户有关的变量值、对象和其他资源,并且应用程序中的任意例程都能使用它;以一种像VB或C++这样的程序设计语言编写一般的基于客户的应用程序时,使用状态可以完成一些相应的工作。然而,Web并不提供这种能力。在本章中,读者将看到为什么和如何避免这个问题。
本章还涉及到一些术语和技术问题。它迄今为止,本书中已经简单地讨论了“Web应用程序”,但没有真正确切地理解或准确定义它们到底是什么。本书也涉及到了“用户会话”,也没有相应的比较完全的描述。前面有意地省略这方面的内容,因为它们与ASP的应用程序和会话密切相关。下面将介绍ASP的Application和Session对象。
本章研究的主要内容:
? Web应用程序是什么,以及它们如何与ASP Application对象相联系。
? ASP如何自动地创建和管理应用程序和会话。
? Application和Session对象提供的功能。
? 如何把Application和Seesion对象放入ASP网页中。
首先研究整个内容的核心问题:状态。
3.1 Web上的状态管理
许多开发人员把应用程序传送到Web之前从来没考虑状态的概念。正如前面说过的,Web是一个无状态的环境。因此应该探讨一下状态是什么,了解能够避免产生问题的方法。
3.1.1状态的准确定义
在单用户程序中,创建一个可执行的应用程序时,例如使用VB建立一个.exe文件,可以声明一个全局(或Public)变量,然后在代码中任何地方可对其进行访问。在应用程序运行的所有时刻,时刻值一直是有效,并且是可访问的。
对于一个传统的客户机/服务器解决方案,例如一个基于客户机的应用程序对一个基于服务器的数据库引擎进行访问的系统,每个客户端建立了一个与服务器和数据库应用程序的连接。这种连接通常是通过验证用户的方法来建立的。
验证过程是典型的识别用户身份的过程,通过一个用户名和口令组合来证明是否为合法的用户。
一旦通过验证,在客户端和基于服务器的应用程序之间就建立了连接,该连接在用户使用该应用程序的所有时间内一直保持有效。当用户注册到酵Windows 2000服务器上时,这一切便会发生。无论何时,管理员使用 “Active Directory Users and Computers”实用程序(单击“Start”菜单的“Administrative Tools”选项中的 “Directory Management”项)都可以观察到活动的用户连接。这个过程在许多系统中都相同,例如Microsoft SQL Server。
这种永久的连接意味着:当用户发送指令或请求到服务器上时,服务器会很容易地识别每个用户。同样服务器的响应或任何其他用户的信息也能直接返回用户。要进一步指出的是服务器可以比较容易地存储与每个客户相关的值和信息,并在需要的时候提供给相应的客户。当然,服务器应用程序能够拥有主全局变量,以便于用户在需要的时候进行访问。
这种识别每个客户端的请求并在内存中保存相关用户的值的能力构成状态。可以认为状态代表应用程序的值、环境以及用户的内部变量,并贯穿于应用程序和用户连接的整个过程。
3.1.2 状态的重要性
如果打算创建与用户进行交互的基于Web站点的应用程序,而不是仅显示独立页面的Web网站,必须能够为每个用户提供独立的状态。这可能只是记住他们的名字,也可能要为每个用户存储对象引用或不同的记录集。如果不能这样做,ASP网页就不能做更多的事情,因为该页面执行完成时,页面中的变量和其他相关资料都破坏了。录用户请求下一个页面时,这个页面提供的所有信息将全部失去。
因此,需要找到一种方法,保存每个访问者的状态。能够存储对所有用户而言的全局值是非常重要。例如,一个Web风格的访问或页面点击计数器,它不为每个用户提供自己的计数器,用户们通常想要看到访问者的总数,而不仅仅是他们自己访问的次数。访问者的数目需要与应用程序级状态一起存储,而不是与用户级状态一起存储。
这不是一个刚出现的问题,自从商用站点占据了Web,就已经存在,甚至更早些。所以已有许多在Web上存储状态的传统的解决方案。Web站点管理员想要了解访问者以前是否曾访问过他们的网站,如果访问过,访问过多少次?还定期访问其他什么网站等。这样可以更好地制定其广告目标。所有这些都要求一种方法来存储有关用户在访问时所产生的网页请求或每次访问间的信息。
3.1.3在Web上创建状态
在页面请求和站点访问之间提供状态常用的方法是通过cookie。我们在前面的章节中已经看到,如何在客户端的计算机中存放相应的值,这些值与每个页面请求一起发送给对此cookie有效的域。通过用ASP检查和更新cookie,在某种程度上能够保持一个状态。可以使用所包含的信息来识别用户,然后把用户连接到一个已存储相应值的集合。
例如,可以检测一个用户请求是否包含一个站点指定的cookie。如果不包含,则为该用户分配一个某种类型的标识,指明一个数量,并存储在带有一个长有效期的cookie中。以后该用户对这个站点的每一次访问,都能够检测到cookie并更新所包含的信息。同时可以收集有关访问的次数和持续时间的数据,并存储在服务器上,以备将来使用。
但是,如果用户转移到另一个计算机,或删除了cookie,或者他们的浏览器拒绝接收发送给他们的cookie,会发生什么事情呢?在这种情况下,不能维持状态,因为下一次不能识别他们现在,Web上有许多cookie,大多数人会接受它们,而不加理会。如果打开浏览器中的“Warn before accepting cookies”选项,接着漫游几个大的站点,你就会明白其中的含意。
1. 匿名访问者与授权的访问者
如果认为cookie是一个有点草率的解决方案,可以使用更直接的方法。许多站点采用的一种方法是,在访问者点击一个站点时,或者点击一个要求验证身份的页面时,弹出一个进行登录的对话框。访问者首先必须进行注册,获得一个某种类型的用户名/口令的组合,才能允许访问相应的站点或页面。
为了证实访问者是一个已知的并且合法的用户,在访问者的计算机上放置的一个cookie,它或者保存注册的详细数据,或者是一把表明已验证过身份的“钥匙(key)”。同时,访问者的详细数据永久地保存在服务器上,准备再次访问时使用。如果访问者的浏览器中有了这样一个cookie,他就可以自由地访问该网站,因为已经验证过了。
如果cookie没有有效期限(Expires),cookie的值在关闭浏览器时自动消失,在下一次访问时必须重新注册和再次验证。当然,如果拒绝接收cookie或删除了cookie,就只能再次得到注册对话框。这样的话,如果不被识别,就不能访问该站点。
通过强制用户就像注册到自己的网络一样注册到Web服务器,Windows 2000整体安全性能为IIS提供更强和更安全的验证功能。但是,这只能与Internet Explorer 3.0和之上版本的浏览器一起工作。IIS也可以使用BASIC验证允许非Microsoft浏览器注册Web服务器。
2. 不再有匿名访问者
在IIS Web服务器上使用ASP时,除非用户离开该站点到另一个网站或者关闭了浏览器,否则能在当前会话中跟踪用户。在本章的后面,将看到如何使用这个功能来标识一个访问者、存储用户的本地信息和提供状态。下面与已经讨论过的解决方案相比较,讨论其工作方式。
ASP和IIS共同提出了一个用户会话的概念,通过ASP Session对象进行交互。在每个访问者第一次访问服务器上的一个ASP 网页时,为他创建一个新的并且独立的会话对象,分配给该会话一个会话标识号,并把包含会话标识符的特殊加密版本的一个cookie发送给客户。
cookie的路径(参看前面的章节有关cookie属性的描述)设置为运行在服务器上的ASP应用程序的根路径。这很可能上缺省的Web网站的根目录(即“/”),但也可能会是另外一个值(稍后会看到)。在cookie中没有提供Expires值,所以当浏览器关闭时,cookie值也就消失。
每当这个用户访问这个ASP网页,ASP都会查找这个cookie。命名为ASPSESSIONIDxxxxxxxx,其中每个x是一个字母字符。从第2章图2-7所示的ServerVariables集合,能够在HTTP报头中看到它。这里高亮地显示ASP cookie,如图3-1所示:
图3-1 显示的cookie值
但是,这个cookie不会出现在 Request.Cookies或Response.Cookies集合中,ASP把它隐藏起来,但仍保存在浏览器上。对于每个ASP网页请求,ASP都要查看该值。这个cookie包含的值,指明了这个用户的会话。因此,相应的Session对象(该对象在内存中已被处理,并且一直包含所有在前一页面请求过程中进行操作的值)的内容可以移交给ASP网页中的脚本。
当然,如前所述,如果客户浏览器不接收或不支持这些cookie,这个处理将失败。在这种情况下,不能创建ASP会话,对这个访问者的状态也不进行自动维护。
3.2 Web应用程序的定义
前面的章节中已经多次使用过Web应用程序(Web Application)术语,所指的既不是一个真正意义上的Web网站,又不是一个传统的应用程序。换句话说,而是认为它是一些Web网页和用来完成某些任务的其他资源的一个集合。它隐含这样一层意思:有一个预定义的路线贯穿于网页之中,用户可做出选择或提供信息使任务能够完成。
例如,一个在线商店,你为了购买货物,进行反复的观察和选择,浏览一系列网页,收集所需要的信息,支付相应的费用,最后发出定单。也可能是一个“软件升级向导”,指导用户完成下载和安装新软件的过程,或者可能是一个基于Intranet的报价单或销售报告的生成工具。
所有这些不同于“标准”的Web网站,一般的Web站点使用一系列菜单或导航栏以预先未定义的路径漫游该站点。但是一个Web应用程序远不只是受控制的导航器。自由地漫游于一个Web网站时,可以进行无状态的和匿名的访问,但Web应用程序一般不接受。
3.2.1 ASP应用程序的定义
上述内容可以认为是术语“Web应用程序”的一个合理的一般定义,但遗憾的是,在谈论有关 “ASP应用”时,仅这些还不够。回答什么是“Web应用”可以是主观的,而回答什么是“ASP应用”则需要从技术上的解释。在ASP中术语“应用程序”有自己特定的含义,在讨论如何实现之前,弄懂这个概念至关重要。
ASP应用程序与两个主要的内容有关:
? 全局范围的规定,具有一个全局可访问的变量存储区域。
? 通过COM+与IIS的集成,可更好地管理组件。
下面讨论这些内容。第二个内容涉及到其他ASP对象,其覆盖范围相应广泛。在下一章研究ASP Server对象时,将对这部分内容进行详细地讨论。
1. 提供Web应用程序的全局范围
ASP提供一个Application对象,基本上与前面讨论的Session对象相当。但是,这是在应用程序层而不是在用户层。换句话说,该对象是全局的,不是对单独用户的,而是对应用程序的所有用户,其作用域不限制为单独用户的访问。这与在一个正常的可执行应用程序中的全局(或Public)变量相同。Application对象可用于在全局环境中存储变量和信息(即状态),该应用程序内的任何ASP网页中运行的脚本都可访问这些值,而不管是哪个访问者发出的请求。
但是,这没有回答主要问题:什么是一个ASP应用程序?为此,需要研究ASP内部的一些情况。
当用户请求一个ASP网页时,IIS通过实例化asp.dll(用来实现ASP)创建一个环境(如第1章所述)。将该页面解释为服务器端脚本,相应的脚本引擎的实例用来执行该脚本。
实例化的asp.dll初如事件启动一个ASP应用程序,创建一个Application对象。然后,为这个用户启动一个会话,并创建单独的Session对象。当更多的会话启动时,这个Application对象保留在作用域中(即已经实例化和可用)。一旦最后保持活动的会话结束,该应用程序就结束,并取消相应的Application对象。
(1) 缺省的ASP应用
Windows 2000在安装IIS和ASP时,创建一个缺省的Web站点。它被配置成一个ASP应用程序,涉及到在Properties对话框中针对站点根目录文件夹(缺省为C:InetpubWWWRoot)的一些设置。图3-2所示是缺省Web站点的Properties对话框的屏幕。
图3-2 缺省Web网站的Properties对话框
涉及到ASP应用程序的文件之一是global.asa。这个文件用于定制应用程序行为的方式。放置在应用程序的根目录下,可用于该目录下的所有子目录。因此,如果它放置在整个Web站点的根目录下,则定义整个网站作为缺省的ASP应用程序的一部分。
在本章后面有关应用程序和会话事件的部分中,将看到这个文件及其使用方法。
(2) ASP虚拟应用程序
如同在设置过程中创建缺省的应用程序一样,可以在该Web网站的任何子目录中创建属于自己的ASP虚拟应用程序。这个应用程序包含作为“应用程序目录”而定义的目录中所有的子目录。并且,这个目录和子文件夹也都是缺省应用程序的一部分,共享由缺省的Application对象创建的全局空间。
事实上,在缺省的应用程序中存储的所有变量在子目录中的应用程序中也都是可用的。然而,如果该子目录应用程序中的一个ASP网页把一个值写入Application对象,而Application对象与缺省(根)应用程序中已存在的一个值有相同的名字,那么,原先的值在子目录应用程序中就不能再用。但是在其他的应用程序或ASP网页中,将保留原有的值,因为根目录的应用程序不能访问子目录应用中的值。
从一个子程序或函数的变量的角度考虑这个问题。如果定义一个变量intMyValue为Public或全局的变量,可以从任何的子程序或函数内部访问该变量。但是,如果又声明一个具有相同名字的局部变量,并在该子程序或函数内对该变量进行引用,则得到此变量的局部值。不能再访问原先的值。当子程序或函数结束,局部值被撤消,全局变量原有的值仍然保留着:
Public intMyValue = 42
Function DoSomething()
Response.Write intMyValue ‘Gives 42 from global variable
Dim intMyValue
IntMyValue = 17
Response.Write intMyValue ‘Gives 17 from new local variable,but
; ‘the global value of MyValue is still 42
End Function
(3) 创建自己的ASP虚拟应用程序
为了建立一个新的虚拟应用程序,使用Internet Services Manager应用程序或具有相同功能的HTML Web Manager网页。在 Internet Services Manager中,在要创建的虚拟应用程序的目录上单击右键,并选择New,接着选择Virtual Directory,屏幕如图3-3所示:
图3-3 创建ASP虚拟应用程序的屏幕
这个操作启动New Virtual Directory Wizard,该向导的开始屏幕提供有关向导的操作信息。单击Next,在第二页中键入新的虚拟应用程序的名字(或别名)。这个名字与Internet Services Manager中选择的目录的路径联合起来,将成为该应用程序的URL。屏幕如图3-4所示:
图3-4 New Virtual Directory Wizard的屏幕
为了把一个现有的目录转换为与该目录具有相同名字的一个应用程序,选择包含想要转换的目录,并在向导的Virtual Directory Alias页中使用该目录名。例如把已有的test目录转换为一个虚拟应用程序,应该在Internet Services Manager中选择Default Web Site条目,并提供一个别名“test”。
再单击Next,指定包含该应用程序的内容(页面)的路径。单击Browser选择一个已有目录。这个目录是新的虚拟应用指向的目录。屏幕如图3-5所示:
图3-5 指定路径时的屏幕
单击Next打开Access Permissions页,选择给予这个应用程序的所有用户的权限。缺省值是Read和Run Scripts,对大多数用户而言是适合的。屏幕如图3-6所示:
图3-6 设置用户许可权限时的屏幕
如果想编写用户可直接执行的、定制的编译的CGI应用程序,只选择“Execute”:例如,用户通过在请求的URL中指定相应名字的方法执行的一个.exe文件,像“http://mysite.com/.../Test Application/create_user.exe?user=Jjones”。
单击Next,向导创建虚拟应用程序。在图3-7所示的屏幕中,可在左边的列表栏中看到带有一个包含一些填充物的打开的小盒子图标。
图3-7 虚拟应用程序创建完成后的屏幕
如果现在用右键单击新的应用程序并选择Properties,可以看到向导已经选择的设置。在这里可根据需要修改访问权限、 “Local Path”和“Application Settings”。同时会看到一个Remove按钮,可以用来删除该虚拟应用程序,如图3-8所示:
图3-8 虚拟应用程序属性设置的屏幕
posted @ 2006-03-01 10:07
Winner.Net(2007)
阅读(70)
评论(0)
编辑
收藏
所属分类:
asp/.net
新用户注册
刷新评论列表
标题
姓名
主页
Email
(博主才能看到)
验证码
*
看不清,换一张
[
登录
][
注册
]
内容(请不要发表任何与政治相关的内容)
网站首页
新闻频道
社区
小组
博问
网摘
闪存
找找看
Remember Me?
登录
使用高级评论
新用户注册
返回页首
恢复上次提交
[使用Ctrl+Enter键可以直接提交]
"五向定位"职业成长路线公开课(上海、南京、大连)
Google站内搜索
相关文章:
学习asp.net比较完整的流程
ASP.Net中控件的EnableViewState属性
ASP.NET AJAX入门系列
解决explorer.exe 应用程序出错 问题
asp较 asp.net有哪些改进的地方.
Asp.net ajax 版本问题
asp.net 连接 Access
建议博问中增加ASP.NET MVC分类
相关链接:
所属分类的其他文章:
(转)在C#中动态编译类
灵活定义和处理SOAP头消息
Convert.ToInt32与Int.Parse、Int的区别
理解SQL Server系统表sysobjects (转)
如何更改下传文件名!!!
怎样用C#实现完整文档打印功能
股票中的名词解释
常用的一些正则表达式
获取客户端网卡MAC地址和IP地址的几种方法(一)
WebService获取服务端硬件信息和客户端IP,MAC,浏览器信息,所在城市-
最新IT新闻:
Facebook创始人:信息共享或存摩尔定律
微软承认Vista用户账户控制功能有问题
资本寒冬侵袭中国视频网站 营销春天或不远
金融风暴波及全球创业板 中国概念股难独善其身
携程范敏:CEO从接发传真做起
公告
<
2006年3月
>
日
一
二
三
四
五
六
26
27
28
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
与我联系
发短消息
搜索
常用链接
我的随笔
我的空间
我的短信
我的评论
更多链接
我的参与
我的新闻
最新评论
我的标签
留言簿
给我留言
查看留言
我参加的小组
博客园上海俱乐部
设计模式
ASP.NET
Ext 2.0
随笔分类
(215)
asp/.net(99)
(rss)
database(18)
(rss)
DocNet2.0(23)
(rss)
javascript(41)
(rss)
wap(1)
(rss)
WEB2.0(15)
(rss)
xml(5)
(rss)
系统大全(13)
(rss)
随笔档案
(280)
2008年9月 (4)
2008年8月 (7)
2008年7月 (24)
2008年6月 (4)
2008年5月 (5)
2008年3月 (6)
2008年2月 (1)
2008年1月 (8)
2007年12月 (3)
2007年9月 (4)
2007年8月 (5)
2007年7月 (7)
2007年6月 (1)
2007年5月 (18)
2007年4月 (6)
2007年3月 (6)
2007年2月 (22)
2007年1月 (32)
2006年12月 (35)
2006年8月 (1)
2006年7月 (2)
2006年6月 (7)
2006年5月 (5)
2006年4月 (13)
2006年3月 (49)
2006年2月 (5)
文章分类
(3)
asp/.net(2)
(rss)
DataBase
(rss)
javascript(1)
(rss)
wap
(rss)
web2.0
(rss)
xml
(rss)
最新随笔
1. Ext.extend()的运用
2. Ajax中国网页特效演示,RGB颜色转换
3. JS正则表达式详解 转
4. javascript小技巧(转)
5. 《ExtJS2.0实用简明教程》之与服务器交互 extjs Ext.Ajax.request({}) params:
6. form-grid 添删改
7. Ext让人惊喜的data.srtoe的loadData
8. jquer学习
9. Ext2.0的通用grid包括(增、删、改、查、导出excel)
10. ExtJs 窗体集 FormSet (WEBFormSet)
11. Ext 动态添加grid 列数
12. javascript内存泄漏
13. 如何封装JS和CSS文件封装为服务器端控件---ASP.NET 2.0
14. CSS Ext中FormPanel面板及Form控件横排测试(CSS)
15. Ext FormPanel布局 (一行显示两对控件元素)
16. 对象属性很多 反射的机制 拷贝对象
17. 生成用户界面
18. 将数据加载的form里面了
19. ExtJs WebService Json序列化(扩展JavaScriptSerializer类)收藏
20. JavaScript 和 .NET 中的 JavaScript Object Notation (JSON) 简介
21. [Ext]2.0探索(七)Grid使用介绍
22. 在C#如何遍历一个对象的所有属性
23. 动态加载JS文件
24. Ext2:使用xml构建Ext menu菜单
25. EXT 中的Grid实例
26. ext使用ajax
27. grid中的两个store 相等
28. 转 C#生成JSON数据格式的函数
29. Ext中apply及applyIf方法的应用
30. Ext.data-GroupingStore/JsonStore/SimpleStore
31. Ext.data.Store
32. Ext中的get、getDom、getCmp、getBody、getDoc的区别
33. extjs简单菜单应用
34. ExtJS入门之三 查询
35. xtype:"combo" 动态加载
36. JS//键盘KEYDOWN事件
37. 转 Using log4net,
38. 日志记录组件[Log4net]详细介绍(转)
39. C#日志工具汇总
40. MSBuild 强在功能 (C#调用 命令行工具)
最新评论
1. re: Ext2.0的通用grid包括(增、删、改、查、导出excel)
请问后台导出EXCEL的代码呢? (游客)
2. re: Ext2.0的通用grid包括(增、删、改、查、导出excel)
您好,正好研究这方面的内容。博主的通用Grid能有一个完整的调用例子么,谢谢了 (FlyFoxs)
3. re: XSLT教程 比较全的
大侠,请问能公开下这份xslt的英文出自哪份文档吗?相当的感谢 (Kay)
阅读排行榜
1. etElementByID getElementsByName getElementsByTagName的区别和总结 +js+Mxl+xmlhttp(7793)
2. javaScript中URL编码转换,escape() encodeURI() encodeURIComponent(3326)
3. 大型软件公司.net面试题!一定得看(附答案)(3266)
4. web开发(2434)
5. 公司股权转让协议(1850)
6. oa数据库设计(1620)
7. 学习笔记(1401)
8. crystal report (asp调用水晶报表实例)(1349)
9. 三级连动的下拉框(数据库版)--吐血推荐(1268)
10. 导入Excel电子表格数据到SQLSever数据库的另一种方法(1210)
11. (企业公司)网站开发方案(1064)
12. asp导出excel(1029)
13. xForm应用开发手册(961)
14. WebService获取服务端硬件信息和客户端IP,MAC,浏览器信息,所在城市- (856)
15. NetBox Asp Web服务器 (839)
16. xx局改造方案建议书 一套网站架构完整方案[转贴] (833)
17. Sql Server安装挂起的解决办法(813)
18. SqlConnection,SqlCommand,SqldataReader的用法总结:(796)
19. asp excel sql 关系大总结(795)
20. Ext2.0的通用grid包括(增、删、改、查、导出excel)(739)
21. asp分页代码(720)
22. 存储过程与函数的区别(716)
23. C#常见面视题(附答案) (684)
24. ASP+JS三级连动下拉框(682)
25. ASP.NET单点登录(代码) (671)
26. 获取客户端网卡MAC地址和IP地址的几种方法(一)(667)
27. asp发消息并代多个附件上传(多对多关系)(666)
28. Asp.net中实现同一用户名不能同时登陆(单点登陆)(662)
29. miniasp (yes encode)(657)
30. MDX 查询的基本语法(649)
31. XSLT教程 比较全的(649)
32. DocNet问题集(629)
33. 上海万千文化传播有限公司(网站项目策划书)(611)
34. ASP.Net 2.0 发送邮件的代码 (604)
35. VS2003.VS2005快捷键大全 (差别不大)(595)
36. 东软集团有限公司C#编程规范v2.0(564)
37. 导入Excel电子表格数据到SQL Sever数据库(561)
38. 正确地做事与做正确的事同样重要----一位软件工程师的6年总结 转载(559)
39. 最亲密接触Dhtml&JScript开发细节(556)
40. 根据rpt文件打印报表 (541)
评论排行榜
1. etElementByID getElementsByName getElementsByTagName的区别和总结 +js+Mxl+xmlhttp(6)
2. WebService获取服务端硬件信息和客户端IP,MAC,浏览器信息,所在城市- (5)
3. javaScript中URL编码转换,escape() encodeURI() encodeURIComponent(3)
4. crystal report (asp调用水晶报表实例)(3)
5. Sql Server安装挂起的解决办法(3)
6. 正确地做事与做正确的事同样重要----一位软件工程师的6年总结 转载(3)
7. VS2003.VS2005快捷键大全 (差别不大)(2)
8. 建立Microsoft SQL Server 2005数据仓库 (2)
9. 泛微OA中的显示ajax技术, CreateHtml 创建调用asp文件无刷新(2)
10. css里可以加表达式 :expression(2)
11. asp发消息并代多个附件上传(多对多关系)(2)
12. 常用的一些正则表达式 (2)
13. Ext2.0的通用grid包括(增、删、改、查、导出excel)(2)
14. Asp.net中实现同一用户名不能同时登陆(单点登陆)(1)
15. XSLT教程 比较全的(1)
16. [网站运营随想之三]厕所的核心竞争力(1)
17. ASP.NET 2.0的编译行为 (1)
18. 也说new (1)
19. 学习笔记(1)
20. .NET专区-用ASP.Net获取客户端网卡的MAC(1)
21. ASP.NET(C#)获取客户端的网卡MAC代码(1)
22. 在asp.net 中实现单点登录(1)
23. 根据rpt文件打印报表 (1)
24. C#枚举系统安装的所有打印机 (1)
25. 如何更改下传文件名!!!(1)
26. 用javascript 禁止右键,禁止复制,禁止粘贴(1)
27. 用Ajax读取XML格式的数据(1)
28. asp流下载(Stream)(1)
29. 三级连动的下拉框(数据库版)--吐血推荐(1)
30. asp excel sql 关系大总结(1)
31. oa数据库设计(1)
32. 实现小数据量和海量数据的通用分页显示存储过程(1)
33. DocNet问题集(1)
34. 外企面试官最爱提的10个问题(附答案) (1)
35. Web Services实现上传和下载文件(1)
36. asp生成htm文件。用xmlhttp得到源代码。然后用steam流打开保存源代码(1)
37. 可输入的下拉框(1)
38. 存储过程与函数的区别(1)
39. 是Attribute,还是Property(1)
40. 谈谈C#中的三个关键词new , virtual , override (1)
60天内阅读排行
1. Ext2.0的通用grid包括(增、删、改、查、导出excel)(739)
2. 《ExtJS2.0实用简明教程》之与服务器交互 extjs Ext.Ajax.request({}) params:(301)
3. ExtJs 窗体集 FormSet (WEBFormSet)(173)
4. Ext让人惊喜的data.srtoe的loadData(83)
5. form-grid 添删改(66)
6. JS正则表达式详解 转(52)
7. Ajax中国网页特效演示,RGB颜色转换(52)
8. jquer学习(50)
9. javascript小技巧(转)(41)
10. Ext.extend()的运用(19)