asp.net六大内置对象

1.Request–请求对象
1.1通过该对象可以获取浏览器发送的请求数据中的信息:
a.url传参
b.Form表单提交
上面两种请求数据可以通过Request[变量名]来获取(存在返回string,不存在返回null)
1.2通过该对象可以获取客户端的信息
1.3常用的数据集合:QueryString Form Cookies ServerVariables ClientCertificate
Browser.
事例:
//在系统运行过程中,在打印日志和记录访客详细信息的时候,可能会用到下面的信息
Request.PhysicalApplicationPath;//获取当前请求的物理路径 E:\MyProject\unfinished\MVC5
Request.Path;//获取当前请求的虚拟路径 /home/index
Request.Url.Authority;//获取DNS主机名或者ip+端口号 如:localhost:4035
Request.Url.AbsoluteUri;//
Request.Url.ToString();//获取当前请求的URL
Request.UserHostName;//获取客户端的DNS名称
Request.UserHostAddress;//获取客户端的主机地址
补充:物理路径又包括绝对路径和相对路径

2.Response–响应对象:
服务器向浏览器发送响应数据流信息
2.1Response对象常用的属性:
Response.ContentEncoding; //输出流的编码 utf-8或者 GBK
Response.ContentType;//输出流的内容类型 html(text/html)
2.2Response对象常用的方法:
Response.Write(“hello,tom”); //直接在页面上输出内容
Response.Redirect(“http://www.163.com”);//重定向到另一个页面
Response.Clear();//清除缓冲区中的所有内容
Response.Flush();//向客户端发送当前所有缓冲的输出(即使缓冲区还没有填充满)
Resopnse.End();//将当前所有缓冲的输出发送到客户端,停止该页的执行(事例:
Response.Write(“hello,tom”); Resopnse.End(); Response.Write(“hello,tim”);
向客户端输出hello,tom之后就不在输出hello,tim )

HTTP协议是无状态,无连接的:
无状态是指:每次的http请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的
asp.net状态保持:
a.Session 存储于服务器
b.Cookie 存储于客户端
c.Application 应用程序级别的状态保持
3.Session–提供一种把用户信息保存在用户内存中的机制,它能够存储任何数据类型包括自定义对象, 每个客户端都拥有一个自己的session,一个用户不能访问和修改其他用户的session,用户在应用程序之间进行页面跳转Session将不会丢失.会在整个会话期间存在下去.
3.1.服务器是如何找到一个用户(浏览器)拥有哪个Session?
3.1.Session存取数据
存入数据: Session[“SessionName”]=变量,常量,字符串,表达式或者表达式
读取Session:变量=Session[“SessionName”].ToString();
3.2.Session的属性和方法
SessionID–存储用户的SessionID
Timeout–Session的有效时间
Abandon() --清除Session对象
Clear()–清除键值对
补充:在服务器端有一个session池用于存储每个用户的session数据,为了区分给每个存储单元加一个sessionid,根据这个sessionid来区别不同的用户
4.Cookie–服务器放在客户端硬盘上的非常小的文本文件
4.1.创建Cookie
使用Response对象的Cookies属性来新增Cookie,新增Cookie后不要忘记设置Cookie的Expires属性 (如果不设置Expires属性,那么该cookie的生命周期在关闭浏览器时就终止)
HttpCookie httpCookie = new HttpCookie(“userName”,“song”);
httpCookie.Expires = DateTime.Now.AddDays(5);
Response.Cookies.Add(httpCookie);
4.2读取Cookie
使用Request对象的Cookies集合获取指定的Cookie值
string userName=Request.Cookies[“userName”].Value;
4.3修改Cookie
Response.Cookies[“userName”].Value=“liu”;
Response.Cookies[“userName”].Expires = DateTime.Now.AddYears(1);
4.4删除Cookie
删除Cookie就是把这个Cookie的过期时间更改成一个过去的时间.
Response.Cookies[“userName”].Expires = DateTime.Now.AddYears(-1);
补充:a.网站的任何一个网页都可以获取该网站存储在浏览器的Cookie
b.每次浏览器向Web站点发起请求的时候都必须将有关该站点的所有Cookie都带上提交至该服务器,这是强制性的. 之后再将Web站点返回的Cookie更新保存至浏览器硬盘
c.cookie和浏览器有关,不同的浏览器访问同一个web站点,他们各自有各自的Cookie
d.cookie的缺点: cookie尺寸有限制(一般是几K到几百K)所以不能存储过多的信息;cookie信息可以被他人访问所以不能存储机密信息; cookie不能跨浏览器访问.
5.Application–Applacation是应用程序级别的对象,用于保存所有用户的公共信息,用于描述整个应用程序
5.1.Application用途: 上线人数,在线名单…
5.2.Application生命周期: 创建成功后整个应用程序都可以使用该对象,除非应用程序关闭,否则该对象一直存储在内存中
5.3.Application对象的应用:
使用Application对象保存信息:Application[“name”]=value;
获取Application对象信息: variableName=Application[“name”];
加锁: Application.Lock(); 解锁: Application.UnLock();
补充:为甚么加锁解锁?答: 是为了线程安全,因为不同用户对同一个应用程序的访问是异步多线程,所以为了防止不同用户对同一个Application对象同时访问并修改时造成数据异常而加锁,加锁后用户对Application对象的访问是一个接着一个进行的,而不是同时进行,这样就可以避免不同用户对同一个Application对象同时访问并修改时造成的数据异常.
Application.Lock();
Application[“count”] = (int)Application[“count”] + 1;
Application.UnLock();
6.Server–服务器对象,提供对服务器上的方法和属性进行访问
6.1.Server属性:
MachineName:获取服务器电脑的名称
ScriptTimeout:设置脚本程序执行的时间
6.2.Server方法:
a.MapPath(): 将虚拟路径转换为物理文件路径
b.Execute(“path”)和Transfer(“path”):执行另一个页面
Execute(“path”):使用Server对象的Execute方法可以在当前页面中执行同一Web服务器上的另一页面,当该页面执行完毕后,控制流程将重新返回到原页面Server.Execute方法调用的位置。因此,通过Server.Execute方法可以将一个页面的输出结果插入到另一个页面中。
Transfer(“path”): 使用Server对象的Transfer方法可以终止当前页的执行,并将执行流程转入同一Web服务器的另一个页面。在页面跳转过程中,Request等对象保存的信息不变,这意味着从页面A跳转到页面B后可以继续使用页面A中提交的数据。此外,由于Server.Transfer方法调用是在服务器端进行的,客户端浏览器并不知道服务器端已经执行了一次页面跳转,所以实现页面跳转后浏览器地址栏仍将保存页面A的URL信息.
c.HtmlEncode()和HtmlDecode():将文本编码成可以在浏览器中正确浏览的格式
在某些情况下,可能需要在网页中显示段落标记"

”之类的内容,而不希望浏览器将其中的

解释为HTML语言中的段落标记, 应当调用Server对象的HtmlEncode方法对要在浏览器中显示的字符串进行编码,示例:
Response.Write(Server.HtmlEncode(“粗体标记为:粗体文字”));//HtmlEncode对字符串进行HTML编码并返回编码后的字符串,所以这个原样输出;
Response.Write(Server.HtmlDecode(“粗体标记为:粗体文字”));//HtmlDecode对字符串进行HTML解码并返回解码后的字符串,所以这个后面加粗
d.UrlEncode()和UrlDecode():URL编码和解码:
有时候,在传递参数时,是将数据附在网址后面传递,但是如果遇到一些如“#”等特殊字符的时候,服务器就会读不到这些字符后面的参数。所以需要在传递特殊字符的时候,需先将要传递的内容先以UrlEncode编码,这样才可以保证所传递的值可以被服务器顺利读到。另外有些服务器对中文不能很好的支持,这时候也需要利用UrlEncode对其进行编码,以被服务器所识别。
补充:
虚拟路径:是服务器映射出来的路径
物理路径:实际磁盘中的路径

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值