/*自定义导航栏*/

【ASP.NET】asp.net 页面调用服务端对象值

ASP.NET页面内置对象



ASP.NET中常用的内置对象及功能说明如下所示:
对 象 名         功  能  说  明
Page           用于操作整个页面
Response         用于向浏览器输出信息
Request          用于获取来自浏览器的信息
Server                    提供服务器端的一些属性和方法
Application                用于共享多个会话和请求之间的全局信息
Session                   用于存储特定用户的会话信息
Cookies                   用于设置或获取Cookie信息



一..Page对象
Page对象是由System.Web.UI命名空间中的Page类来实现的。Page对象提供的常用属性、方法及事件如下所示:
名  称                功  能  说  明
IsPostBack属性    获取一个值,该值表示该页是否正为响应客户端回发而加载
IsValid属性      获取一个值,该值表示页面是否通过验证
Application属性    为当前 Web 请求获取 Application 对象。
Request属性      获取请求的页的 HttpRequest 对象
Response属性     获取与 Page 关联的 HttpResponse 对象。该对象使您得以将 HTTP 响应数据发送到客户端,并包含有关该响应的信息。
Session属性      获取 ASP.NET 提供的当前 Session 对象。
Server属性      获取 Server 对象,它是HttpServerUtility 类的实例。
DataBind方法     将数据源绑定到被调用的服务器控件及其所有子控件
RegisterClientScriptBlock方法  向页面发出客户端脚本块
Init事件        当服务器控件初始化时发生
Load事件       当服务器控件加载到Page对象中时发生
Unload事件      当服务器控件从内存中卸载时发生

 


二,Response对象

小实例:

View Code
 /// <summary>
        /// 题目:Response方法演练
        /// 时间:2012年11月20日9:49:15
        /// 描述:对Response输出字符数组,知道遇到指定字符串停止程序,清除缓存区及跳转练习
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button1_Click(object sender, EventArgs e)
        {
            string[] str = { "", "", "", "", "", "" };
            Response.Write("字符串数组过滤后结果是:<br/>");
            Response.Write("<b>注:由于使用了end终止程序,所以不会实现页面跳转.</b><br/>");
            for (int i = 0; i < str.Length; i++)
            {
                if (str[i] == "")
                {
                    Response.End();//终止程序输出
                }
                else
                {
                    Response.Write(str[i]);
                }
            }
            Response.Clear();//清除缓存区
            Response.Redirect("WebForm3.aspx");
            
        }

运行:

扩展知识:

Response对象用语输出数据到客户端,包括向浏览器输出数据、重定向浏览器到另一个URL或向浏览器输出Cookie文件。
其类名为httpResponse
属性和方法
Write() 向客户端发送字符串信息
BufferOutPut属性 是否使用缓存
Clear() 清除缓存
Flush() 强制输出缓存的所有数据
Redirect() 网页转向地址
End() 终止当前页的运行
WriteFile() 读取一个文件,并且写入客户端输出流
(实质:打开文件,并且输出到客户端。)
1.Response.Write 变量数据或字符串
Response.Write (变量数据或字符串)
<%=…%>
Response.Write("<script language=javascript>alert('欢迎学习ASP.NET')</script>")
Response.Write("<script>window.open('WebForm2.aspx')</script>")
2.Response对象的Redirect方法将客户端浏览器重定向到另外的URL上,即跳转到另一个网页。
例如:
Response.Redirect("http://www.163.net/")
3. Response.End() 终止当前页的运行
4.Response.WriteFile(FileName)
其中:
FileName 指代需向浏览器输出的文件的文件名


 

三.Request对象

小实例:

View Code
 /// <summary>
        /// 题目:Request方法演练
        /// 时间:2012年11月20日9:53:52
        /// 描述:对Request接受字符串及输出等相关操作
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        ///WebForm3.aspx跳转
        protected void Button1_Click(object sender, EventArgs e)
        {
            string str="hello";
            string name = "jon";
            Response.Redirect("WebForm2.aspx?id=" + str+"&name="+name);
        }
 //接收页面:WebForm2.aspx
        protected void Button2_Click(object sender, EventArgs e)
        {
            Response.Write("获取页面请求字符串:" + Request.QueryString.ToString() + "<br/>");
            Response.Write("获取页面参数值:" + Request.QueryString["id"].ToString() + "<br/>");
            Response.Write("获取页面传递参数值:" + Request.Params["name"] + "<br/>");
            Response.Write("获取页面请求地址" + Request.Path.ToString() + "<br/>");
            Response.Write("获取页面客户端IP地址" + Request.UserHostAddress + "<br/>");
            Response.Write("获取页面客户端主机名" + Request.UserHostName + "<br/>");
            Response.Write("获取页面客户端浏览器信息" + Request.Browser.Type.ToString() + "<br/>");
        }

扩展知识:


Request对象是由类System.Web.HttpRequest来实现。Request对象常用的属性和方法如下所示。
名  称            功  能  说  明
Cookies属性          获取客户端发送的Cookie的集合
Form属性           获取表单变量的集合
QueryString属性        获取HTTP查询字符串变量集合

四。 Server对象

小实例:

View Code
/// <summary>
        /// 题目:Server方法演练
        /// 时间:2012年11月20日13:08:20
        /// 描述:通过调用本页面,实现对Server传值的演练
        /// </summary>
        /// 发送登陆页面:WebForm2.aspx
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button7_Click(object sender, EventArgs e)
        {
            Response.Write("远程服务器名:" + Server.MachineName + "<br/>");
            Response.Write(Server.MapPath("~/WebForm2.aspx") + "<br/>");
            string str;
            str = Server.HtmlEncode("<b>HTML 内容</b></br>");
            Response.Write(str + "<br/>");
            str = Server.HtmlDecode(str);
            Response.Write(str + "<br/>");
        }

扩展知识:

Server对象提供对服务器上的方法和属性进行的访问 .其类名称是HttpServerUtility.
Server对象的主要属性有:
MachineName:获取服务器的计算机名称。
ScriptTimeout:获取和设置请求超时(以秒计)。
方法名称 说明
CreateObject 创建 COM 对象的一个服务器实例。
Execute 执行当前服务器上的另一个aspx页,执行完该页后再返回本页继续执行
HtmlEncode 对要在浏览器中显示的字符串进行HTML编码并返回已编码的字符串。
HtmlDecode 对HTML编码的字符串进行解码,并返回已解码的字符串。
MapPath 返回与 Web 服务器上的指定虚拟路径相对应的物理文件路径。
Transfer 终止当前页的执行,并为当前请求开始执行新页。
UrlEncode 将代表URL的字符串进行编码,以便通过 URL 从 Web 服务器到客户端进行可靠的 HTTP 传输。
UrlDecode 对已被编码的URL字符串进行解码,并返回已解码的字符串。
UrlPathEncode 对 URL 字符串的路径部分进行 URL 编码,并返回已编码的字符串。
编码:
Server.HtmlEncode(“HTML代码”)
解码:
Server.HtmlDecode(“已编码的HTML”)
1.Server对象的MapPath方法将虚拟路径或相对于当前页的相对路径转化为Web 服务器上的物理文件路径。
语法:Server.MapPath(“虚拟路径”)
String FilePath
FilePath = Server.MapPath(“/”)
Response.Write(FilePath)



五。Application对象

小实例:

View Code
 /// <summary>
        /// 题目:Application方法演练
        /// 时间:2012年11月20日12:59:11
        /// 描述:通过记录网站在线人数的小实例,对Application进行演练
        /// </summary>
        /// WebForm2页面,统计记录
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                lblApplication.Text = "网站在线人数" + Application["userCount"];
            }
        }
// WebForm2页面,注销Application事件
        protected void btnApplication_Click(object sender, EventArgs e)
        {
            Session.Abandon();
        }

/// <summary>
        /// 题目:
        /// 时间:2012年11月20日13:02:13
        /// 描述:在Global.asac中对Application相应事件设置
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        //初始化用户登陆人数为0
        void Application_Start(object sender, EventArgs e)
        {
            // 在应用程序启动时运行的代码
            Application.Lock();
            Application["userCount"] = 0;
            Application.UnLock();
        }
 //用户数量加1
        void Session_Start(object sender, EventArgs e)
        {
            // 在新会话启动时运行的代码
            
            Application.Lock();
            Application["userCount"] = int.Parse(Application["userCount"].ToString()) + 1;
            Application.UnLock();

        }
        //用户数量减1
        void Session_End(object sender, EventArgs e)
        {
            // 在会话结束时运行的代码。 
            // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
            // InProc 时,才会引发 Session_End 事件。如果会话模式设置为 StateServer 
            // 或 SQLServer,则不会引发该事件。
            
            Application.Lock();
            Application["userCount"] = int.Parse(Application["userCount"].ToString()) -1;
            Application.UnLock();

        }

<!--在system.web中配置,不可少,否则不执行-->
  <system.web>
    <sessionState mode="InProc"/>
  <system.web/>

运行结果:

扩展知识:


Application对象在实际网络开发中的用途就是记录整个网络的信息,如上线人数、在线名单、意见调查和网上选举等。在给定的应用程序的多有用户之间共享信息,并在服务器运行期间持久的保存数据。而且Application对象还有控制访问应用层数据的方法和可用于在应用程序启动和停止时触发过程的事件。
1.使用Application对象保存信息
使用Application对象保存信息
Application(“键名”) = 值

Application(“键名”,值)
获取Application对象信息
变量名 = Application(“键名”)
或:变量名 = Application.Item(“键名”)
或:变量名 = Application.Get(“键名”)
更新Application对象的值
Application.Set(“键名”, 值)
删除一个键
Application.Remove(“键名”, 值)
删除所有键
Application.RemoveAll()
或Application.Clear()
2.有可能存在多个用户同时存取同一个Application对象的情况。这样就有可能出现多个用户修改同一个Application命名对象,造成数据不一致的问题。
HttpApplicationState 类提供两种方法 Lock 和 Unlock,以解决对Application对象的访问同步问题,一次只允许一个线程访问应用程序状态变量。
关于锁定与解锁
锁定:Application.Lock()
访问:Application(“键名”) = 值
解锁:Application.Unlock()
注意:Lock方法和UnLock方法应该成对使用。
可用于网站访问人数,聊天室等设备
3. 使用Application事件
在ASP.NET 应用程序中可以包含一个特殊的可选文件——Global.asax 文件,也称作 ASP.NET 应用程序文件,它包含用于响应 ASP.NET或HTTP模块引发的应用程序级别事件的代码。
Global.asax 文件提供了7个事件,其中5个应用于Application对象

 事件名称 说明
Application_Start 在应用程序启动时激发
Application_BeginRequest 在每个请求开始时激发
Application_AuthenticateRequest 尝试对使用者进行身份验证时激发
Application_Error 在发生错误时激发
Application_End 在应用程序结束时激发


六。Session

小实例:

View Code
 /// <summary>
        /// 题目:Session方法演练
        /// 时间:2012年11月20日12:52:53
        /// 描述:通过一个简单登陆,实现对Session传值的演练
        /// </summary>
        /// 发送登陆页面:WebForm2.aspx
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Button3_Click(object sender, EventArgs e)
        {
            string user = usertxt.Text;
            string pwd = pwdtxt.Text;
            if (user == "" || pwd == "")
            {
                this.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert('用户名或密码为空!')<script>");
                //Response.Write("<script>alert('用户名或密码为空!')<script>");
            }
            else
            {
                Session["name"] = user;
                Response.Redirect("WebForm3.aspx");
            }
        }
 //接收页面WebForm3.aspx
        protected void Button2_Click(object sender, EventArgs e)
        {
            if (Session["name"] != null)
            {
                lblname.Text = "用户名:" + Session["name"];
            }
            else
            {
                lblname.Text = "用户名错误";
            }
        }

 

运行结果:

发送页面:

接收页面:

扩展知识:

Session即会话,是指一个用户在一段时间内对某一个站点的一次访问。
Session对象在.NET中对应HttpSessionState类,表示“会话状态”,可以保存与当前用户会话相关的信息。
Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息。用户在应用程序的页面切换时,Session对象的变量不会被清除。
对于一个Web应用程序而言,所有用户访问到的Application对象的内容是完全一样的;而不同用户会话访问到的Session对象的内容则各不相同。 Session可以保存变量,该变量只能供一个用户使用,也就是说,每一个网页浏览者都有自己的Session对象变量,即Session对象具有唯一性。
(1)将新的项添加到会话状态中
语法格式为:
Session ("键名") = 值
或者
Session.Add( "键名" , 值)
(2)按名称获取会话状态中的值
语法格式为:
变量 = Session ("键名")
或者
变量 = Session.Item("键名")
(3)删除会话状态集合中的项
语法格式为:
Session.Remove("键名")
(4)清除会话状态中的所有值
语法格式为:
Session.RemoveAll()
或者
Session.Clear()
(5)取消当前会话
语法格式为:
Session.Abandon()
(6)设置会话状态的超时期限,以分钟为单位。
语法格式为:
Session.TimeOut = 数值
Global.asax 文件中有2个事件应用于Session对象
事件名称 说明
Session_Start 在会话启动时激发
Session_End 在会话结束时激发

 


七 Cookie对象

小实例:

View Code
/// <summary>
        /// 题目:Cookies方法演练
        /// 时间:2012年11月20日13:11:51
        /// 描述:通过写入ip地址和读取,以及加密解密操作实现对Cookies传值的演练
        /// </summary>
        /// 发送登陆页面:WebForm2.aspx
        /// <param name="sender"></param>
        /// <param name="e"></param>
        //写入ip地址
        protected void Button5_Click(object sender, EventArgs e)
        {
            string UserIP = Request.UserHostAddress.ToString();
            Response.Cookies["IP"].Value = UserIP;
            Response.Cookies["IP"].Expires = DateTime.Now.AddDays(1);
        }
        //读取ip地址
        protected void Button6_Click(object sender, EventArgs e)
        {
            if (Request.Cookies["IP"] != null)
            {
                lblcookie.Text = Request.Cookies["IP"].Value;
            }
        }

运行结果:

扩展知识:

Cookie就是Web服务器保存在用户硬盘上的一段文本。Cookie允许一个Web站点在用户的电脑上保存信息并且随后再取回它。信息的片断以‘键/值’对的形式存储。
Cookie是保存在客户机硬盘上的一个文本文件,可以存储有关特定客户端、会话或应用程序的信息,在.NET中对应HttpCookie类。
有两种类型的Cookie:会话Cookie(Session Cookie)和持久性Cookie。前者是临时性的,一旦会话状态结束它将不复存在;后者则具有确定的过期日期,在过期之前Cookie在用户的计算机上以文本文件的形式存储。
在服务器上创建并向客户端输出Cookie可以利用Response对象实现。
Response对象支持一个名为Cookies的集合,可以将Cookie对象添加到该集合中,从而向客户端输出Cookie。
通过Request对象的Cookies集合来访问Cookie


七 补充:Form表单数据提交到服务器的方式有两种:Get和Post方式。
    <html>
    <head>
    <title>使用POST传送数据</title>
    </head>
    <body>
    <form method="post" action="do.aspx">
    请输入您的名字:<input type="text" name="mingzi"><br>
    <input type="submit" value="提交">
    </form>
    </body>
    </html>
在do.aspx中将使用Request.Form["mingzi"]来获取用户输入的名字,do.aspx的代码如下:
private void Page_Load(Object o,EventArgs e) 
//页面加载后即显示表单数据
    {
        string strmessage="您的名字为:";  //定义字符串变量并赋初值
        strmessage+= Request.Form["mingzi"];  //把表单数据串接到变量
        Response.Write(strmessage);//输出变量
    }


QueryString数据集合
可以利用QueryString集合来获取客户端通过GET方法传送的表单数据,如果把form.htm中表单的method属性值由POST改为GET,则在do.aspx中就需要通过Request.QueryString ["mingzi"]来获取输入的名字。因为GET方法传送数据有一定的限制并且不安全,所以表单一般不使用GET方法。
private void Page_Load(object sender, System.EventArgs e)
  {
   if(Request.QueryString["mingzi"].ToString()!="")
    Response.Write("您的名字是:"+Request.QueryString["mingzi"].ToString());
  }

 

 

 

 


 

posted @ 2012-11-20 13:21  伏草惟存  阅读(2286)  评论(5编辑  收藏  举报