Web编程基础(2)


在ASP.NET 2.0中, Button控件有个新属性PostbackUrl, 定义了应从web服务器上请求的页面.
在.NET 2.0中, Page类有一个新属性PreviousPage, 返回一个page对象, 这个对象的控件可以使用FindControl()方法来访问, 返回一个Control对象.
服务器控件:......
验证控件:.....(记得设置Control To Validate 属性).

状态管理:
使用客户端的状态, 其缺点是在于增加了数据在网络之间的传送. 使用服务器端状态的缺点在于, 服务器必须给其客户端分配资源.
客户端的状态管理:
ViewState
: 是一个隐藏字段, 它会同页面的内容一起发送给浏览器. 当把页面发送给客户端时, ViewState包含与窗体中控件相同的值. 给服务器回送时, ViewState也会同控件的新值一起发送给服务器. 这样它就可以验证值是否改变, 并调用事件处理程序.
Web服务器控件自动使用ViewState来使事件工作.  
使用ViewState的缺点是, 数据总要从服务器传送给客户端, 再从客户端传送给服务器, 增加了网络流量. 为了减少网络流量, 可以关闭ViewState.
在Page指令中, 把EnableViewState属性设置为False, 就可以关闭页面中所有控件的ViewState.
设置一个控件的EnableViewState属性, 也可以配置该控件的ViewState.
还可以把定制的数据存储在ViewState中.
ViewState只能保存在一个页面中. 如果状态应保存在多个不同的页面中, 就应使用Cookie在客户端保存状态.
Cookie:cookie在HTTP的头中定义. 使用HttpResponse类可以把Cookie发送给客户端.
Response是Page类的一个属性, 它返回一个HttpResponse类型的对象.
把Cookie发送给客户端:
ContractedBlock.gif ExpandedBlockStart.gif Code
        string myval = "myval";
        HttpCookie cookie 
= new HttpCookie("mycookie"); //实例化HttpCookie对象, 在这个类的构造函数中,设置Cookie的名称"mycookie"
        cookie.Values.Add("mystate",myval); 
        cookie.Expires 
= DateTime.Now.AddMonths(3);//使用Expires属性可以定义Cookie不再有效的日期,这里是3个月后
        Response.Cookies.Add(cookie);
如果只需要返回一个cookie的值, 就可以使用Value属性. 如果要发送多个cookie的值,最好把值添加到一个Cookie中,而不是使用多个cookie.
从客户端读取Cookie:
        HttpCookie cookie = Request.Cookies[ " mycookie " ];
        
string  myval = cookie.Values[ " mystate " ];
要在ASP.NET页面中读取cookie, 可以访问HttpRequest对象中的cookie集合.
服务器端的状态管理:
Session:
会话状态与浏览器会话相关. 客户在服务器上第一次打开ASP.NET页面时, 会话就开始了. 当客户在20分钟之内没有访问服务器时, 会话结束.
可以在Global Application类中定义自己的代码, 在会话开始或结束时运行.
创建 Global Application 类: WebSite|Add New Item|Global Application Class.  文件中定义了一些事件处理例程.
会话状态可以存储在HttpSessionState对象中.
与当前HTTP环境相关的会话状态对象可以使用Page类的Session属性来访问.
在Session_Start()事件处理程序中, 初始化会话变量:
     void  Session_Start( object  sender, EventArgs e) 
ExpandedBlockStart.gifContractedBlock.gif    
{
        
// 在新会话启动时运行的代码
        Session["mydate"]=0;
    }
通过Session属性读取会话状态:
ContractedBlock.gif ExpandedBlockStart.gif Code
    protected void Button1_Click(object sender, EventArgs e)
ExpandedBlockStart.gifContractedBlock.gif    
{
        
int val = (int)Session["mydata"];
        Label1.Text 
= val.ToString();
        val 
+= 4;
        Session[
"mydata"= val;
    }
Application: 如果数据应在多个客户端共享, 就可以使用应用程序状态. 应用程序状态的使用方式与会话状态非常类似.
对于应用程序状态, 应使用 HttpApplicationState类, 通过Page类的Application属性可以访问它.
例如: 在启动Web应用程序时, 初始化应用程序变量usercount:
     void  Application_Start( object  sender, EventArgs e) 
ExpandedBlockStart.gifContractedBlock.gif    
{
        
// 在应用程序启动时运行的代码
        Application["usercount"]=0;
    }
读取应用程序状态中的数据:
        Label1.Text = Application["usercount"].ToString();
Cache:高速缓存类似于应用程序状态, 因为它在所有的客户端上共享.
高速缓存和应用程序状态的区别是: 高速缓存要灵活的多, 定义状态何时失效有许多方式.
我们不是给每个请求读取文件或数据库, 而是把数据存储在高速缓存中.
对于高速缓存, 需要使用System.Web.Caching命名空间和Cache类.
利用Cache类的Add()方法可以把任意对象赋予高速缓存.
Cache.Add( " mycache " , myobj,  null , DateTime.MaxValue, TimeSpan.FromMinutes( 10 ), CacheItemPriority.Normal,  null );
第一个参数: 高速缓存项的名称
第二个参数: 应高速缓存的对象
第三个参数: 依赖关系
第四个参数: 高速缓存项失效的绝对时间
第五个参数: 高速缓存项失效的相对时间
第六个参数: 高速缓存的优先级
第七个参数: 定义一个方法, 在删除高速缓存项时调用该方法.

先大致了解一下, 留点印象, 在用到的时候, 再学习.

转载于:https://www.cnblogs.com/niuniu1985/archive/2009/09/08/1562099.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值