asp.net为了方便用户使用提供了几个不用实例化就可以直接使用的对象,我们大家都称之为内置对象,其实严格的讲asp.net没有内置对象的说法,借用了JSP的说法才成为内置对象,其实是page类的属性(大家可以通过转到定义发现,Cookie不是哦);常用的内置对象有:response,request,application,server,cookie,session;
Request
获取请求的页的 System.Web.HttpRequest 对象。
常用属性:
属性名 | 值类型 | 说明 |
---|---|---|
Application | String | 获取请求资源在网站上的跟路径 |
ContentEncoding | Encoding | 设置请求对象编码 |
Cookies | HttpCookieCollection | 发送到服务器Cookie的集合 |
QueryString | NameVauleCollection | 获取请求的字符串集合 |
UrlReferrer | Uri | 获取由哪个URL跳转到当前页 |
Response
获取与该 System.Web.UI.Page 对象关联的 System.Web.HttpResponse 对象。 该对象使您得以将 HTTP 响应数据发送到客户端,并包含有关该响应的信息;
通俗的说就是每次客户端发出一个请求,服务器就会用一个响应对象来处理这个请求,处理完之后服务器就会销毁这个对象,来等待其他客户端的请求。
常用属性:
属性名 | 值类型 | 说明 |
---|---|---|
Charset | string | 表示输出流所使用的字符集 |
ContentLength | int | 输出流的长度 |
ContentEncoding | Encoding | 编码方式 |
Cookies | HttpCookieCollection | 服务器发送到客户端的Cookie集合 |
OutPut | TextWriter | 服务器响应对象的字符输出流 |
RedirectLocation | string | 当前请求重定向 |
常用方法:AppendCookie();Clear();Close();End();Redirect();
Server
server对象是用于获取服务器相关信息的。
常用属性
属性名 | 值类型 | 说明 |
---|---|---|
MachineName | string | 获取服务器的计算机名称 |
ScriptTimeout | int | 获取和设置请求超时值(以秒计) |
常用方法:
方法名 | 返回类型 | 说明 |
---|---|---|
CreateObject | Object | 创建 COM 对象的服务器实例 |
Execute | void | 在当前请求的上下文中执行指定虚拟路径的处理程序 |
HTMLDecode | string | 解码 |
HTMLEncode | string | 对字符串进行 HTML 编码 |
urlDecode | string | 对路径字符串解码 |
URLEncode | string | 对路径字符串编码 |
MapPath | string | 获取指定相对路径在服务器上的物理路径 |
Session
why
web的核心是服务器,客户端向服务器发送请求就会收到一个服务器的响应,但是如果访问的页面需要权限,密码需要重复输入吗?what
session就是来保存和记录用户的相关信息的一个具有生命周期的保存在服务器端的对象how
在客户端需要的时候在服务器创建Session,不用的时候在销毁以减少内存消耗例子
//创建session:
Session["username"]="Charles";
//获取session
string username=(string)Session["username"];//这里用到了强制转换,顺便提一句session可以存储任意类型的数据,只要取的时候转化就行了
Cookie
- why
与session对应,session解决了服务器端的问题,但是每次登录都要重新输入账户名和密码也是很烦人的,大家都希望网页能记住密码 - what
Cookie是用来保存在客户端的用户信息和数据的对象 - how
- 客户端发送请求的时候把Cookie发送到服务器,服务器响应的时候同样把cookie发送到客户端保存
- 生命周期:可以手动设置,可以设置为永久
- 一个网站中可以有多个Cookie,通过名称来区分
- 例子
//同样以姓名信息来举例,设置cookie就是在服务器响应对象Response的Cookie集合中增加Cookie的实例,然后通过response发送会客户端
HttpCookie namecookie=new HttpCookie("username","Charles");
Response.Cookies.Add(namecookie);
//获取
string username=Request.Cookies["username"].Value;
Application
- why
已经分析了两种保存用户信息的工具了,但是我们发现这些信息都是针对某个人的信息,一个用户对应一个特定Cookie或Session,服务器不会根据特定的键值对对应错误;但是我们需要保存一些共有的信息怎么办呢?比如这个视频的浏览次数?我们还缺一个全局变量。 - what
Application就是用来保存在服务器上公共信息的对象 how
咱们都学过数据库原理和操作系统原理,简单的说类似于数据库里面的并发控制和OS里的死锁那一块,关于访问公共信息问题,都有类似的答案。与加锁和PV操作同样的这里用到了Application.Lock() ;//加锁 Application(“键名”) = 值 ;//读值 Application.Unlock();//解锁 //注意这里加锁和解锁都是成对出现的