`
icejadelove
  • 浏览: 135082 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

转自 Richard的blog NHibernate和Cuyahoga初体验+jquery插件+笑话

阅读更多


运行上述示例输出结果可以发现,编码后的HTML标注变成了“HTML内容”,这是因为“”变成了“”,“”变成了“”,所以才能在页面中显示HTML标注。
实例14-15:使用URLEncode方法对URL进行编码
就像HTMLEncode方法使客户可以将字符串翻译成可接受的HTML格式一样,Server对象的URLEncode方法可以根据URL规则对字符串进行正确编码。当字符串数据以URL的形式传递到服务器时,在字符串中不允许出现空格,也不允许出现特殊字符。为此,如果希望在发送字符串之前进行URL编码,则可以使用Server. URLEncode方法。
该函数已被重载,语法如下:
对字符串进行URL编码,并返回已编码的字符串。
public string UrlEncode(string);
URL对字符串进行编码,并将结果输出发送到TextWriter输出流。
public void UrlEncode(string, TextWriter);
例如下面例子:
http://www.microsoft.com"))%>
产生如下输出:
http %3A%2F%2Fwww%2Emicrosoft%2Ecom
利用QueryString在不同主页间传递信息时,如果信息带有空格或特殊字符,那么必须进行Encode操作,因为如果不这样做,很可能使得接受信息的那边接受到一些所不期望的奇怪字符串。注意,不要对QueryString的名称及等号进行Encode操作,只需要将其值进行Encode操作就可以了。
进行了Encode操作后,效果如下:
Message=This+Query+String+has+been+URL+ENCODED%2E
用户并不需要考虑对上面的字符串再进行解码,会自动进行这样的处理。例如,假设有这样的脚本:
Request.QueryString("message");
这时,显示结果为:
This Query String has been URL encoded
实例14-16:建立虚拟路径与服务器物理目录间映射
使用MapPath方法可以将指定的相对或虚拟路径映射到服务器上相应的物理目录上。
语法:
public string MapPath(string path);
参数Path表示指定要映射物理目录的相对或虚拟路径。若Path以一个正斜杠(/)或反斜杠(\)开始,则MapPath方法返回路径时将Path视为完整的虚拟路径。若Path不是以斜杠开始,则MapPath方法返回同页面文件中已有的路径相对的路径。这里需要注意的是,MapPath方法不检查返回的路径是否正确或在服务器上是否存在。
对于下列示例,文件data.txt和包含下列脚本的test.aspx文件都位于目录C:\Inetpub\ wwwroot\aspx下。C:\Inetpub\wwwroot目录被设置为服务器的宿主目录。下列示例使用服务器变量PATH_INFO映射当前文件的物理路径。以下脚本:
Server.mappth(Request. ServerVariables("PATH_INFO"));
输出:
c:\inetpub\wwwroot\asp\test.aspx
由于下列示例中的路径参数不是以斜杠字符开始的,所以它们被相对映射到当前目录,此处是目录C:\Inetpub\wwwroot\aspx。以下脚本:
Server.mappath("data.txt");
Server.mappath("aspx/data.txt");
输出:
c:\inetpub\wwwroot\aspx\data.txt
c:\inetpub\wwwroot\aspx\aspx\data.txt
六、 Cookie对象
什么是Cookie呢?Cookie 是一小段文本信息,伴随着用户请求和页面在Web服务器和浏览器之间传递。用户每次访问站点时,Web应用程序都可以读取Cookie包含的信息。
Cookie跟Session、Application类似,也是用来保存相关信息,但Cookie和其他对象的最大不同是,Cookie将信息保存在客户端,而Session和Application是保存在服务器端。也就是说,无论何时用户连接到服务器,Web站点都可以访问cookie信息。这样,既方便用户的使用,也方便了网站对用户的管理。
ASP.NET包含两个内部Cookie集合。通过HttpRequest的Cookies集合访问的集合包含通过Cookie标头从客户端传送到服务器的Cookie。通过HttpResponse的Cookies集合访问的集合包含一些新Cookie,这些Cookie在服务器上创建并以Set-Cookie标头的形式传输到客户端。
Cookie不是Page类的子类,所以在使用方法上跟Seesion和Application不同。
使用Cookie的优点:
— 可配置到期规则。Cookie 可以在浏览器会话结束时到期,或者可以在客户端计算机上无限期存在,这取决于客户端的到期规则。
— 不需要任何服务器资源。Cookie存储在客户端并在发送后由服务器读取。
— 简单性。Cookie是一种基于文本的轻量结构,包含简单的键值对。
— 数据持久性。虽然客户端计算机上Cookie的持续时间取决于客户端上的Cookie过期处理和用户干预,Cookie通常是客户端上持续时间最长的数据保留形式。
使用Cookie的缺点:
— 大小受到限制。大多数浏览器对Cookie的大小有4096字节的限制,尽管在当今新的浏览器和客户端设备版本中,支持8192字节的Cookie大小已越发常见。
— 用户配置为禁用。有些用户禁用了浏览器或客户端设备接收Cookie的能力,因此限制了这一功能。
— 潜在的安全风险。Cookie可能会被篡改。用户可能会操纵其计算机上的Cookie,这意味着会对安全性造成潜在风险,或者导致依赖于Cookie的应用程序失败。另外,虽然Cookie只能将它们发送到客户端的域访问,历史上黑客已经发现从用户计算机上的其他域访问Cookie的方法。可以手动加密和解密Cookie,但这需要额外的编码,并且因为加密和解密需要耗费一定的时间而影响应用程序的性能。
1.Cookie对象的属性
Cookie对象的属性如表14-11所示:
表14-11 Cookie对象的属性

Name
获取或设置Cookie的名称
Cookie的名称

Value
获取或设置CookieValue
CookieValue

Expires
获取或设置Cookie的过期日期和时间
作为DateTime实例的Cookie过期日期和时间

Version
获取或设置此Cookie符合的HTTP状态维护版本
Cookie符合的HTTP状态维护版本

2.Cookie对象的方法
Cookie对象的方法如表11-12所示:
表14-12 Cookie对象的方法

Add
新增一个Cookie变量

Clear
清除Cookie集合内的变量

Get
通过变量名或索引得到Cookie的变量值

GetKey
以索引值来获取Cookie的变量名称

Remove
通过Cookie变量名来删除Cookie变量

实例14-17:设置Cookie
下面的示例将创建名为“LastVisit”的新Cookie,将该Cookie的值设置为当前日期和时间,并将其添加到当前Cookie集合中,所有Cookie均通过HTTP输出流在Set-Cookie头中发送到客户端。
HttpCookie MyCookie = new HttpCookie("LastVisit");
DateTime now = DateTime.Now;
MyCookie.Value = now.ToString();
MyCookie.Expires = now.AddHours(1);
Response.Cookies.Add(MyCookie);
运行上面例子,将会在用户机器的Cookies目录下建立如下内容的文本文件:
mycookie
LastVisit
尽管上面的这个例子很简单,但可以从中扩展许多富有创造性的应用程序。
实例14-18:获取客户端发送的Cookie信息
下面的示例是依次通过客户端发送的所有Cookie,并将每个Cookie的名称、过期日期、安全参数和值发送到HTTP输出。
int loop1, loop2;
HttpCookieCollection MyCookieColl;
HttpCookie MyCookie;
MyCookieColl = Request.Cookies;
//把所有的cookie名放到一个字符数组中
String[] arr1 = MyCookieColl.AllKeys;
//用cookie名获取单个cookie对象
for (loop1 = 0; loop1 {
MyCookie = MyCookieColl[arr1[loop1]];
Response.Write("Cookie: " + MyCookie.Name + "
");
Response.Write("Expires: " + MyCookie.Expires + "
");
Response.Write ("Secure:" + MyCookie.Secure + "
");
//将单个cookie的值放入一个对象数组
String[] arr2 = MyCookie.Values.AllKeys;
//遍历cookie值集合打印所有值
for (loop2 = 0; loop2 {
Response.Write("Value" + loop2 + ": " + arr2[loop2] + "
");
}
七、 Cache对象
对于每个应用程序域均创建该类的一个实例,并且只要对应的应用程序域保持活动,该实例便保持有效。有关此类实例的信息通过HttpContext对象的Cache属性或Page对象的Cache属性来提供。
1.Cache对象的属性
Cache对象的属性如表14-13所示:
表14-13 Cache对象的属性

Count
获取存储在缓存中的项数。当监视应用程序性能或使用ASP.NET跟踪功能时,此属性可能非常有用
存储在缓存中的项数

Item
获取或设置指定键处的缓存项
表示缓存项的键的String对象

2.Cache对象的方法
Cache对象的方法如表14-14所示:
表14-14 Cache对象的属性

Add
将指定项添加到 Cache 对象,该对象具有依赖项、过期和优先级策略,以及一个委托(可用于在从 Cache 移除插入项时通知应用程序)

Get
Cache 对象检索指定项

Remove
从应用程序的 Cache 对象移除指定项

Insert
Cache对象插入项。使用此方法的某一版本改写具有相同key参数的现有Cache

实例14-19:检索为ASP.NET文本框服务器控件缓存的值
Get方法可以从Cache对象检索指定项,其唯一的参数key表示要检索的缓存项的标识符。该方法返回检索到的缓存项,未找到该键时为空引用。
下面的示例展示如何检索为ASP.NET文本框服务器控件缓存的值。
Cache.Get("MyTextBox.Value");
实例14-20:移除Cache对象
Remove方法可以从应用程序的Cache对象移除指定项,其唯一的参数key表示要移除的缓存项的String标识符。该方法返回从Cache移除的项。如果未找到键参数中的值,则返回空引用。
下面的示例创建一个RemoveItemFromCache函数。调用此函数时,它使用Item属性检查缓存中是否包含与Key1键值相关的对象。如果包含,则调用Remove方法来移除该对象。
public void RemoveItemFromCache(Object sender, EventArgs e)
{
if(Cache["Key1"] != null)
Cache.Remove("Key1");
}

posted @ 2007-12-13 10:53 Richard Sun 阅读(87) | 评论 (0) | 编辑

仅列出标题

共4页: 上一页 1 2 3 4 下一页

Copyright @ Richard Sun
Powered by: .Text and ASP.NET
Theme by: .NET Monster

站长统计

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics