第十節16 ASP.NetSessionの原理
2736 ワード
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AspNetSession1.aspx.cs" Inherits="AspNetSession1" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click"
Text=" Session" />
<asp:Button ID="Button2" runat="server" onclick="Button2_Click"
Text=" Session " />
</div>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class AspNetSession1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
// Page_Load
if (!IsPostBack) // session value
{
Session[" "] = 0;
Session[" "] = 0;
}
}
protected void Button1_Click(object sender, EventArgs e)
{
//session object ,
Session[" "] = DateTime.Now.ToString();
Session[" "] = 300;
}
protected void Button2_Click(object sender, EventArgs e)
{
string s1 = Convert.ToString(Session[" "]);
string s2 = Convert.ToString(Session[" "]);
Response.Write("s1:"+s1+", s2:"+s2);
}
}
/*Sessionの原理*private int i=0;リクエストが来るたびにnewが新たにIHttpHandlerインタフェースを実現したクラス「変数1」のインスタンスを処理し、使い切ればGCが落ちるので、前回の値**Cookieを保存することはできません.大量のデータを保存したい場合は、GuidとCookieを1つ保存し、サーバにGuidをKeyとして作成することができます.複雑なデータがValueグローバルのDictionary*staticフィールドは異なるユーザーに対しても1部しかないため、staticで多くのユーザーがデータを共有し、コードは備考**ASP.を参照する.Netにはセッションメカニズムが内蔵されており、上記の例をAsp.netsession書き換え、session*sessionへのタイムアウト破棄のようなメカニズムをあまり置かないでください.投稿(ブラウザが開いているかどうか、いつ閉じているかは服各国器ではわかりません)、投稿時間、オンライン時間統計**sessionのメカニズムはhttPプロトコルで規定されているものではありません.aspです.Net実装、現在php、jspなどの大部分のサービス側技術はすべてsessionを実現して、原理はすべて多くありません*ケース、sessionで検証コードを実現します