第二章页面类及基本对象_第1页
第二章页面类及基本对象_第2页
第二章页面类及基本对象_第3页
第二章页面类及基本对象_第4页
第二章页面类及基本对象_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章页面类及基本对象回顾C/S和B/S动态网页的工作原理:基于http,无状态B和S间的一次往返动态处理:服务器端和客户端。Web服务器:IIS创建和打开Web站点Web页代码模式:单文件页,代码后置目标ASP.NET2.0内置对象概述Page类页面的生命周期<@page>标签Page_Init和Page_Load事件Page.IsPostBack属性Response对象Response.Write();Response.Redirect();Request对象表单FormRequest.FormRequest.QueryString();Request.ServerVariablesRequest.BrowserServer对象ASP.NET2.0内置对象概述下表是ASP.NET中的常见系统对象。由于这些对象是在ASP.NET页面初始化请求时自动创建的,所以能在程序中任何地方直接调用,而无需对类进行实例化操作。系统对象ASP.NETPage对象指向页面自身的方式。作用域为页面执行期。Request对象读取客户端在Web请求期间发送的值Response对象封装了页面执行期返回到HTTP客户端的输出Application对象作用于整个程序运行期的状态对象Session对象会话期状态保持对象,用于跟踪单一用户的会话。Cookie对象客户端保持会话信息的一种方式Server对象提供对服务器上的方法和属性的访问Page类及其生命周期一个页面就对应于一个page对象。.aspx与后台代码类(局部类)合并生成页面类。所有的页面类都继承自System.Web.UI.Page类。每次查看一个页面,page对象都会进行初始化,对信息处理,然后显示出来,最后关闭或释放这个对象。这就是页面的生命周期。在这过程中,会触发若干事件。注意:当页面显示后,系统会马上从服务器中释放页面资源。生命周期:/zh-cn/library/ms178472(VS.80).aspx页面跟踪的跟踪功能,不仅可以在程序运行的各个阶段,跟踪程序的状态和变量的值,另外,它还有本身所支持的各项管理功能。它有以下优点:1、既可以整个网站统一管理,也可以在单个页面启动。通过配置web.config,可以启用整个网站的跟踪,也可以在页面上采用。2、不影响页面的布局和呈现。3、全面反映cookies和session的状态,这是我第一次采用跟踪的一个原因。4、完整的反应各个页面事件的过程和执行的时间。页面跟踪步骤:一、开启页面内的跟踪1、在<@page>中采用Trace="true"2、在代码里添加“Trace.IsEnabled=true;”3、添加自己的跟踪信息:

Trace.Warn(“abc”);

//Warn显示的是红色的信息

Trace.Write(“def”);

//write显示的是普通颜色的信息二、开启全站的跟踪并显示在页面在web.config中添加

<system.web>

<traceenabled="true"pageOutput="true"/></system.web>Page对象Page对象Page对象Page_Init和Page_Load事件比较页内数据传递回发ASP.NETWeb页面控件1控件1…用户页面操作Page.IsPostBack属性回传首次加载truefalse如何判断回发和首次加载?IsPostBack属性通过页面的IsPostBack属性,可以检查.aspx页是否为传递回服务器的页面当加载页面并对控件的更改属性进行处理之前,用户可以在Page_Load事件中检查该页面是否为被回传的页面Page对象的Init事件和Load事件都发生在页面加载的过程中,但在Page对象的生存周期中Init事件,只有在页面初始化时被触发一次,而Load事件在初次加载及每次回发中都会被触发。当用户单击页面中按钮时引起回发,使Load事件处理代码再次被执行如果希望初始化页面时的事件处理代码只在页面首次加载时被执行,则可将代码放在Init事件中,或使用Page对象的IsPostBack属性进行判断。Page_Init和Page_Load事件比较工序流程在服务器执行1和2345aHTTP请求HTML页回发之后的值进行更改67HTML页5b用户进行回发_VIEWSTATEKingK@******名称电子邮件密码提交更改之前更改之后_VIEWSTATE控件是隐藏控件,在表单提交到服务器时此控件将被添加到表单中,用来保存控件的状态。ViewState例子int[]a=newint[6];protectedvoidPage_Load(objectsender,EventArgse){}protectedvoidButton1_Click(objectsender,EventArgse){stringstr=null;

for(inti=0;i<6;i++){a[i]=i;}

ViewState["a"]=a;}protectedvoidButton2_Click(objectsender,EventArgse){

int[]a=(int[])ViewState["a"];Label2.Text=a[2].ToString();}Request和ResponseRequestResponse页面输入输出控制Request对象获得页面输入URL传参Form表单提交Response对象在页面输出要显示的内容重定向5.1Response对象Response对象的属性和方法利用Response对象输出文本文件利用Response对象重新定向链接Response对象的属性和方法Response对象是HttpResponse类的一个对象,与一个HTTP响应相对应,通过该对象的属性和方法可以控制如何将服务器端的数据发送到客户端浏览器。Response对象的属性和方法属性:Buffer:表明页输出是否被缓冲。BufferOutput:是否缓冲输出并在完成处理整个页之后将其发送。Cache:获取Web页的缓存策略(过期时间、保密性、变化子句)。Charset:获取或设置输出流的HTTP字符集。ContentEncoding:获取或设置内容的编码格式。ContentType: 获取或设置输出流的HTTPMIME类型。Expires:获取或设置在浏览器上缓存的页过期之前的分钟数。如果用户在页过期之前返回同一页,则显示缓存的版本。提供Expires是为了与以前的ASP版本兼容。ExpiresAbsolute:获取或设置将缓存信息从缓存中移除时的绝对日期和时间。提供ExpiresAbsolute是为了与以前的ASP版本兼容。Filter:获取或设置一个包装筛选器对象,该对象用于在传输之前过滤HTTP实体主体。IsClientConnected:指示客户端是否仍连接在服务器上。Response对象的属性和方法Output:返回输出HTTP响应流的文本输出。OutputStream:返回输出Http内容主体的二进制输出流。Status:设置返回到客户端的状态栏。StatusCode:获取或设置返回给客户端的输出的HTTP状态代码,通过HTTP状态代码客户端可以知道服务器端的运行情况。StatusDescription: 获取或设置返回给客户端的输出的HTTP状态字符串。SuppressContent:是否将HTTP内容发送到客户端。Response对象的属性和方法方法:BinaryWrite:将一个二进制字符串写入HTTP输出流。Clear:清除缓冲区流中的所有内容输出。ClearContent:清除缓冲区流中的所有内容。ClearHeaders:清除缓冲区流中的所有头信息。Close:关闭到客户端的套接字连接。End:将当前所有缓冲的输出发送到客户端,停止该页的执行,并引发Application_EndRequest事件。Flush:向客户端发送当前所有缓冲的输出。Flush方法和End方法都可以将缓冲的内容发送到客户端显示,但是Flush与End的不同之处在于,Flush不停止页面的执行。Response对象Response对象允许开发人员对当前页面的输出流进行操作Response.对象Redirect方法Write方法Response.Write("Hello,ACCP");直接在页面上输出内容重定向到另外一个页面Response.Redirect("");利用Response对象输出文本文件privatevoidPage_Load(objectsender,System.EventArgse) { //在此处放置用户代码以初始化页面 Response.ContentEncoding=

System.Text.UnicodeEncoding.Default; Response.Write("<h3>利用Response对象输出文本文件</h3>"); Response.Write("<hr>"); Response.Write("文件的内容为:<br><br>");

StringFileName=Server.MapPath("Readme.txt"); Response.WriteFile(FileName); }利用Response对象重新定向链接

(1)Response.Redirect(“1.aspx”);转到当前目录下的1.aspx页面(2)Response.Redirect(“~/1.aspx”);转到当前网站根目录下的1.aspx页面(3)Response.Redirect(“~/test/1.aspx”);转到当前网站test目录下的1.aspx页面利用Response对象重新定向链接privatevoidButton1_Click(objectsender,System.EventArgse) {

if((TextBox1.Text!="")&& (TextBox1.Text.IndexOf("http://")>=0)) {

//如果目标网址不为空,并且包含“http://”字符,则跳转

Response.Redirect(TextBox1.Text); } }Request对象Request对象的属性和方法表单Form利用Request对象获取客户端表单信息利用Request对象获取web服务器端信息利用Request对象获取客户端浏览器信息Request对象Request对象实际上操作System.Web命名空间中的HttpRequest类。当客户发出请求执行ASP.Net程序时,客户端的请求信息会包装在Request对象中,这些请求信息包括请求报头(Header)、客户端的机器信息,客户端浏览器信息,请求方法(如POST、GET)、提交的窗体信息等。Request对象的属性和方法属性AcceptTypes:客户端支持的MIME接受类型的字符串数组。ApplicationPath:服务器上ASP.NET应用程序的虚拟应用程序根路径。Browser:有关正在请求的客户端的浏览器功能的信息。ClientCertificate:当前请求的客户端安全证书。ContentEncoding:或设置实体主体的字符集。ContentLength:指定客户端发送的内容长度(以字节计)。ContentType:传入请求的MIME内容类型。Cookies:客户端发送的cookie的集合CurrentExecutionFilePath:当前请求的虚拟路径。FilePath:当前请求的虚拟路径。Form:窗体变量集合。Headers:HTTP头集合IsAuthenticated:是否验证了用户。HttpMethod:客户端使用的HTTP数据传输方法(如GET、POST或HEAD)。IsSecureConnection:HTTP连接是否使用安全套接字(即HTTPS)。Request对象的属性和方法Path:当前请求的虚拟路径。PhysicalApplicationPath:当前正在执行的服务器应用程序的根目录的物理文件系统路径。QueryString:HTTP查询字符串变量集合。PhysicalPath:获取与请求的URL相对应的物理文件系统路径。RawUrl:当前请求的原始URL。RequestType:客户端使用的HTTP数据传输方法(GET或POST)。ServerVariables:获取Web服务器变量的集合。Url:有关当前请求的URL的信息。UserAgent:客户端浏览器的用户代理信息UserHostAddress:客户端的主机地址。UserHostName:客户端的DNS名称。UserLanguages:客户端语言首选项的排序字符串数组。表单Form表单:所有的控件必须放在表单中。当提交时,页面会将form中的内容作为一个整体提交给服务器。Aspx页面中runat=server的表单只能有一个,并且不需要写action,默认提交给自身。而html页面需要写action。Form具有get和post提交方式。那么接收数据的方式也有所不同。通过Request对象可以获得提交的客户端表单的信息。根据用于提交信息方法的不同,Request对象可以分别使用QueryString和Form集合活动客户端的表单信息Form的get和post提交方式1.get是从服务器上获取数据,post是向服务器传送数据。2.get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTPpost机制,将表单内各个字段与其内容放置在HTMLHEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。3.对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据。4.get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。5.get安全性非常低,post安全性较高。但是执行效率却比Post方法好。利用Request对象获取客户端表单信息Request对象ServerVariables属性Form

属性Params属性QueryString属性获取通过URL路径传来的数据(对应于get)获取通过表单提交传输的数据(对应于post)获取Web服务器变量的集合以上三种方式传输的内容都可以使用该属性获取获取其它页面传递的参数例如:下面的超链接

http://localhost/test/1.aspx?Id=35247?后面是表示要传入的参数,这个参数名字叫Id,它的值是35247

如果要传多个参数,使用&连接

http://localhost/test/1.aspx?Id=35247&Name=huangbo以下的方法都可以用来获取传递的参数(1)Request.QueryString[]:只能用来获取采用在Url后面用?附带的参数,即只能取get方法的传值例如取上面的值:Request.QueryString[“Id”];(2)Request.Form[]:获取表单变量(form中的提交的内容),但它不能用来获取在Url中使用?传递的参数,即只能取post方法的传值

Request.Form[“Id”];

//Id是表单中某个输入项的Name属性(3)直接使用Request[]:例如:Request[“Id”]

这种方法可以取得无论是用get方式或post方式提交过来的数据。(4)Reqeust.Params[]:它是获取QueryString、Form、ServerVarialbes和Cookies集合,慎用,如果设置得不好可能读取出来会有多个值出现。

例如:Request.Params[“Id”]提交页面

<FORMaction="result.aspx"method="post"><tablealign="center"><tr><tdstyle="width:65px">

用户名:</td><tdcolspan="2"><inputid="txtName"type="text"name="txtName"/></td></tr><tr><tdstyle="width:65px">

密码:</td><tdcolspan="2"><inputid="txtPwd"type="text"name="txtPwd"/></td></tr><tr><tdcolspan="3"><inputid="Submit1"type="Submit"name="Submit1"value="button"/></td></tr></table></FORM>Post,get,Response,Request例题接收页面protectedvoidPage_Load(objectsender,EventArgse){//post.htm中From的method为post时,url中不显示属性值

//stringstrName=Request.Form["txtName"].ToString();//txtName为控件name属性

//stringstrPwd=Request.Form["txtPwd"].ToString();//stringstrName=Request.Form.Get("txtName").ToString();//stringstrPwd=Request.Form.Get("txtPwd").ToString();//post.htm中From的method为get时,url中显示属性值

//stringstrName=Request.QueryString["txtName"].ToString();//stringstrPwd=Request.QueryString["txtPwd"].ToString();//post和get都可以

//stringstrName=Request["txtName"].ToString();//txtName为控件name属性

//stringstrPwd=Request["txtPwd"].ToString();

stringstrName=Request.Params["txtName"].ToString();//txtName为控件name属性stringstrPwd=Request.Params["txtPwd"].ToString();Response.Write("用户名:"+strName+":密码"+strPwd);Response.Write("你采用的是"+Request.RequestType+"方式提交");//if("a"==strName&&"a"==strPwd)//{////表单默认是get,可以将需要传递的值作为url中的参数进行传递。

//Response.Redirect("Default.aspx?strName1="+strName+"&strPwd1="+strPwd);//}//else//Response.Redirect("post.htm");}获取服务器环境变量Response.Write("当前网页虚拟路径是:"+Request.ServerVariables["url"]);Response.Write("<br>当前网页虚拟路径是:"+Request.RawUrl);Response.Write("<br>实际路径:"+Request.ServerVariables["path_translated"

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论