标签:
准确地说,asp.net 并没有内置对象这一说,jsp 里确实把 request、response 这些当作 jsp 的内置对象,这里只不过是借用了一下 jsp 的说法而已。
在 Web 中处于中心的是 Web 服务器,用来处理客户端的 HTTP 请求。由于 HTTP 是一种无状态的协议,也就是它并不记得上一次谁请求过它,不会主动去询问客户端,只有当客户端主动请求之后,服务器才会响应。
1.【Request】
Request封装了客户端请求信息。Request的常见属性如下:
属性名 |
值类型 |
说明 |
ApplicationPath |
String |
获取请求的资源在网站上的根路径 |
ContentEncoding |
Encoding |
设置请求对象的编码 |
Cookies |
HttpCookieCollection |
客户端发送到服务器的Cookie集合 |
QueryString |
NameValueCollection |
当前请求的查询字符串集合 |
UrlReferrer |
Url |
获取用户由哪个url跳转到当前页面 |
2.【Response】
Response代表了服务器响应对象。每次客户端发出一个请求的时候,服务器就会用一个响应对象来处理这个请求,处理完这个请求之后,服务器就会销毁这个相应对象,以便继续接受其它客服端请求。
Response常用属性如下:
属性名 |
值类型 |
说明 |
Charset |
string |
表示输出流的所使用的字符集 |
ContentEncoding |
Encoding |
设置输出流的编码 |
ContentLength |
Int |
输出流的字节大小 |
ContentType |
string |
输出流的HTTP MIME类型 |
Cookies |
HttpCookieCollection |
服务器发送到客户端的Cookie集合 |
Output |
TextWriter |
服务器响应对象的字符输出流 |
RedirectLocation |
string |
将当前请求重定向 |
Response常用方法
属性名 |
返回值类型 |
说明 |
AppendCookie |
void |
向响应对象的Cookie集合中增加一个Cookie |
Clear |
void |
清空缓冲区中的所有内容输出 |
Close |
void |
关闭当前服务器到客户端的连接 |
End |
void |
终止响应,并且将缓冲区中的输出发送到客户端 |
Redirect |
void |
重定向当前请求 |
3.【Server】
Server对象是用于获取服务器的相关信息的对象。它常用方法如下:
属性名 |
返回值类型 |
说明 |
Execute |
void |
执行指定的资源,并且在执行完之后再执行本页的代码 |
HtmlDecode |
string |
消除对特殊字符串编码的影响 |
HtmlEncode |
string |
对特殊字符串进行编码 |
MapPath |
string |
获取指定相对路径在服务器上的物理路径 |
Transfer |
void |
停止执行当前程序,执行指定的资源 |
UrlDecode |
string |
对路径字符串进行解码 |
UrlEncode |
string |
对路径字符串进行编码 |
4.【Session】
Session对象用来保存与特定用户相关的信息,Session中的数据保存在服务器端,在客户端需要的时候创建Session,在客户端不需要的时候销毁Session,使它不再占用服务器内存。
在asp.net中Session的默认生命周期是20分钟,也就是当我们在9:00的时候设置了一个Session,如果在9:20之前客户端没有任何请求,那么它的生命周期就到9:20分钟结束。但是一旦用户在9:19又向服务器发送了一个请求,那么这个Session现在的生命周期就是在当前时间的基础上再加上20分钟,也就是此时这个Session的生命周期是到9:39结束。
Session具有以下特点:
Session中的数据保存在服务器端;
Session中可以保存任意类型的数据;
Session默认的生命周期是20分钟,可以手动设置更长或更短的时间。
假设我们要设置一个Session用来保存用户名,这个Session的名字是“UserName”,值是“sa”,代码如下:
Session[“UserName”]=”sa”;
一个网站里用到 Session 的地方肯定不止一个,所以在设置和获取 Session 的时候通过 Session 的名在来操作,并且 Session 被设置成能存储任意类型的对象(即 Object 类型),所以获取 Session 的时候要根据设置的时候的实际类型进行响应的强制类型转换(当然如果在 Session 中存放像 int/byte/short 这样的数据类型,获取 Session 的值算是一种拆箱操作而不是强制类型转换),对于上面的 Session ,获取 Session 的值的代码如下:
string username=(string)Session[“UserName”];
对于上面的代码,有个问题需要注意:当没有设置相应的 Session 或者 Session 因为超过生命周期而被销毁时,上面的代码有可能抛出异常。我们可以先判断是否存在指定名称的 Session,如果不存在就不用获取了,仅当存在的情况下才获取 Session 的值,上面的代码可以改进如下:
string userName;
if(Session["UserName"]!=null)
{
//当指定名称的Session存在时,获取指定Session的值
userName=(string)Session["UserName"];
}
5.【Cookie】
Cookie 对象和 Session 对象一样也是用来保存特定的用户相关的数据,不过 Session 不同的是 Cookie 保存在客户端而不是服务器上,每次客户端发出请求的时候都会把 Cookie 一起发送到服务器,服务器每次响应客户端请求的时候会重新把 Cookie 发送到客户端保存。
Cookie 保存数据有以下特点:
Cookie 中的数据保存在客户端;
Cookie 中只能保存字符串类型的数据,如果需要在Cookie中保存其它类型数据,需要将其转换成字符串类型后保存;
Cookie 也有其默认生命周期,也可以手动设置,最大可设置成50年之后过期。
同 Session 的情况一样,有可能在一个网站中使用到的 Cookie 不止一个,我们仍通过 Cookie 的名称来区分不同的 Cookie。
设置 Cookie 的过程就是在服务器的响应对象 Response 的 Cookie 集合中增加一个 Cookie ,Response 对象会把这个 Cookie 集合中的所有 Cookie 都发送客户端。代码如下(仍以保存用户名为例):
HttpCookie cookie = new HttpCookie("UserName", "sa");
Response.Cookies.Add(cookie);
获取 Cookie 就是从客户端的请求对象中找到对应名称的 Cookie,当然也有可能出现 Cookie 不存在的情况,所以在获取之前也需要检查指定名称的Cookie是否存在,如下:
string userName;
if (Request.Cookies["UserName"] != null)
{
userName = Request.Cookies["UserName"].Value;
}
6.【Application】
Application 和 Session 存储的数据类型和存储位置一样,都是存放 Object 类型的数据(也就是任意类型),并且存放在服务器上,不同的 Application 中的数据可以由网站中所有的用户来设置或者获取。并且 Application 中存放的数据没有时间限制,除非我们手动删除或者服务器重新启动,否则存放的数据都会丢失。
下面是 Session、Cookie 和 Application 的区别:
名称 |
使用范围 |
存储位置 |
存放数据类型 |
生命周期 |
Session |
特定用户 |
服务器 |
Object,也就是任意类型 |
有,可以自行设置 |
Cookie |
特定用户 |
客户端 |
String,也就值字符串 |
可以自行设置 |
Application |
所有用户 |
服务器 |
Object,也就是任意类型 |
无 |
7.【<%%>表达式】
<%%>用来编写程序的代码部分。在其中可以声明变量和方法。如下:
<%
string name = Request.Form["userName"].Trim();
string userName;
if (Request.Cookies["UserName"] != null)
{
userName = Request.Cookies["UserName"].Value;
}
%>
在<%%>就是符合C#要求的代码。
8.【<%=%>表达式】
Response.Write()输出和<%=%>输出最后的效果是一样的。
【ASP.NET 基础】ASP.NET内置对象
标签:
原文地址:http://www.cnblogs.com/yc-755909659/p/4499780.html