Asp.NET笔记(一)---Asp.NET内置对象

第三章
一、Response对象:
用户传输数据到客户端浏览器
Write():用于向当前HTTP响应流写入文本,使其成为返回页面的一部分
eg:
string name = this.txtName1.Text;
Response.Write("您输入的名字是:" + name); //页面中会显示括号中的文字
Response.Write("<script>alert('弹窗消息')</script>");//可以实现弹窗效果

End():将当前所有缓冲的输出发送到客户端,停止该页的执行,并触发Application对象的EndRequest事件
eg:
Response.End(); //当程序碰到这行代码,后面的页面就不再执行了(页面后面的元素就不加载了)

Redirect():将用户从请求页面重新定向或转到另一页面
eg:
Response.Redirect("http://www.baidu.com");//页面跳转到百度
Response.Redirect("/WebForm2.aspx");//页面会跳转到WebForm2窗体
Response.Redirect("/WebForm2.aspx?name=张三&pwd=123");//页面会跳转WebForm2窗体,并且在Url中附带参数
//参数传值: *.aspx?参数=值 或 *.aspx?参数1=值1&参数2=值2

二、Request对象:
用来读取客户端浏览器的数据
1、Request的QueryString属性实现页面传值
  eg:
    Request.QueryString["name"];//获取Url上的参数值*.aspx?name=XXX,得到XXX
    Request.QueryString["password"];//获取Url上的参数值*.aspx?password=XXX,得到XXX
2、Form:使用表单的Post提交获取表单中的控件的值
eg:
  1)、设置提交的表单属性Method="post"
    eg:<form id="form1" runat="server" method="post">
  2)、通过postBackUrl属性实现页面的跳转
    eg:<asp:Button ID="Button1" runat="server" Text="登录" OnClick="Button1_Click" PostBackUrl="~/Main.aspx" />
  3)、在跳转的页面通过Request.Form["表单控件的ID名称"] 获取控件的值
    跳转前的页面中定义文本框:<asp:TextBox ID="txtName" runat="server"></asp:TextBox>
    跳转后的页面中获取文本框的值:string name = Request.Form["txtName"];

QueryString和Form传值的区别:

  1、传值方式区别:QueryString通过跳转的URL参数进行传值

    Form通过Form表单的Post提交进行传值

  2、获取值区别:QueryString通过Url的各个参数名称获取值

    Form通过Form表单各个元素的ID获取值

三、Server对象:

用来提供某些Web服务器端的属性和方法
1、MapPath:将相对路径转换为绝对路径
eg:
转换服务器相对路径(只适用于ASP.NET中的类库)
Server.MapPath("~/images/logo.jpg")
转换根相对路径(从域名之后的/开始截取,需判断是否有虚拟目录)
Server.MapPath("/images/logo.jpg")
转换相对路径(从当前网页开始计算)
Server.MapPath("images/logo.jpg")
得到结果:D:Asp.Net上课案例第三章imglogo.jpg

2、Execute与Transfer方法:在一个网页中包含另一个网页
Execute和Transfer方法均会停止当前页面的执行,并转去执行用户在方法内指定的URL,同时用户的会话状态和任何当前的事务处理状态都将传递给新页面
Execute方法在URL参数指定的页面处理完后,控制权返回给先前的页面或调用此方法的页面,并且从此方法调用后的语句继续执行
Transfer方法在URL参数指定的页面处理完后,控制权不会返回给先前的页面,也不会返回给调用此方法的页面,直到在新页面完成结束

3、HtmlEncode方法和UrlEncode方法:都可以进行字符编码
HtmlEncode:对传入的数据进行HTML解析
Server.HtmlEncode("<b>昨天下雪了</b>");//输出效果<b>昨天下雪了</b>
UrlEncode:对传入的数据进行URL编码
Server.UrlEncode("http://www.baidu.com?wd=今天好开心&pwd=abc123")
//输出效果:http%3a%2f%2fwww.baidu.com%3fwd%3d%e4%bb%8a%e5%a4%a9%e5%a5%bd%e5%bc%80%e5%bf%83%26pwd%3dabc123
UrlDecode:对传入的数据进行URL解码码
Server.UrlDecode(已编码的url));//输出效果:解码恢复原来的http://www.baidu.com?wd=今天好开心&pwd=abc123

四、Application对象
Application对象是内置的ASP.NET对象,Application状态由HttpApplicationState类表示,它包含了所有与应用程序相关的方法和集合
创建一个Application对象后,它就可以在整个程序中使用, Application对象持续到应用程序关闭。

定义方法: Application["UserName"] = "张三";
使用方法: string name = Application["UserName"].ToString();

Lock() 用于防止用户更改 Application 对象的属性,使得首先调用该方法的用户会话拥有应用程序的控制权,从而可以改变应用程序的变量,在锁定释放前其他任何用户都不能编辑应用程序变量。
Unlock() 方法用于释放对应用程序变量的锁定,Unlock() 方法一旦执行,用户就会失去对应用程序的控制权
Tips: 通常在Global文件中的Application_Start事件中定义Application对象,在任何页面中都可以访问Application
Global.asax文件也称为ASP.NET应用程序文件,它是一个用于配置应用程序的设置文件,它主要负责处理Application_Start、Application_End、Session_Start、Session_End等事件

eg:

//先锁定,防止其他用户同时使用你的变量
Application.Lock();
//定义了两个应用程序级别的变量
Application["message"] = string.Empty;
Application["name"] = string.Empty;
//解锁,释放你的控制权,让其他用户也可以访问到此应用程序变量
Application.UnLock();

在其他页面中:
//获取应用程序级别的变量值
string name = Application["name"].ToString();
string message = Application["message"].ToString();

五、Cookie对象
Cookie主要用于在客户端浏览器中保存少量的用户信息
  会话级Cookie:不设置有效期,会话结束后失效
    HttpCookie cookie = new HttpCookie("UserName", txtUserName.Text);
    Response.Cookies.Add(cookie);
  持久性Cookie:需要设置有效期,到期后失效
    HttpCookie cookie1 = new HttpCookie("passWord", txtPassWord.Text);
    cookie1.Expires = DateTime.Now.AddDays(14);
    Response.Cookies.Add(cookie1);
  获取Cookie
    Request.Cookies["UserName"].Value
    Request.Cookies["passWord"].Value
注意:1、创建cookie时使用的是Response对象,获取cookie时使用的是Request对象
2、cookie因为编码方式的问题,不能直接记录中文信息,需要借助Server.UrlEncode()进行编码, 用Server.UrlDecode()进行解码

六、Session对象
Session被称为“会话控制”。Session对象存储特定用户会话所需的属性及配置信息。当会话过期或终止时,服务器会自动清除Session对象
定义:Session: Session["Name"] = "admin";
使用:Session: string name = Session["Name"].ToString();

Session和Cookie的区别:
相同点:都可以用来存储数据,都可以设置有效期
不同点:Session记录在服务端的,Cookie记录在客户端

原文地址:https://www.cnblogs.com/JuneDream/p/14077793.html