




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
HTTP请求,响应与状态管理第一页,共48页。本章要点:掌握HttpRequest对象的应用掌握HttpResponse对象的应用掌握HttpServerUtility对象的应用,理解不同方法的页面重定向掌握跨页面提交的应用。了解ViewState、Cookie,掌握Session、Application应用。2第二页,共48页。目录6.1HTTP请求6.2HTTP响应6.3HttpServerUtility6.4跨网页提交6.5状态管理6.6小结3第三页,共48页。6.1HTTP请求Page类的属性Request是一个HttpRequest对象,它封装了HTTP请求信息。ASP.NET通过Request对象能够获取客户端和服务器的信息,如访问客户端的浏览器信息、查询字符串、Cookie等信息。4第四页,共48页。查询字符串是指跟在URL后面的变量及值,以“?”与URL间隔,不同的变量之间以“&”间隔。可以实现不同页面之间的数据传递。Cookie:中文名称为小型文字档案或小甜饼,指某些网站为了辨别用户身份而储存在用户本地终端(ClientSide)上的数据(通常经过加密)。5第五页,共48页。HttpRequest对象对应的数据集合(属性)6第六页,共48页。实例6-1QueryString的使用当单击QueryString1.aspx页面上链接后,页面重定向到QueryString2.aspx;在页面QueryString2.aspx中显示从QueryString1.aspx传递过来的查询字符串数据信息。源程序:QueryString1.aspx(P133)源程序:QueryString2.aspx7第七页,共48页。源程序:QueryString1.aspx<div><asp:HyperLinkID="HyperLink1"runat="server"NavigateUrl="~/chap6/QueryString2.aspx?username=张三&age=23">传递查询字符串到QueryString2.aspx</asp:HyperLink></div>源程序:QueryString2.aspx<div><asp:LabelID="lblMsg"runat="server"></asp:Label></div>QueryString2.aspx.csusingSystem;publicpartialclasschap6_QueryString2:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse){//获取从QueryString1.aspx中传递过来的查询字符串值lblMsg.Text=Request.QueryString["username"]+",你的年龄是:"+Request.QueryString["age"];}}8第八页,共48页。ServerVariables数据集合可很方便地取得服务器端或客户端的环境变量信息,如客户端的IP地址等。语法格式如下: Request.ServerVariables["环境变量名"]9第九页,共48页。常用的环境变量表10第十页,共48页。Browser数据集合用于判断用户的浏览器类型、版本等,以便根据不同的浏览器运行不同的网页。语法格式为: Request.Browser["浏览器特性名"]。11第十一页,共48页。浏览器特性名对应表12第十二页,共48页。实例6-2ServerVariables和Browser应用界面显示信息为ServerVariables和Brower数据集合中相应值。源程序:Request.aspx(P134)<div><asp:LabelID="lblMsg"runat="server"
</asp:Label><br/></div>Request.aspx.csusingSystem;publicpartialclasschap6_Request:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse){lblMsg.Text="服务器IP地址:"+Request.ServerVariables["Local_ADDR"]+"<br/>";lblMsg.Text+="客户端IP地址:"+Request.ServerVariables["Remote_ADDR"]+"<br/>";lblMsg.Text+="浏览器类型:"+Request.Browser["Browser"]+"<br/>";lblMsg.Text+="浏览器版本:"+Request.Browser["Version"]+"<br/>";lblMsg.Text+="是否支持Cookies:"+Request.Browser["Cookies"];}}13第十三页,共48页。6.2HTTP响应ASP.NET通过Page类的属性Response(即HttpResponse类的对象)可以很好地控制输出的内容和方式,如页面重定向、保存Cookie等。14第十四页,共48页。HttpResponse对象的常用属性和方法15第十五页,共48页。实例6-3Write()方法应用利用Write()方法除可以输出提示信息、变量值外,也可以输出XHTML文本或JavaScript脚本。源程序:Write.aspx(P136)实例6-4Redirect()方法应用选择“教师”后,页面重定向到教师页面Teacher.aspx,选择“学生”后页面重定向到学生页面Student.aspx。源程序:Redirect.aspx(P137)源程序:Teacher.aspx(P138)usingSystem;publicpartialclasschap6_Write:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse){Response.Write("<center>");for(inti=1;i<=4;i++){Response.Write("<p><fontsize="+i.ToString()+">我喜欢ASP.NET!</font></p>");}Response.Write("</center>");}}16第十六页,共48页。实例6-3Write()方法应用利用Write()方法除可以输出提示信息、变量值外,也可以输出XHTML文本或JavaScript脚本。源程序:Write.aspx(P136)实例6-4Redirect()方法应用选择“教师”后,页面重定向到教师页面Teacher.aspx,选择“学生”后页面重定向到学生页面Student.aspx。源程序:Redirect.aspx(P137)源程序:Teacher.aspx(P138)17第十七页,共48页。Redirect.aspx.csusingSystem;publicpartialclasschap6_Redirect:System.Web.UI.Page{protectedvoidbtnSubmit_Click(objectsender,EventArgse){if(rdoltStatus.SelectedValue=="teacher"){Response.Redirect("Teacher.aspx?name="+txtName.Text);}else{Response.Redirect("Student.aspx?name="+txtName.Text);}}}Teacher.aspx.csusingSystem;publicpartialclasschap6_Teacher:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse){lblMsg.Text=Request.QueryString["name"]+"老师
,欢迎您!";}}18第十八页,共48页。6.3HttpServerUtilityPage类的属性Server(即HttpServerUtility类的对象)封装了服务器端的一些操作,如转换XHTML元素标志、获取网页的物理路径等。19第十九页,共48页。Server对象的常用属性和方法表20第二十页,共48页。Response.Write(Server.HtmlEncode("Thisisadog<hr/>")+"<br/>");
Response.Write("<ahref=Student.aspx?name=张三>Student.aspx</a><br/>");
Response.Write("<ahref=Student.aspx?name="+Server.UrlEncode("张三")+">Student.aspx)</a>");因使用了Server.UrlEncode()方法,将空格转换为“+”不
再丢失“张”后面的信息。21第二十一页,共48页。6.4跨网页提交页面重定向(页面之间的调用及数据传递)在C#代码中利用Response.Redirect(URL)、Server.Execute(URL)和Server.Transfer(URL)方法。在页面中可以采用<a>元素、HyperLink控件;利用Button控件方式也可以实现跨网页提交。22第二十二页,共48页。区分Response.Redirect()、
Server.Execute()和Server.Transfer()Redirect()方法尽管在服务器端执行,但重定向实际发生在客户端,可从浏览器地址栏中看到地址变化;而Execute()和Transfer()方法的重定向实际发生在服务器端,在浏览器的地址栏中看不到地址变化。Redirect()和Transfer()方法执行完新网页后,并不返回原网页;而Execute()方法执行完新网页后会返回原网页继续执行。23第二十三页,共48页。(续)Redirect()方法可重定向到同一网站的不同网页,也可重定向到其它网站的网页;而Execute()和Transfer()方法只能重定向到同一网站的不同网页。利用Redirect()方法在不同网页之间传递数据时,采用查询字符串形式;而Execute()和Transfer()方法传递数据方式与Button按钮相同。24第二十四页,共48页。Button控件方式在实现跨网页提交时,需要将源网页上Button控件的属性PostBackUrl值设置为目标网页路径。而在目标页上,需要在页面头部添加PreviousPageType指令,设置属性VirtualPath值为源网页路径,如: <%@PreviousPageTypeVirtualPath="~/chap6/Cross1.aspx"%>25第二十五页,共48页。从目标网页访问源网页中数据的方法1、利用PreviousPage.FindControl(ID)方法访问源网页上的控件;2、在源网页上定义公共属性,再在目标网页上利用“PreviousPage.属性名”获取源网页中数据。Button控件方式(续)26第二十六页,共48页。实例6-6跨网页提交应用在Cross1.aspx中输入“用户名、密码”后单击“确定”,此时页面提交到Cross2.aspx,在该页面中显示Cross1.aspx中输入的数据信息。源程序:Cross1.aspx(P141)源程序:Cross2.aspxCross1
中定义公共属性Name,在Cross2中利用“PreviousPage.Name”获取源网页中数据。利用PreviousPage.FindControl()方法访问源网页上的控件27第二十七页,共48页。Cross1.aspx<asp:LabelID=“Label1”runat=“server”Text=“用户名:”</asp:Label><asp:TextBoxID="txtName"runat="server"></asp:TextBox><br/><asp:LabelID="Label2"runat="server"Text="密码:"></asp:Label><asp:TextBoxID="txtPassword"runat="server"TextMode="Password"></asp:TextBox><br/><asp:ButtonID="btnSubmit"runat="server"Text="确定"PostBackUrl="Cross2.aspx"/>Cross1.aspx.cspublicpartialclasschap6_Cross1:System.Web.UI.Page{publicstringName//公共属性Name,获取用户名文本框中内容{get{returntxtName.Text;}}}28第二十八页,共48页。Cross2.aspx<%@PreviousPageTypeVirtualPath="Cross1.aspx"%><asp:LabelID="lblMsg"runat="server"></asp:Label>
Cross2.aspx.csprotectedvoidPage_Load(objectsender,EventArgse){//判断是否为Button跨网页提交if(PreviousPage.IsCrossPagePostBack==true){//通过公共属性获取值lblMsg.Text="用户名:"+PreviousPage.Name+"<br/>";//先通过FindControl()找到源页中控件,再利用控件属性获取值TextBoxtxtPassword=(TextBox)PreviousPage.FindControl("txtPassword");lblMsg.Text+="密码:"+txtPassword.Text;}}从这个例子中得到什么启示?29第二十九页,共48页。Server.Execute()和Server.Transfer()方法也是通过PreviousPage访问源网页,如何与Button区分?PreviousPage.IsCrossPagePostBack的值。如果是Button跨网页提交,那么属性IsCrossPagePostBack值为true;如果是调用Server.Execute()或Server.Tranfer()方法,那么属性IsCrossPagePostBack值为false。30第三十页,共48页。6.5状态管理客户端状态是指网页系统的一些信息保留在客户端计算机上。服务器端状态是指网页系统的一些数据保存于服务器。客户端状态由于状态数据保存在客户端,所以不消耗服务器内存资源,但容易泄露数据信息,安全性较差。服务器端状态将消耗服务器端内存资源,但具有较高的安全性。31第三十一页,共48页。禁用ViewState:属性EnableViewState设置为false。<asp:GridViewID="GridView1"runat="server"EnableViewState="False"></asp:GridView>禁止整个网页的ViewState:使用@Page指令。<%@PageEnableViewState="false"Language="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="chap6_Default"%>1、客户端状态ViewState又称为视图状态,在浏览器中选择“查看”→“源文件”可查看ViewState。32第三十二页,共48页。2、客户端状态Cookie保存到客户端硬盘或内存中的一小段文本信息,如站点、客户、会话等有关的信息。用户访问不同站点时,各个站点都可能会向用户的浏览器发送一个Cookie,浏览器会分别存储所有的Cookie。Cookie文本文件存储于“盘符:\DocumentsandSettings\<用户名>\Cookies”文件夹。ASP.NET提供System.Web.HttpCookie类来处理Cookie,常用的属性是Value和Expires。可以在客户端修改Cookie设置和禁用Cookie。33第三十三页,共48页。3、服务器端状态Session又称会话状态,用户访问网站,就会产生一个Session对象,ASP.NET用一个唯一的120位SessionID来标识每一个会话。典型的应用有储存用户信息、多网页间信息传递、购物车等。从用户开始访问网站时计时,当计时达到会话设定时间并且期间没有访问操作时,则会话自动结束。如果同一个用户在浏览期间关闭浏览器后再访问同一个网页,服务器会为该用户产生新的Session。
Session是System.Web.HttpSessionState类的实例,是Page类的属性。34第三十四页,共48页。HttpSessionState常用的属性、方法和事件表Global.asax文件在网站所在的目录中,与首页在同一个文件夹。右击网站文件夹,选择“添加新项”,再选择“全局应用程序类”,按“添加”。35第三十五页,共48页。Session状态(变量)的定义与赋值: Session[“Name”]=“张林”; Session.Contents[“Name”]=“张林”;注意:Session使用的名称不区分大小写,因此不要用大小写区分不同变量。实例6-8Session应用本实例能保护某些网页,如要进入Session.aspx页面,则首先要通过登录认证。源程序:Session.aspx(P149)36第三十六页,共48页。程序说明:当用户直接访问Session.aspx时,会判断Session["Name"]状态值,若为空则重定向到SessionLogin.aspx,否则显示欢迎信息。在SessionLogin.aspx中用户登录成功后,将建立Session[“Name”]状态值。此时要测试是否存在Session[“Name”]状态值,应在打开SessionLogin.aspx页面的浏览器中直接更改地址来访问Session.aspx。继续运行其它网页,保持在同一个会话期。主要代码说明:37第三十七页,共48页。//Session.aspx<asp:LabelID="lblMsg"runat="server"></asp:Label>//Session.aspx.csprotectedvoidPage_Load(objectsender,EventArgse){if(Session["Name"]!=null){lblMsg.Text=Session["Name"]+",欢迎您!";}else{Response.Redirect("SessionLogin.aspx");}}38第三十八页,共48页。//SessionLogin.aspx及cs代码<asp:LabelID="Label1"runat="server"Text="用户名:"></asp:Label><asp:TextBoxID="txtName"runat="server"></asp:TextBox><br/><asp:LabelID=“Label2”runat=“server”Text="密码:"></asp:Label><asp:TextBoxID="txtPassword"runat="server"TextMode="Password"></asp:TextBox><br/><asp:ButtonID="btnSubmit"runat="server"Text="确定"OnClick="btnSubmit_Click"/>protectedvoidbtnSubmit_Click(objectsender,EventArgse){if(txtName.Text=="ssg"&&txtPassword.Text=="111"){Session["Name"]="ssg";}//response.redirect()}39第三十九页,共48页。//TestSession.aspx及cs代码<ahref=“session1.aspx”>链接一</a><br/><br/><ahref=“session2.aspx”>链接二</a><br/><br/><ahref=“session3.aspx”>链接三</a><br/><br/>protectedvoidPage_Load(objectsender,EventArgse){Session[“userid”]=“Gary111”;}
//session1.aspx、session2.aspx、session3.aspxcs代码protectedvoidPage_Load(objectsender,EventArgse){Response.Write(“用户名为:”+Session[“userid”];}//通过点击超链接Session[“userid”]的值被传到各个链接页面上。40第四十页,共48页。4、Application(对象)又称应用程序状态,与应用于单个用户的Session状态不同,它应用于所有的用户。在网站运行时存在,网站关闭时将被释放。因此,如果需要将状态数据保存下来,则适宜保存在数据库中。是System.Web.HttpApplicationState类的实例。41第四十一页,共48页。Application是面对所有用户的,当要修改Application状态值时,首先要调用Application.Lock()方法锁定,值修改后再调用Application.UnLock()方法解除锁定。
Application.Lock();
Application["Count"]=(int)Application["Count"]+1;Application.UnLock();与Application相关的事件主要有Application_Start、Application_End与Session类似,这些事件代码都存放于Global.asax文件中。
42第四十二页,共48页。实例6-9统计网站在线人数页面呈现网站在线人数。需考虑3个方面:初始化计数器;当一个用户访问网站时,计数器增1;当一个用户离开网站时,计数器减1。初始化计数器要利用Application_Start事件,并在事件代码中定义Application状态。用户访问网站时增加计数要利用Session_Start事件,并在事件代码中增加Application状态值。用户离开网站时减少计数要利用Session_End事件,并
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乳品工艺技术创新与发展考核试卷
- 勘察项目项目管理气候变化与勘察应对策略考核试卷
- 批发市场的产品陈列与促销技巧考核试卷
- 施工监督与试车开车中安全注意事项考核试卷
- 小学生天气安全教育课件
- 农田土壤售卖合同范本
- 个人产品交易合同范本
- 玻璃浴房合同范本
- 委托装修安全合同范本
- 矿供销合同范本
- 2022年10月自考00043经济法概论(财经类)试题及答案
- 桥梁施工流程图
- 新人教鄂教版(2017)五年级下册科学全册教学课件
- 工程电磁场静电场第讲
- 保险资金ESG投资发展研究报告
- TBPMA 0009-2021 生活饮用水二次供水水箱(池)清洗消毒技术规范
- 《产业基础创新发展目录(2021年版)》(8.5发布)
- YY/T 0729.4-2009组织粘合剂粘接性能试验方法第4部分:伤口闭合强度
- LY/T 2499-2015野生动物饲养场总体设计规范
- GB/T 1040.3-2006塑料拉伸性能的测定第3部分:薄膜和薄片的试验条件
- GB 4706.20-2004家用和类似用途电器的安全滚筒式干衣机的特殊要求
评论
0/150
提交评论