ASP.NET网页不同于ASP或者PHP的地方:asp.net页面在一次请求的时候会被编译成DLL文件,由JIT编译执行,因而aspx页面第一次被打开的时候比较慢,而后执行的时候就会比较快,;而asp和php网页每次运行的时候都会被解释执行,因而asp.net网站的运行速度要快。
ASP.NET夜话:ASP.NET内置对象
request
Rsponse
Server
Session
Cookie
Application
<%%>及<%=%>
在ASP.NET中所有的网页都是继承System.Web.UI.Page这个类。
Request封装了客户端请求信息。Request的常见属性
属性名 | 值类型 | 说明 |
ApplicationPath | string | 获取请求的资源在网站上的根路径 |
ContentEncoding | Encoding | 设置请求对象的编码 |
Cookies | HttpCookieCollection | 客户端发送到服务器的Cookie集合 |
QueryString | NameValueCollection | 当前请求的查询字符串集合 |
UrlReferrer | Uri | 获取用户由哪个url跳转到当前页面 |
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 |
重定向当前请求 |
Server
Server对象是用于获取服务器的相关信息的对象。它常用方法如下:
属性名 |
返回值类型 |
说明 |
Execute |
void |
执行指定的资源,并且在执行完之后再执行本页的代码 |
HtmlDecode |
string |
消除对特殊字符串编码的影响 |
HtmlEncode |
string |
对特殊字符串进行编码 |
MapPath |
string |
获取指定相对路径在服务器上的无力路径 |
Transfer |
void |
停止执行当前程序,执行指定的资源 |
UrlDecode |
string |
对路径字符串进行解码 |
UrlEncode |
string |
对路径字符串进行编码 |
Session
Session对象用来保存与特定用户相关的信息,Session中的数据保存在服务器端,在客户端需要的时候创建Session,在客户端不需要的时候销毁Session,使它不再占用内存。
Session的生命周期是20分钟。
session具有以下特点
Session中的数据保存在服务器端;
Session中可以保存任意类型的数据
Session的默认周期是20分钟,可以手动设置更长,或者更短的时间。
假设我们要设置一个Session用来保存用户名,这个Sesison的名字是"UserName",值是“zhoufoxcn”,代码如下:
Session["UserName"]="zhoufoxcn";
获取Session的值算是一种拆箱操作而不是强制类型转换,对于上面的Session获取Session的值的代码如下:
string username=(string)Session["UserName"];
对于此代码有个问题需要注意:当没有设置相应的Session或者Session因为超过生命周期而被销毁的时候可能抛出异常。可以先判断是否存在指定的
Session,如果不存在就不用获取了,改进代码如下:
string usernam;
if(Session["UserName"]!=null)
{
userName=(string)Session["UserName"];
}
Cookie
Cookie保存在客户端上,每次客户端请求的时候都会把Cookie一起发送到服务器,服务器每次响应客户端请求的时候会重新把Cookie发送到客户端保存。
Cookie保存数据有以下特点:
Cookie中的数据保存在客户端;
Cookie中只能保存字符串类型的数据,如果需要在Cookie中保存其他类型的数据,需要将其转换成字符串类型后保存。
Cookie也有默认的生命周期关闭浏览器失效
Session和Cookie是针对特定用户保存的数据,如果希望看到共有的信息,大家都能设置获取,就需要使用Application.
Application
Application和Session存储的数据类型和存储位置一样,都是存放Object类型的数据(也就是任意类型),并且存放在服务器上,不同的Application中的数据可以由网站中所有的用户来设置或者获取。并且Application中存放的数据没有时间限制,除非我们手动删除或者服务器重新启动,否则存放的数据都会丢失。
下面是Session、Cookie和Application的区别:
名称 |
使用范围 |
存储位置 |
存放数据类型 |
生命周期 |
Session |
特定用户 |
服务器 |
Object,也就是任意类型 |
有,可以自行设置 |
Cookie |
特定用户 |
客户端 |
String,也就值字符串 |
可以自行设置 |
Application |
所有用户 |
服务器 |
Object,也就是任意类型 |
无 |
<%%>表达式
<%%>用来编写程序的代码部分。可以再其中声明变量和方法,在<%%>中就是符合C#要求的代码
<%=%>表达式
<%=%>是用来向输出流中输出变量的值。其用法<%int i=6;%>
<%=i%>