我们比较常用的内部对象:Page、Request、Response、HttpCookie、Session、Application、Server、Mail 等
Page:
Page对象是由System.Web.UI.Page类实现,命名空间System.Web.UI
几个关键的属性
IsPostBack :页面上的表单是否提交
IsValid :所有控件是否通过验证
关键的方法:
DataBind :数据绑定
事件:
Load :页面装载
提供一个例子
private void Page_Load(object sender,EventArgs e)
{
if(Page.IsPostBack)
Message.Text=user_name.Text + "您好";
else
Message.Text="您还没有提交";
}
另外在GridView的操作中,我们也经常使用IsPostBack限定对数据源的绑定
Request:
Request对象可以获取客户端的信息,如客户端IP地址等
它是由由System.Web.HttpRequest类实现,所属的命名空间: System.Web
重要的属性有:
QueryString、Form、Cookies、ServerVariables、ClientCertificate、Browser
QueryString可以获取标识在URL后面的所有返回的变量及其值。
例如,当客户端送出如下的请求时,QueryString将会得到name与age两个变量的值。
http://……/temp.aspx?name=XX&age=24
后面可以有多个变量参数,参数之间用&连接。
例如
private void page_load(object sender,EventArgs e)
{
string user_name;
int age;
user_name = Request.QueryString["user_name"];
age = Convert.ToInt16(Request.QueryString["age"]);
Message.Text = user_name + "您好";
Message.Text = Message.Text + ",您的年龄是" + age.ToString();
}
ServerVariables数据集合可以方便地取得服务器端或客户端的环境变量信息,比如客户端的IP地址等等。
它的使用语法是Request.ServerVariables("环境变量名称")
常用的环境变量名称有:
LOCAL_ADDR:服务器端IP地址
REMOTE_ADDR:客户端IP地址
REMOTE_HOST:客户端主机名
SERVER_NAME:服务器名称
SERVER_PORT:HTTP数据请求时所用的端口号
例如:
private void page_load(object sender,EventArgs e)
{
Message.Text="您的IP地址是:" + Request.ServerVariables["REMOTE_ADDR"];
}
Browser数据集合就可以方便地获取客户端浏览器特性,如类型、版本、是否支持背景音乐等。
它的语法是Request.Browser ("浏览器特性名称")
常用的浏览器特性名称:
Browser:浏览器类型名称
Version:浏览器版本名称
Cookies:是否支持cookie
Frames:是否支持框架
BackgroundSound:是否支持背景音乐
private void page_load(object sender,EventArgs e)
{
string str;
str = "浏览器类型:" + Request.Browser["Browser"];
str += " <br>浏览器版本:" + Request.Browser["Version"];
str += " <br>支持Cookies否:" + Request.Browser["Cookies"];
str += " <br>支持背景音乐否:" + Request.Browser["BackgroundSounds"];
message.Text = strMessage;
}
TotalBytes属性可以得到客户端提交数据的字节大小,它的语法是Request.TotalBytes;
BinaryRead方法:前5种获取方法都是直接获取数据,而此方法可以二进制方式,获取客户端用Post方法提交的数据。
它的语法是Request.BinaryRead(字节大小)
说明:其中字节大小是用TotalBytes属性获得的响应数据的字节大小。
Response对象:
Response对象相当于服务端想客户端返回信息的对象,所以我们经常用来进行对客户端数据进行添加的操作
它是由System.Web.HttpResponse类实现,所属的命名空间: System.Web
它的重要属性:
Buffer、ContentType
重要方法:
Write、Redirect、End、Clear、Flush、BinaryWrite
Write方法是向客户端中写入一段信息
利用该方法就可以在客户端输出信息,效果和利用Label标签控件一样。
它的语法是Response.Write(变量数据或字符串)
例如:
Response.Write(user_name + "您好") 'user_name是一个变量,表示用户名
Response.Write("现在是: " + now() ) 'now()是时间函数
Response.Write("业精于勤而荒于嬉 <p>") '输出字符串
另外它还可以直接在HTML代码中动态输出信息,此时需要将语句用 <%和%>括起来,
例如:
<h4 align="center">Write方法示例 </h4>
<%
Response.Write("您好,欢迎光临")
Response.Write(" <p>敬请提出宝贵意见")
%>
此时,它还有一种省略方式,例如:
<h4 align="center">Write方法示例 </h4>
<%="您好,欢迎光临"%>
<%=" <p>敬请提出宝贵意见"%>
Redirect方法就可以引导客户端至另一个页面。它的语法是Response.Redirect(网址变量或字符串)
例如:
Response.Redirect("http://www.edu.cn") '引导至中国教育网
Response.Redirect("other.asp") '引导至站内其他网页
theURL="http://www.pku.edu.cn"
Response.Redirect(theURL) '引导至变量表示的网址
它和Server.Excute()方法的区别在于一个执行完之后引导到另一个页面,而Excute方法只是调用另一个页面的方法,并不会转到那个页面去
例如:我在考试中经常使用的一道题
你正在为TestKing的在线支付服务创建一个ASP.NET应用程序,这项服务允许用户通过使用电子信用卡来支付帐单。这个应用程序包含一个名为TestKPayment.aspx的支付页面,这个页面包括一个用于输入收款人、支付总数和信用卡信息的表单。当用户需要提交一个新的帐单地址给收款人时,页面表单允许用户提供新的地址信息给ProcessAddressChange.aspx,页面使用户提交支付信息时马上得到处理。这个ProcessAddressChange.aspx页面处理改变地址的请求,但不为用户提供任何信息。当请求处理完成时,ProcessAddressChange.aspx显示状态结果给用户。你需要添加一行代码到TestKPayment.aspx来执行ProcessAddressChange.aspx的功能,该使用哪行代码?( )
A Response.Redirect(“ProcessAddressChange.aspx”)
B Response.WriteFile(“ProcessAddressChange.aspx”)
C Server.Transfer(“ProcessAddressChange.aspx”,True)
D Server.Execute(“ProcessAddressChange.aspx”)
Buffer属性用来设置服务器端是否将页面先输出到缓冲区。它的取值为True或False,默认为True。
它的语法是Response.Buffer=True | False
另外使用Response.redirect时必须保证Buffer值为True。
BinaryWrite该方法用于输出二进制信息,不进行任何字符转换,直接输出。其语法为Response.BinaryWrite(变量或字符串)
如果在数据库里保存了二进制信息,可以用该方法输出。
例如:从数据库中显示图片的信息就要用到该方法。
Session对象
利用Session对象 可以方便记录客户的信息。既使该客户从一个页面跳转到另一个页面,该Session信息仍然存在,客户在该网站的任何一个页面都可以存取Session信息
注:Session信息是对一个客户的,不同客户的信息用不同的Session对象记载。
Session对象由System.Web.SessionState类实现,所属的命名空间System.Web
重要的属性有
SessionID、TimeOut
重要的方法有
Abandon
我们一般利用Session存储登录用户的信息。
例如:
我们登录后在Page_Load中
private void page_load(object sender,EventArgs e)
{
Session["user_name"] = "昀";
Session["age"] = 22;
}
如果我们要取出Session中的值
private void page_load(object sender,EventArgs e)
{
string user_name;
int age;
user_name = (string)Session["user_name"];
age = (int)Session["age"];
message.Text = user_name + "您好,您的年龄是" + age.ToString();
}
Session对象有它的有效期,默认为20分钟。客户端每新打开一个浏览器窗口,就会创建一个Session对象,如果超出20分钟没有和服务器端交互或者关闭了浏览器,则该Session对象就会自动结束。
修改有效期语法如下:
Session.Timeout=整数(分钟)
例如:
Session.Timeout=90 '将有效期改为90分钟
Session对象到期后会自动清除,但到期前可以用Abandon方法强行清除。语法:
Session.Abandon
例如:
Session(“user_name”)= “圆圆”;
Session.Abandon();
Response.Write(Session("user_name"));
Application对象
Session对象可以记载特定客户的信息,与此相反的是,Application对象可以记载所有客户信息
不同的客户必须访问不同的Session对象,但可以访问公共的Application对象
Application对象由System.Web.HttpApplication类实现
重要的方法有:
Lock
Unlock
我们经常会用Application存储一些共有的信息
它的存储语法是Application("Application名字")=变量、常量、字符串信息或表达式
例如:
Application.Lock
Application("user_num")=user_num
Application (“city”)=“北京”
Application.Unlock
我们可以利用Application对象做一个聊天的小程序,这个大家回去之后可以自己想一下