web应用程序状态管理
使用ASP.NET内置对象对Web应用程序进行设置
顺便贴一下客户端和服务器端的关系
HTTP请求处理
Response对象
作为交接作用,将客户端需要的信息发送给客户端,将客户端反馈回的信息以HTML格式再给浏览器
Response对象的常用方法
Response对象的属性
例子
protected void Page_Load(object sender, EventArgs e){
if (Response.IsClientConnected) //判断客户端是否与服务器相连
Response.Redierect("other.axpx");
//如果相连则跳转到相应的页面
else
Response.End();
}
protected void Page_Load(object sender, EventArgs e){
Response.Buffer= ture; //指定页面的输出需要缓冲区
int currentHour = DateTime.Now.Hour; //获得此时的小时数
if(currentHour == 0){ //如果到零点时,发生如下
Response.Write("时间到,服务器停止输出"); //向客户端输出数据
Response.Flush(); //将服务器的缓存数据发送给客户端
Response.Clear(); //清除服务器缓存中的数据
Response.End(); //停止处理
}
else {
Response.Write("服务器正常工作……");
}
}
protected void Page_Load(object sender, EventArgs e)
{
int day = int.Parse( DateTime.Now.Day.ToString());
//获取此时的日期
if (day / 2 == 0) //如果日期为偶数打开百度网页
Response.Redirect("https://www.baidu.com");
else //如果日期为奇数打开新浪网页
Response.Redirect("https://www.sina.com.cn/");
}
使用Response对象设置Cookie
Response对象的数据集合只有Cookies集合
创建一个新的会话Cookie:
Response.Cookies.Add(Cookies 对象);
HttpCookie myCookie = new HttpCookie("Username");
myCookie.Value ="李四";
Reponse.Cookies.Add(myCookie);
//同上
Reponse.Cookies["Username"] = "李四";
Request对象
获取客户端的浏览器提交给服务器的信息
Request对象的属性
应用集合的格式:Request.集合名("变量名")
获取客户端提交的表单数据
客户端通过Form向服务器提交数据
提交数据有两种:POST 和 GET 两种办法
GET 时通过QueryString集合获取数据
有大量数据输入时,用POST方法提交,通过Form集合获取
GET时将表单的数据直接作为参数再URL后面
格式:URL?Variable = Value1&Variable2 =Value2
如下:
由于地址栏的长度有限,因此会限定提交数据的长度
获取时
Request.Querystring("username") //获取表单中username中的值
使用POST
则
Request.Form("username") //获取表单中username中的值
可以省略其中
Querystring
或Form
的集合名
直接用Request("username")
例子
<!--用PostBackUrl时按钮时点击时跳转下个页面-->
<asp:Button ID="Button1" runat="server" Text="登录" PostBackUrl ="~/Request对象2.aspx" />
//在一个界面文件中的按钮中加入上述PostBackUrl ="~/Request对象2.aspx"
//可在Request对象2.aspx文件中直接调用另一个文本框
public partial class Request对象2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Label1.Text = Request["TextBox1"]; //从网页1中获得输入的叔叔
int time = int.Parse(DateTime.Now.Hour.ToString());//获得此时的小时数
if (time <= 12) //如果小时小于等于12则输出上午好
Label2.Text = "上午好";
else //如果小时大于12则输出下午好
Label2.Text = "下午好";
}
}
获取保存的cookie信息
格式:Request.Cookies["Cookies 名称"]
HttpCookie MyCookie = Request.Cookies["Username"]; //获取Cookie对象
string myName = MyCookie.Value; //读取Cookie的值
读取服务器的环境变量
格式:Request.ServerVariables("环境变量名")
或者Request("环境变量名")
Request.ServerVariables("REMOTE_ADDR") //显示客户端的IP地址
例子
protected void Page_Load(object sender, EventArgs e)
{
Response.Write("<b>当前使用的浏览器:</b>");
Response.Write("<hr>");
Response.Write("浏览器名称及其版号:" + Request.Browser.Type + "<br/>");
Response.Write("浏览器类型:" + Request.Browser.Browser + "<br/>");
Response.Write("浏览器版本号:" + Request.Browser.Version + "<br/>");
Response.Write("客户端使用的操作系统:" + Request.Browser.Platform + "<br/>");
Response.Write("是否支持HTML框架:" + Request.Browser.Frames + "<br/>");
Response.Write("是否支持Cookies:" + Request.Browser.Cookies + "<br/>");
Response.Write("<hr>");
Response.Write("<b>获取服务器端信息:</b>");
Response.Write("<hr>");
Response.Write("当前网页虚拟路径:" + Request.ServerVariables["URL"] + "<br>");
Response.Write("当前网页物理路径:" + Request.ServerVariables["PATH_TRANSLATED"] + "<br/>");
Response.Write("服务器名:" + Request.ServerVariables["SERVER_NAME"] + "<br/>");
Response.Write("服务器连接端口:" + Request.ServerVariables["SERVER_PORT"] + "<br/>");
Response.Write("HTTP版本:" + Request.ServerVariables["SERVER_PROTOCOL"] + "<br/>");
Response.Write("<hr>");
}
Request对象的方法
Server对象
Sever对象可以访问服务器上的方法和属性(获取某文件的物理路径),也可以创建各种服务器组件(访问数据库)
Server对象的属性
Server.ScriptTimeout =100 //指定服务器处理脚本的超时期限为100秒
limit = Server.ScriptTimeout //将设置过的超时期限存放到的一个变量
Server对象的方法
CreatObject的方法
Server.CreatObject("ADODB.Connection")//创建一个ADO组件的实例
Execute方法和Transfer方法
Execute方法调用一个指定的脚本执行它,执行完毕后再返回文件
格式:Server.Execute(string URL) //URL为脚本文件的地址
Transfer将一个正在执行的脚本文件的控制权转移给另一个文件,执行完后不返回源文件
格式:Server.Transfer(string URL)
Mapath方法
Mapath将指定的虚拟路径映射到服务器上的物理路径
格式:Server.MapPath(path)
对HTML进行编译和解码
HTML中的 < 和 > 在浏览器中被浏览器识别为系统标记,不会显示
因而用 HtmlEncode 和 HtmlDecode 对HTML进行编码和解码
HtmlEncode格式:Server.HtmlEncode(string s)
HtmlDecode格式:Server.HtmlDecode(string s)
例子
protected void Page_Load(object sender, EventArgs e)
{
string enStr = Server.HtmlEncode("<font size =4>输出 HTML标记<font/>");
//用HtmlEncode组织浏览器解释HTML语法
Response.Write(enStr);
Response.Write("<hr>");
string deStr = "<font size =5>输出 HTML 标记</font>";
Response.Write("<br>要解码后的字符串:" + deStr);//证明实际上是将<>转变成 <和>
Response.Write("<br>解码后:" + Server.HtmlDecode(deStr));//HTMLDecode是对已经编码的字符串解码
}
对URL进行编译和解码
在程序中会有一些字符不能被直接读取,用URLEncode进行编码后就可以传播。
格式:
编码 :Server.UrlEncode(string URL)
解码: Server.UrlDecode(string URL)
例子
protected void Page_Load(object sender, EventArgs e)
{
String str = "http://mail.163.com";
Response.Write("<p>执行UrlEncode方法前:" + str);
String strNew = Server.UrlEncode(str);//将string中的ASCII字符转换成URL中等效的字符
Response.Write("<p>执行 UrlEncode 方法后:" + strNew);
}