用来获取客户端在请求一个页面或传送一个Form是提供的所有信息。它包括用户的HTTP变量、能够识别的浏览器、存储客户端的Cookie信息和请求地址等。
Request对象是System.Web.httpRequest类的对象
QueryString :获取HTTP查询字符串变量集合,主要用于收集HTTP协议中Get请求发送的数据
Form :获取窗体或页面变量的集合,用于收集Post方法发送的请求数据
ServerVarible:环境变量集合包含了服务器和客户端的系统内信息
Params:它是QueryString、Form和ServerVarible这三种方式的集合,不区分是由哪种方式传递的参数
ApplicationPath:获取服务器上ASP.NET虚拟应用程序的根目录路径
ContertLength:指定客户端发送的内容长度
Cookies:获取客户端发送的Cookie集合
FilePath:获取当前请求的虚拟路径
Files:获取采用多部分MIME格式的由客户端上载的文件集合
Item:从Cookies, From, QueryString或ServerVariables集合中获取指定的对象
Path:获取当前请求的虚拟路径
Url:获取有关当前请求的URL信息
UserHostName:获取远程客户端的DNS名称
UserHostAddress:获取远程客户端的IP主机地址
IsLocal:获取一个值,该值指示该请求是否来自本地计算机
Browser:获取或设置有关正在请求的客户端浏览器功能信息
BinaryRead():执行对当前输入流进行制定字节数的二进制读取
SaveAs():将HTTP请求保存到磁盘
MapPath():将指定的路径映射到物理路径
Response对象是HttpRespone类的一个实例。该类主要是封装来自ASP.NET操作的HTTP相应信息。Response对象将数据作为请求的结果从服务器发送到客户浏览器中,并提供有关响应的消息。它可用来在页面中输出数据,在页面中跳转,还可以传递各个页面的参数。
Redirect:将网页重新转到另一地址
Write:写出指定字符串。
AppendHeader:
语法格式 Response.AppendHeader(Name,Value) 参数Name为HTTP头,参数Value为HTTP头的值。
HTTP头是HTTP协议规定的请求和响应消息都支持的头域内容。HTTP头是页面通过HTTP协议访问页面时,最先响应的请求和响应消息,例如HTTP头中的Location,Location头用于将页面重定向到另一个页面,与Redirect方法相似。
WriteFile 将文件输出到客户端
Flush 将缓冲区的数据输出到客户端浏览器
End 停止并结束ASP网页的处理
Close 关闭客户端的联机
ClearHeaders 清除缓冲区中的页面标题
Clear 清除缓冲区的数据
BinaryWrite 将二进制字符或字符串输出到客户端浏览器
AppendToLog 将自定义的数据加入到IIS日志文件中(Log File),以便追踪与分析记录。
ContentType:输出流的内容类型比如html(text/html) 、普通文本(text/pain)还是JPEG图片(image/JPEG)。
ContentEncoding:输出流的编码
Cookies : 返回浏览器的cookies的集合
Buffer : 设置缓冲信息, true | false .默认是true
Expires : 获取或设置在浏览器上缓存的页过期之前的分钟数, 设置为0,则立刻过期
每个aspx文件对应的一个page对象,.aspx页面与后台.cs代码类(局部类)合并生成页面类,Page对象是页面类的实例。所有的.aspx文件(Web窗体页)都继承自System.Web.UI.Page类
<%@ Page
Language="C#" ---指明后台使用C#语言
AutoEventWireup="true" ---设置是否自动调用网页Load事件,默认是true
CodeBehind="WebDemo1.aspx.cs"---其.aspx文件上绑定的后台代码文件
Inherits="ASP.NETDemo.Demo1.WebDemo1" ---后台代码类
%>
IsPostBack:该属性可以检查.aspx页是否为传递回服务器的页面,常用于判断页面是否为首次加载。
如果为true则为回发响应,如果为false则为首次加载
IsValid:该属性用于判断页面中的所有输入的内容是否应经通过验证,它是一个布尔值的属性。当需要使用服务器端验证时,可以使用该属性。
IsCrossPagePostBack:该属性判断页面是否使用跨页提交,它是一个布尔值的属性。
Response属性和Request属性上面讲过了
Page类常用的事件及执行的先后顺序:
Page.PreInit 事件:在页初始化开始时发生
Page.Init 事件:当服务器控件初始化时发生;初始化是控件生存期的第一步。 (继承自 Control。)
Page.InitComplite事件:在页初始化完成时发生
Page.PreLoad事件:在页 Load 事件之前发生
Page.Load事件:当服务器控件加载到 Page 对象中时发生。 (继承自 Control )
Page.LoadComplete 事件:在页生命周期的加载阶段结束时发生
Page.PreRender事件 :在加载 Control 对象之后、呈现之前发生。 (继承自 Control。)
Page.PreRenderComplete 事件:在呈现页内容之前发生
视图状态,在 ASP .NET 中,当一个表单被提交时,表单会连同表单值一起出现在浏览器窗口中。如何做到的呢?这是因为 ASP .NET 维持了您的 ViewState。 ViewState 会在页面被提交到服务器时表明它的状态。这个状态是通过在带有 < form runat="server"> 控件的每个页面上放置一个隐藏域定义的。
这个对象是ASP.NET中特有的对象,在其他语言的后端技术中没有这个对象
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)//如果是第一次访问
{
//先将Count的值设为0,并且保存在ViewState中
ViewState["count"] = 0;
}
}
protected void btnAdd_Click(object sender, EventArgs e)
{
//每次点击按钮先取出ViewState中的值并且累加之后再次赋给ViewState
ViewState["count"] = Convert.ToInt32(ViewState["count"]) + 1;
Literal1.Text = ViewState["count"].ToString();
}
}
使用ViewState实现页面信息的保存
保存数据:ViewState对象存储数据[键值对]Key=Value
取出数据:根据Key值取出Value值
总结:
ViewState中保存的数据全部被转换成object类型,取出时务必强制转换成特定类型
ViewState只能在同一个页面的连续多次请求之间保存信息,页面跳转后信息就会丢失
ViewState的本质是一个隐藏域,和原始的.aspx文件中的多出来的标签一样,都是一个隐藏域,第一次创建ViewState对象其实是创建了一个隐藏域
使用方式和ViewState相似
Session对象用于存储在多个页面调用之间特定用户的信息。Session对象只针对单一网站使用者,不同的客户端无法相互访问。Session对象中止联机机器离线时,也就是当网站使用者关掉浏览器或者超过设定Session对象的有效时间,Session对象变量就会关闭。
Session是服务器将客户端的数据代替客户端做出对应的保存,问题是不同用户在选择商品时,Session是如何区分不同用户的选择?
服务器根据SessionID来区分不同的用户,它是一个很长的字符串
SessionID在用户第一次访问时由服务器产生并由用户浏览器保存
用户每次的操作,浏览器在向服务器请求时都会带着自己的SessionID
Web服务器是如何判断用户是第一次请求并为其生成SessionID?
用户第一次打开浏览器并登陆网页,浏览器中没有任何SessionID。
用户把当前网站的网页全部关闭,再次登陆网页,前面的SessionID就会丢失
用户使用不同浏览器登录网页,不同浏览器之间的Session无法共享。
SessionID:包含唯一的用户会话标识符
Timeout:用户设置用户超时的时间,单位为分钟
Add(string name,object value):添加“键-值”对
Remove(string name):根据键删除指定项
Clear():从会话状态集合中移除所有的键值对
Abandon():结束Session,取消当前会话
不用页面之间需要传递较为复杂的数据(对象)
保存用户的登录信息,未登录者禁止访问相关页面
作业:实现一个 商品主页-添加商品到购物车(检查如果登录直接添加成功,并跳转到购物车,否则进行登录)登陆(登录成功跳转到商品主页)-商品主页-添加商品到购物车-购物车页面(显示登录用户ID,购物车商品),不管是直接打开购物车,还是添加商品到购物车首先判断是否登录,如果没有登录则直接进入登录界面进行登录,需要连接一个数据库(登录)
Cookie对象一般用于在客户端保存一些针对某个用户的信息。
Cookie本质上只是一小段文本字符串,该字符串一般保存在用户计算机特定文件夹下的某个文件中,每个Cookie都保存到一个对应的文件中。它提供了在客户端存储用户特定信息的手段。例如保存用户登录某个网站的用户名、保存用户购物时选择的某些选项、保存是否已经投票以防止重复投票等。
当用户访问某个服务器时,如果服务器要求将Cookie信息也传递过来,则浏览器就会将其附加到HTTP头文件中发送给服务器。另外,服务器也可以通知浏览器将某个Cookie信息保存到计算机上,但是,一旦将Cookie保存在客户端计算机上,则只有创建该Cookie的网站才能读取它。
一般情况下,服务器都会给Cookie信息限制一个有效的时间段,当超过保存的有效期时,浏览器就会自动将其删除。如果没有设置Cookie的有效期,实际上只是将Cookie作为用户会话信息的一部分进行维护,当用户关闭浏览器时就会自动丢弃Cookie,而不会将其存储在用户的硬盘上。
不过,由于有些网站会利用这种技术随意在客户端保存访问信息,导致用户对其很反感,因此,有些用户可能会通过浏览器设置禁用Cookie,所以使用这种技术时,最好先检测是否可以在客户端存储Cookie。
存储少量不重要的数据
存储在客户端的文本文件中(必须要设置有效期,否则不被存储)
安全性差
存储的数据类型-字符串
浏览器窗口无关,但是与访问的站点有关
具体特定的过期时间和日期
在客户端存储后,将随着浏览器对相关网站页面请求而一并发送到服务器
Response.Cookies["User"].Value = TextBox1.Text;
HttpCookie cookie = new HttpCookie("User",TextBox1.Text);
Response.Cookies.Add(cookie);
注意:创建Cookie使用Response对象,读取Cookie使用Request对象
string str=Request.Cookies["User"].Value;
Response.Cookie.Keys:获取Cookie变量名或者根据其索引获取变量值
Response.Cookies.Count:获取Cookie变量的数量
Response.Cookies.AllKeys:将Cookies对象中所有的变量名存储到数组中。
Response.Cookies.Set:用于更新Cookie的变量值
Response.Cookies.Remove:用于删除Cookie变量
Response.Cookies.Get:用Cookie变量名称或者索引值获取变量值。
Response.Cookies.Clear:清除Cookie内所有的变量
Response.Cookies.Add:用于Cookie对象中添加Cookie变量。
应用程序级别的数据保存(类似于在CS开发中在Winform或WPF中声明的全局变量,这个变量一般在程序开启的时候创建好了,在程序使用过程中一直存在,但是会跟着不同的程序功能存储的数据可能会发生变化)
相当于在BS服务器中存储的一个变量,只要服务器本次开启那么这个数据就被创建存储,只要服务器不关闭那么这个数据就一直存在,在所有客户端访问过程中都可以对这个对象存储的数据进行访问和更改
使用方式和Session一样采用“键值”对的方式
位置:服务器内存,执行速度快
使用范围:整个应用程序中
类型:任意类型
生命周期:应用程序开始创建到销毁
例如统计这个站点的访问量,或者监控当前站点的访问人数
全局应用程序类:Global.asax,可以理解为Application对象主要在这个全局应用程序类中使用
处理应用程序级别的事件的可选文件
必须放在应用程序的根目录下
常用事件 | 说明 |
---|---|
Application_Start | 接收第一个请求时触发 |
Application_End | 应用程序结束时触发 |
Session_Start | 某用户第一访问时触发 |
Session_End | 某用户退出应用程序时触发 |
namespace WebFormDemo
{
public class Global : System.Web.HttpApplication
{
protected void Application_Start(object sender, EventArgs e)
{
}
protected void Session_Start(object sender, EventArgs e)
{
}
protected void Application_BeginRequest(object sender, EventArgs e)
{
}
protected void Application_AuthenticateRequest(object sender, EventArgs e)
{
}
protected void Application_Error(object sender, EventArgs e)
{
}
protected void Session_End(object sender, EventArgs e)
{
}
protected void Application_End(object sender, EventArgs e)
{
}
}
}
对象名称 | 存储位置 | 有效时间 | 信息共享范围 |
---|---|---|---|
Request/Response | 请求和响应的过程中 | 请求结束之前 | 一次请求的一个页面 |
ViewState | 被请求的页面中 | 页面关闭之前 | 多次请求的一个页面 |
Session | Web服务器端 | 规定的时间内 | 同一网站的不同页面 |
Cookie | 客户端硬盘中 | 规定的时间内 | 同一网站的不同页面 |
Application | Web服务器端 | IIS重启之前 | 整个应用程序中 |