3_Server

Server

表示当前页面的服务器对象
是HttpServerUtility类的实例,HttpServerUtility的父类Page

常用方法

1、HtmlEncode();对字符串进行html编码
比如:有字符串是这样的:
string str = "<span style='color: red'>hello world</span><br />";
//前台页面原样输出就得编码,不然Response.write方法就会把它当作html元素输出
 str = Server.HtmlEncode(str);//对字符串进行html编码,
 //编码之后:&lt;span style=&#39;color: red&#39;&gt;hello world&lt;/span&gt;&lt;br /&gt

Response.Write(str);//在前台页面输出的时候就是原格式

2、HtmlDecode();对字符串进行html解码,解码为html元素
//html编码之后的格式
string str = " &lt; span style = &#39;color: red&#39;&gt;hello world&lt;/span&gt;&lt;br /&gt";
str = Server.HtmlDecode(str);//解码//<span style='color: red'>hello world</span><br />
Response.Write(str);    //在前台页面输出的时候就是html标签格式
3、UrlEncode();对url编码
 string str2 = "One.aspx?name=张三";

str2 = Server.UrlEncode(str2);//对字符串进行html编码

 Response.Write(str2);//在前台页面输出的结果:One.aspx%3fname%3d%e5%bc%a0%e4%b8%89
4、UrlEncode();对url编码
string  str2 = Server.UrlDecode("One.aspx%3fname%3d%e5%bc%a0%e4%b8%89");//解码
 Response.Write(str2);    //在前台页面输出的结果:One.aspx?name=张三
4、MapPath();将虚拟路径转换为实际可用的路径
// @"~\Models\test.txt":如果直接这样用相对路径的话,它找不到,

                    string path = @"~\Models\test.txt";
                    path = Server.MapPath(path);

5、Transfer();

在服务器端停止对该页的执行(不会把本页面的内容返回给自己,只把url加载的页面返回回来),根据url加载指定的页面,如果是submit提交的请求,地址栏不会变。

地址栏不会发生变化,是因为,这是在服务器端响应返回了一个新页面给客户端,客户端不知道你是一个新页面,而且客户端又是通过submit提交给自己的页面的,但是它会停止对该页面的执行,所以它仅仅只会把新的页面的html返回回去,自己的html不会返回,所以用户不能看到先前的html页面里的元素了。所以通过这个方法使用问号传参数在地址栏不会显示传递的参数
Server.Transfer("~/Models/One.aspx");

6、Execute();

在当前上下文中执行指定的处理程序,服务器端不会停止对该页的执行(会把本页面的内容和url加载的页面返回回来),根据url加载指定的页面。
和Transfer相反,由于服务器端不会停止对该页的执行,所以会将根据url加载指定的页面和自己原来的页面都返回回去,所以用户可以看到之前页面上的内容 。
和Transfer共同点:都是在服务器端实现重定向

Server.Execute("~/Models/One.aspx");

Execute()、Transfer()和Response.Redirect()的区别:

Redirect在客户端进行跳转,跳转地址栏会变化,相当于服务器端给客户端发了一个响应,让客户端自己去访问另一个页面,所以客户端知道要重新定向,
Execute()和Transfer()相当于是在服务器里进行跳转,客户端不知道,所以地址栏不会变,而Execute和Transfer的区别就是一个会停止对当前页面的执行 ,一个会保留对当前页的执行。

posted @ 2021-10-27 07:32  青仙  阅读(112)  评论(0编辑  收藏  举报