运行上述示例输出结果可以发现,编码后的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 Domain:领域模型 Dao:持久层 Service:服务层 WebSite:表示层 Common:通用类
开源框架完美组合之Spring.NET + NHibernate + ASP.NET MVC + jQuery + easyUI 中英文双语言小型企业网站Demo Domain:领域模型 Dao:持久层 Service:服务层 WebSite:表示层 Common:通用类
综上所述,这个项目是一个综合性的企业网站演示,利用了Spring.NET、NHibernate、ASP.NET MVC、jQuery 和 easyUI 这些技术栈,展示了如何将开源框架整合在一起,构建一个中英文双语的小型企业网站。通过学习这个项目...
在IT行业中,构建高效、可扩展的Web应用是至关重要的,而"ASP.NET MVC+Spring.NET+NHibernate+EasyUI+JQuery"这个组合提供了一种强大的解决方案。让我们深入探讨一下这些技术及其在项目开发中的作用。 首先,ASP...
NHibernate3.2 官方源代码 + 使用例子 NHibernate3.2 官方源代码 + 使用例子 NHibernate3.2 官方源代码 + 使用例子 NHibernate3.2 官方源代码 + 使用例子 NHibernate3.2 官方源代码 + 使用例子
在IT行业中,构建Web应用程序是常见的任务,而“NHibernate+MVC+JQuery去实现增删改查”是一个典型的组合,用于构建高效且交互性强的数据库驱动的应用。这一技术栈涉及了C#编程语言、ASP.NET框架、SQL数据库管理、...
写了半天这个小DEMO 初次用NHibernate+MVC 写个例子给大家共享下 有些Bug 但是功能实现了 可以重点看代码!对初学者帮助应该很大 自我感觉 呵呵 我的邮箱:13522335680@163.com 可以跟我交流!
NHibernate 是一个强大的开源对象关系映射(ORM)框架,用于.NET环境,它极大地简化了数据库操作和数据访问层的编码工作。版本4.1.1 提供了对.NET Framework的稳定支持,优化了性能,并引入了一些新特性。在这个...
本项目“asp.net mvc+jquery+Nhibernate 实现数据库增删改”就是一个典型的应用实例,它结合了.NET框架中的ASP.NET MVC、jQuery和Nhibernate三个核心技术,为开发高效、易维护的Web应用提供了有力支持。 **ASP.NET ...
NHibernate 是一个强大的对象关系映射(ORM)框架,它允许开发者在.NET环境中使用面向对象的方式操作数据库。在这个“NHibernate实例 (SQL2008+VS2008)”中,我们将深入探讨如何在Visual Studio 2008中集成...
本案例"NHibernate+ASP.NET MVC+JQuery实现增删改查"就是这样一个典型的组合,结合了ORM(对象关系映射)工具NHibernate、MVC(模型-视图-控制器)设计模式和前端交互库jQuery,以实现数据库操作的基本功能。...
上次发NHibernate 4.0.3少上传一个源码,被骂了……这次借着更新4.0.4重新检查了一下,肯定是全的【src+bin+reference】~资料都是英文的,但是不影响阅读。暂时没找到中文的~
标题 "spring.net+nhibernate+mvc4" 暗示了这个项目是关于使用 .NET 框架中的 Spring.NET、NHibernate 和 MVC4(ASP.NET MVC 4)技术来构建一个应用程序的实例。Spring.NET 是 .NET 平台上的轻量级依赖注入框架,它...
NHibernate Profiler 2.0 的原版+破解版+破解工具。
这个小例子展示了如何整合这三种技术来创建一个基于MVC架构的.NET应用程序,利用Spring.NET提供依赖注入(DI)和面向方面的编程(AOP),以及NHibernate作为持久层框架处理数据库交互。以下是关于这些技术及其整合的...
综上所述,"用户注册Jquery+Nhibernate+Mysql"项目利用Jquery处理前端逻辑,Nhibernate作为ORM框架简化数据库操作,而Mysql作为可靠的数据存储。这三者的结合,构建了一个高效、安全的用户注册流程,为Web应用提供了...
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 ...
标题 "nhibernate+spring.net+mvc3.0项目" 暗示这是一个使用NHibernate、Spring.NET和ASP.NET MVC 3.0框架构建的实际项目。这些技术都是开发高效、可扩展的企业级应用程序的常用工具。让我们逐一深入探讨它们。 **...
NHibernate 是一个强大的对象关系映射(ORM)框架,它允许开发者在.NET环境中使用SQL数据库,如Oracle和MySQL,而不必直接编写SQL语句。这个"NHibernate+Oracle NHibernate+MySql Demo"是一个示例项目,展示了如何...