C#之玩转ASP.NET的内置对象

📒博客首页:蔚说的博客
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
🙏作者水平很有限,如果发现错误,求告知,多谢!
🌺有问题可私信交流!!!

ASP.NET的内置对象

使用Response页面跳转传值

用于响应用户请求并发送数据到客户端。
两个页面
Response.Redirect();跳转页面并传递数据也叫重定向

Response.Redirect("WebForm2.aspx?value=获得页面间的传值");

跳转过来用三种方式获得Response对象传递过来的数据

Response.Write(Request["value"]+"<br>");
Response.Write(Request.Params["value"] + "<br>");
Response.Write(Request.QueryString["value"]);

使用request对象获取客户端信息

使用request对象不仅可以获得页面传递的信息,还可以获得客户端的平台信息以及ip等

HttpBrowserCapabilities b = Request.Browser;//定义获取浏览器信息对象变量
            Response.Write("客户端浏览器信息" + "<br>");
            Response.Write("名称"+b.Browser + "<br>");
            Response.Write("类型" + b.Type + "<br>");
            Response.Write("版本" + b.Version + "<br>");
            Response.Write("操作平台" + b.Platform + "<br>");
            Response.Write("是否支持框架" + b.Frames + "<br>");
            Response.Write("是否支持表格" + b.Tables + "<br>");
            Response.Write("是否支持Cookies" + b.Cookies);

在这里插入图片描述

Application对象

Application对象用于共享应用级信息,即多个用户共享一个Application对象。
Application对象作用于全局应用程序,但是Application对象会产生性能上的瓶颈,所以他不适合存储比较大的数据集合。
添加一条数据
通过add添加

Application.Add("name1","value1");

通过对象的索引器

Application["name2"] = "value2";

更新已有的数据
通过set方法更新

Application.Set("name1", "value1");

更具索引修改

Application["name2"] = "value3";

获取一条数据

Application.Get("name1");

由于Application对象的作用范围是全局,为了避免每一次更新时多用户更新冲突在更新前后加上执行加锁和解锁的动作

Application.Lock();
Application.UnLock();

Session对象

Session对象用于将特定的用户信息存储在服务器内存中,只针对于单一网站使用者不同的客户端无法互相访问。Session对象将于联机机器离线时终止,也就是网站使用者关闭浏览器或者超过设定的Session对象的有效时间时,Session对象就会自动释放或关闭。
通常将一个用户访问一次称之为一个用户会话,同时产生一个同时产生一个与之对应的Session状态,Session是针对一个特定的用户的。
实例:使用Session对象保存用户信息
第一个页面:

 protected void Button2_Click(object sender, EventArgs e)
        {
            if (txtUserName.Text=="admin" &&txtPwd.Text=="admin")
            {
                Session["UserName"] = txtUserName.Text;
                Session["userPwd"] = txtPwd.Text;
                Session["LoginTime"] = DateTime.Now;
                Response.Redirect("WebForm2.aspx");
            }
            else
            {
                Response.Write("<script>alert('登陆失败')</script>");
            }
        }

第二个页面:

Response.Write("用户名:"+Session["userName"].ToString()+"\n");
            Response.Write("密码:"+Session["userPwd"].ToString()+"<br>");
            Response.Write("你的登陆时间是:" + Session["LoginTime"]);

结果截图展示:
在这里插入图片描述
在这里插入图片描述

Cookie对象

Cookie对象用于保存客户端请求的服务器页面信息,也可以进行非敏感性的用户信息,信息的保存时间可以根据用户的需求设置。数据信息是以文本的形式保存在计算机中,客户端在每一次请求过程中都会携带Cookie信息并将其发送到服务器,这就产生了隐患。
Cookie的四个关键属性

  1. Expires属性:设置Cookie过期时间
  2. Name属性:获取或设置Cookie的名称
  3. Value属性:获取或设置单个Cookie的值
  4. values属性:获取单个Cookie对象所包含的键值对集合

写入和获取Cookie数据
Cookie对象的读写都和客户端有关系,所以读操作都需要借助Request对象,写需要借助Response对象。
写入:

  1. 通过response.Cookise属性返回HttpCookieCollection类的索引器直接写入Cookie
Response.Cookies["CookieName"].Value = "CookieValue";
  1. 通过HttpCookie对象设置cookie信息,然后将该对象的实例添加到response.Cookise中,
HttpCookie cookie = new HttpCookie("CookieName");
cookie.Expires = DateTime.Now.AddMinutes(35);
cookie.Value = "CookieValue";
Response.Cookies.Add(cookie);

注意:在第二种方法中通过在HttpCookie类的钩爪方法设置了Cookie的名称,然后使用Expires设置了过期时间,再通过Value属性设置了Cookie的值,最后使用Response.Cookies.Add方法将Cookie写入。
读取:

  1. 通过response.Cookise属性返回HttpCookieCollection类的索引器读取
HttpCookie cookie = Request.Cookies["CookieName"];
string CookieValue = cookie.Value;
  1. 使用response.Cookise属性的Get方法进行读取
HttpCookie cookie = Request.Cookies.Get("CookieName");
string CookieValue = cookie.Value;

Server对象

Server对象定义了与web服务器相关的类,提供对服务器的方法和属性的访问,用于访问服务器上的资源。
Service对象是HttServiceUtility类的实例,而在MVC框架中是HttpServiceUtilityBase对象

  1. Server.MapPath方法用来返回与web服务器上指定的虚拟路径相对应的物理路径。
Server.MapPath(path);

其中path表示web服务器上的虚拟路径,如果path值为空,则返回包含当前应用程序的完整物理路径。例如在浏览器在输出指定文件Default.aspx的物理路径,可以使用以下代码

 Response.Write(Server.MapPath("Default.aspx"));
  1. Server.UrlPathEncode方法用于通过对URL传递到服务器进行编码。
Server.UrlPathEncode(string);

其中,string为需要进行编码的数据

Response.Write(Server.UrlPathEncode("Http://Default.aspx"));

编码后的输出结果是:Http%3a%2f%2fDefault.aspx

  1. Service对象的UrlEncode方法的编码规则如下:
  • 空格将被加号(+)字符代替
  • 英文字符不被编码
  • 非ASCII(美国信息交换标准代码)字符将被转义码所代替
  1. Service.UrlDecode方法用来对字符串进行URL解码并返回已解码的字符串
Server.UrlDecode(string);  

其中String为需要解码的数据

Response.Write(Server.UrlDecode("Http%3a%2f%2fDefault.aspx"));
解码输出的结果是:Http://Default.aspx

使用server对象重定向页面
1.使用Server对象的Execute方法,将页面跳转重定向到WebForm2.aspx,然后将控制权返回到主调页面。

Server.Execute("WebForm2.aspx?message=Execute");//跳转页面并传入参数
Response.Write("WebForm2.aspx页");//响应输出页面

2.使用Server对象的Transfer方法,将页面跳转重定向到WebForm2.aspx,然后将控制权完全转移到WebForm2.aspx。

Server.Transfer("WebForm2.aspx?message=Transfer");//跳转页面并传入参数
Response.Write("WebForm2.aspx页");//跳转页面并传入参数

3.WebForm2.aspx页面,在页面加载方法中获取的参数数据将数据输出到页面中

string message = Request.QueryString["message"];//获取参数
Response.Write(message);//响应输出值

效果图如下:
单击Execute按钮结果
单机Transfer效果图

疑难解答:

Request对象获取客户端数据的两种方式的区别:

Request对象的Query String和Form在获取客户端数据时是有区别的,Query String为GET方式,Form是POST方式,但是直接使用Request对象是不区分两种方式的。

Cookie对象与Session对象的使用场景选择

实际应用中,在向客户端写入Cookie数据时都会设置Cookie的过期时间,Cookie对象和Session对象具有相同的功能,两者区别在于Cookie是存储在客户端的,而Session对象是存储在服务器端的,相对来讲Session比Cookie安全,但同时也带来了服务器的资源压力。

练习实现用户七天免登录功能

跳转页面:
传送门✔✨

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蔚说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值