运行上述示例输出结果可以发现,编码后的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
获取或设置Cookie的Value
Cookie的Value
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
站长统计
分享到:
相关推荐
开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo
开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo Domain:领域模型 Dao:持久层 Service:服务层 WebSite:表示层 Common:通用类
开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo Domain:领域模型 Dao:持久层 Service:服务层 WebSite:表示层 Common:通用类
ASP.NET MVC+Spring.net+Nhibernate+EasyUI+Jquery开发案例,运用这几个技术开发的项目
NHibernate3.2 官方源代码 + 使用例子 NHibernate3.2 官方源代码 + 使用例子 NHibernate3.2 官方源代码 + 使用例子 NHibernate3.2 官方源代码 + 使用例子 NHibernate3.2 官方源代码 + 使用例子
NHibernate+MVC+JQuery去实现增删改查 京华志&精华志出品 希望大家互相学习,互相进步 支持CSDN 支持微软
ASP.NET MVC2+Spring.net1.3+Nhibernate1.2.1+Jquery完美框架
写了半天这个小DEMO 初次用NHibernate+MVC 写个例子给大家共享下 有些Bug 但是功能实现了 可以重点看代码!对初学者帮助应该很大 自我感觉 呵呵 我的邮箱:13522335680@163.com 可以跟我交流!
asp.net mvc+jquery+Nhibernate 实现数据库增删改 附加sql2008数据库
实现NHibernate+Oracle 与NHibernate+MySql 的连接,以及增删改查的初步使用
上次发NHibernate 4.0.3少上传一个源码,被骂了……这次借着更新4.0.4重新检查了一下,肯定是全的【src+bin+reference】~资料都是英文的,但是不影响阅读。暂时没找到中文的~
NHibernate 4.1.1的源码、开发包以及对应的API文档,API是英文的,中文的目前应该是没有~仅供参考
最近学习NHibernate 网上很多例子都不能运行,亲身实践写了一个 NHibernate实例 分享给大家。 注意:数据库还原后,把数据库连接修改成自己的服务器连接即可运行。
开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo
NHibernate Profiler 2.0 的原版+破解版+破解工具。
NHibernate-2.0.1 + Movies + Sample Source Part1 NHibernate is a port of Hibernate Core for Java to the .NET Framework. It handles persisting plain .NET objects to and from an underlying relational ...
这是一个简单的mvc4+spring.net+nhibernate做的小例子,数据库是MSSQL 2008,在App_Data有数据库文件
实例+说明文档自己配个数据库连接就能跑起来
用户注册Jquery+Nhibernate+Mysql
这是使用了好几个技术实现的一个简单的案例,看名字都就知道了,名字如下:NHibernte+ASP.NET MVC+JQuery实现增删改查