首页 > .net > .net技术/ 正文
四、Application
因为应用程序和它存储的所有对象可以同时由不同的线程访问,所以最好只将很少修改的数据与应用程序范围一起存储。理想情况是,对象在 Application_Start 事件中初始化,对它的进一步访问是只读的。
在下面的示例中,文件在 Application_Start(在 Global.asax 文件中定义)中读取,内容则以应用程序状态存储在 DataView 对象中。
以下是代码片段:
void Application_Start()
{
DataSet ds =new DataSet();
FileStream fs =new FileStream(Server.MapPath("schemadata.xml"),FileMode.Open,FileAccess.Read);
StreamReader reader =new StreamReader(fs);
ds.ReadXml(reader);
fs.Close();
DataView view =new DataView(ds.Tables[0]);
Application["Source"] = view;
}
在 Page_Load 方法中,DataView 随后被检索并用于填充 DataGrid 对象:
以下是代码片段:
void Page_Load(Object sender, EventArgs e)
{
DataView Source = (DataView)(Application["Source"]);
MyDataGrid.DataSource = Source;
}
此解决方案的优点是只有第一个请求付出检索数据的代价。所有后面的请求则使用已有的 DataView 对象。由于数据自初始化后从不修改,所以不必为序列化访问做任何规定。
Application得使用一般是相对于整个项目来说相对静止的变量,比如数据库连接变量等。对于那些针对每一个用户,每一个会话未必一样得变量就不适用了。通常Application变量得值是在Config终指定。也可以在global.ascx中指定。
五、Cookie:
下面的示例说明如何使用客户端 Cookie 存储易失的用户首选项。
在客户端存储 Cookie 是 ASP.NET 的会话状态将请求与会话关联的方法之一。Cookie 也可以直接用于在请求之间保持数据,但数据随后将存储在客户端并随每个请求一起发送到服务器。浏览器对 Cookie 的大小有限制,因此,只有不超过 4096 字节才能保证被接受。
当数据存储在客户端时,文件 cookies1.aspx 中的 Page_Load 方法检查客户端是否已发送了 Cookie。如果没有,则创建并初始化一个新的 Cookie 并将其存储在客户端:
以下是代码片段:
protectedvoid Page_Load(Object sender, EventArgs e)
{
if (Request.Cookies["preferences1"] ==null)
{
HttpCookie cookie =new HttpCookie("preferences1");
cookie.Values.Add"ForeColor", "black");
Response.AppendCookie(cookie);
}
}
在同一页上,再次使用 GetStyle 方法提供存储在 Cookie 中的个别值:
以下是代码片段:
protected String GetStyle(String key)
{
HttpCookie cookie = Request.Cookies["preferences1"];
if (cookie !=null)
{
switch (key)
{
case"ForeColor" :
return cookie.Values["ForeColor"];
break;
}
}
return"";
}
若要使 Cookie 在会话之间持久,必须将 HttpCookie 类上的 Expires 属性设置为将来的某个日期。除了 Cookie.Expires 的赋值,下列自定义 .aspx 页上的代码与上一个示例相同:
以下是代码片段:
protectedvoid Submit_Click(Object sender, EventArgs e)
{
HttpCookie cookie =new HttpCookie("preferences2");
cookie.Values.Add("ForeColor",ForeColor.Value);
cookie.Expires = DateTime.MaxValue; // Never Expires
Response.AppendCookie(cookie);
Response.Redirect(State["Referer"].ToString());
}
Cookie作为一种提交,请求时保存数据得方式,又很明显的优缺点。他的缺点在上面有所表述,比如大小受限,不能保存对象等,另外,作为保存时间,也就 是数据得有效期来说,确是保存得最好的。我们可以通过设置cookie得过期时间等属性来设置。Cookie又很多常用属性,包括domain,path 等,这些资料可以在quickstart上获取到。
本文由软件培训网整理,转载请注明:http://www.softpeixun.com
- 上一篇:.net 页面传参的六种方式(2)
- 下一篇:.net 页面传参的六种方式(4)
更多郑州java网站开发培训,零基础学java难么,郑州黑马java培训,郑州千峰java培训,郑州蓝鸥java培训,郑州java培训学校相关文章
- 搜索
-
![]() |