c中session的用法

c中session的用法你知道嗎?下面小編就跟你們詳細介紹下c中session的用法,希望對你們有用。
c中session的用法如下:
  Session的基本屬性:
一、屬性
1、SessionID
SessionID 屬性返回用戶的會話標識。在創建會話時,服務器會為每一個會話生成一個單獨的標識。會話標識以長整形數據類型返回。在很多情況下 SessionID 可以用于 WEB 頁面注冊統計。
2、TimeOut
Timeout 屬性以分鐘為單位為該應用程序的 Session 對象指定超時時限。如果用戶在該超時時限之內不刷新或請求網頁,則該會話將終止。
二、方法
Session 對象僅有一個方法,就是 Abandon,Abandon 方法刪除所有存儲在 Session 對象中的對象并釋放這些對象的源。如果您未明確地調用 Abandon 方法,一旦會話超時,服務器將刪除這些對象。當服務器處理完當前頁時,下面示例將釋放會話狀態。
< % Session.Abandon %>
三、事件
Session 對象有兩個事件可用于在 Session 對象啟動和釋放是運行過程。
1、Session_OnStart 事件在服務器創建新會話時發生。服務器在執行請求的頁之前先處理該腳本。Session_OnStart 事件是設置會話期變量的最佳時機,因為在訪問任何頁之前都會先設置它們。
盡管在 Session_OnStart 事件包含 Redirect 或 End 方法調用的情況下 Session 對象仍會保持,然而服務器將停止處理 Global.asa 文件并觸發 Session_OnStart 事件的文件中的腳本。
為了確保用戶在打開某個特定的 Web 頁時始終啟動一個會話,就可以在 Session_OnStart 事件中調用 Redirect 方法。當用戶進入應用程序時,服務器將為用戶創建一個會話并處理 Session_OnStart 事件腳本。您可以將腳本包含在該事件中以便檢查用戶打開的頁是不是啟動頁,如果不是,就指示用戶調用 Response.Redirect 方法啟動網頁。程序如下 :
< SCRIPT RUNAT=Server Language=VBScript>
Sub Session_OnStart
startPage = "/MyApp/StartHere.asp"
currentPage = Request.ServerVariables("SCRIPT_NAME")
if strcomp(currentPage,startPage,1) then
Response.Redirect(startPage)
end if
End Sub
< /SCRIPT>
上述程序只能在支持 cookie 的瀏覽器中運行。因為不支持 cookie 的瀏覽器不能返回 SessionID cookie,所以,每當用戶請求 Web 頁時,服務器都會創建一個新會話。這樣,對于每個請求服務器都將處理 Session_OnStart 腳本并將用戶重定向到啟動頁中。
2、Session_OnEnd 事件在會話被放棄或超時發生。
關于使用 Session 對象需要注意的事項 Application 對象相近,請參照前文。
會話可以通過以下三種方式啟動 :
1、一個新用戶請求訪問一個 URL,該 URL 標識了某個應用程序中的 .asp 文件,并且該應用程序的 Global.asa 文件包含 Session_OnStart 過程。
2、用戶在 Session 對象中存儲了一個值。
3、用戶請求了一個應用程序的 .asp 文件,并且該應用程序的Global.asa 文件使用 < OBJECT> 標簽創建帶有會話作用域的對象的實例。
如果用戶在指定時間內沒有請求或刷新應用程序中的任何頁,會話將自動結束。這段時間的默認值是 20 分鐘。可以通過在 Internet 服務管理器中設置“應用程序選項”屬性頁中的“會話超時”屬性改變應用程序的默認超時限制設置。應依據您的 Web 應用程序的要求和服務器的內存空間來設置此值。例如,如果您希望瀏覽您的 Web 應用程序的用戶在每一頁僅停留幾分鐘,就應該縮短會話的默認超時值。過長的會話超時值將導致打開的會話過多而耗盡您的服務器的內存資源。對于一個特定的會話,如果您想設置一個小于默認超時值的超時值,可以設置 Session 對象的 Timeout 屬性。例如,下面這段腳本將超時值設置為 5 分鐘。
< % Session.Timeout = 5 %>
當然你也可以設置一個大于默認設置的超時值,Session.Timeout 屬性決定超時值。你還可以通過 Session 對象的 Abandon 方法顯式結束一個會話。例如,在表格中提供一個“退出”按鈕,將按鈕的 ACTION 參數設置為包含下列命令的 .asp 文件的 URL。
< % Session.Abandon %>
Session的用法:
一、使用Session設定權限
Session簡介:
簡單來說就是服務器給客戶端的一個編號。當一臺WWW服務器運行時,可能有若干個用戶瀏覽正在運正在這臺服務器上的網站。當每個用戶首次與這臺WWW服務器建立連接時,他就與這個服務器建立了一個Session,同時服務器會自動為其分配一個SessionID,用以標識這個用戶的唯一身份。這個SessionID是由WWW服務器隨機產生的一個由24個字符組成的字符串。
Session的初次使用:
protected void Page_Load(object sender, EventArgs e)
{//這是頁面的初始化
if (!Page.IsPostBack)
{//判斷是否為初次執行
if (Object.Equals(Session["AdminName"], null))
{//判斷在Session["AdminName"]是否存在值
Response.Redirect("ErrorPage.aspx", true);
}
else
{//要是存在則記錄下這個人的用戶名
Name.Text = ?Session["AdminName"].ToString();
}
}
}
二、進行頁面傳值
在頁面之間傳遞信息有許多方式:
第一:可以使用QueryString
第二:可以使用Session
第三:Server.Transfer
這三種傳值方式都有利有弊,下面我以我的經驗給大家講解一下
首先:QueryString
QueryString是一種非常簡單的傳值方式,其缺點就是會把要傳遞的值顯示在瀏覽器的地址欄中,并且此方法不能夠傳遞對象。如果你想傳遞一個安全性不是那么重要或者是一個簡單的數值時。使用此方式最好不過。
下面通過一個小例子來說明一下
1.創建一個Web頁面,叫SendMessage.aspx
2.在頁面內添加兩個TextBox,叫TxtName,TxtEmail,與一個Button,叫Submit
protected void Submit_Click(object sender, EventArgs e)
{
String Url = "ReceiveMessage.aspx?Name=" +
TxtName.Text + "&Email=" + TxtEmail.Text;
Response.Redirect(Url);
}
3.再創建一個接收信息頁面,叫ReceiveMessage.aspx
4.在頁面內添加兩個Label,叫LbName,LbEmail
protected void Page_Load(object sender, EventArgs e)
{//使用Request來接收由上個頁面傳遞過來的值,分別顯示在頁面上
LbName.Text = Request.QueryString["Name"];
LbEmail.Text = Request.QueryString["Email"];
}
再次:使用Session變量
使用Session變量傳值是一種最常見的方式了,此種方式不僅可以把值傳遞到下一個頁面,還可以交叉傳遞到多個頁面,直至把Session變量的值Remove后,才消失
下面舉例說明
1.創建一個頁面,叫SendSession
2.在頁面內添加兩個TextBox,叫TxtName,TxtEmail,添加一個Button,叫Submit
protected void Submit_Click(object sender, EventArgs e)
{//可以使用Session的Add方法
Session["Name"] = TxtName.Text;
//可以使用Session.Add("Name",TxtName.Text);
Session["Email"] = TxtEmail.Text;
//可以使用Session.Add("Email",TxtEmail.Text);
Response.Redirect("ReceiveMessage.aspx");
}
3.再創建一個頁面,叫ReceiveMessage.aspx
4.在頁面內添加兩個Label,叫LbName,LbEmail
protected void Page_Load(object sender, EventArgs e)
{
LbName.Text = Session["Name"].ToString();
LbEmail.Text = Session["Email"].ToString();
Session["Name"].Remove();
Session["Email"].Remove();
//使用結束要清除Session中的值
}
這是使用Session傳遞數值,此方式耗費服務器的資源,盡量少使用
再次:使用Server.Transfer
這種傳遞方式有點復雜,但也可以是一種值傳遞方式
下面舉例說明一下:
1.創建一個頁面,叫SendMessage.aspx
2.在頁面內添加兩個TextBox,叫TxtName,TxtEmail,添加一個Button,叫Submit
protected void Submit_Click(object sender, EventArgs e)
{
Server.Transfer("ReceiveMessage.aspx");
}
再添加一個屬性
public String Name
{
Get
{
return TxtName.Text;
}
}
public String Email
{
Get
{
return TxtEmail.Text;
}
}
3.再創建一個頁面,叫ReceiveMessage.aspx
4.在頁面放兩個Label,叫LbName,LbEmail
protected void Page_Load(object sender, EventArgs e)
{
//創建原始窗體的實例SendMessage wf1
//獲得實例化的句柄
wf1=(SendMessage)Context.Handler;
Label1.Text=wf1.Name;
Label2.Text=wf1.EMail;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458654.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458654.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458654.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

查看硬件信息

測試機器的硬件信息&#xff1a; 查看CPU信息&#xff08;型號&#xff09; # cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c 8 Intel(R) Xeon(R) CPU E5410 2.33GHz (看到有8個邏輯CPU, 也知道了CPU型號) # cat /proc/cpuinfo | grep physical …

支付寶集成交互流程

交互流程 功能流程 流程說明&#xff08;以Android平臺為例&#xff09;&#xff1a; 第4步&#xff1a;調用支付接口&#xff1a;此消息就是本接口所描述的開發包提供的支付對象PayTask&#xff0c;將商戶簽名后的訂單信息傳進pay方法喚起支付寶收銀臺&#xff0c;訂單格式具體…

VxLAN基礎

轉自&#xff1a;http://blog.csdn.net/freezgw1985/article/details/16354897 一 . 為什么需要Vxlan1. vlan的數量限制4096個vlan遠不能滿足大規模云計算數據中心的需求2. 物理網絡基礎設施的限制基于IP子網的區域劃分限制了需要二層網絡連通性的應用負載的部署3. TOR交換機MA…

find_first_of()和 find_last_of() 【獲取路徑、文件名】

string 類提供字符串處理函數&#xff0c;利用這些函數&#xff0c;程序員可以在字符串內查找字符&#xff0c;提取連續字符序列(稱為子串)&#xff0c;以及在字符串中刪除和添加。我們將介紹一些主要函數。 1.函數find_first_of()和 find_last_of() 執行簡單的模式匹配&#x…

支付寶集成

memo Error Domain系統繁忙&#xff0c;請稍后再試 Code1000 "(null)" reslut {memo "Error Domain\U7cfb\U7edf\U7e41\U5fd9\Uff0c\U8bf7\U7a0d\U540e\U518d\U8bd5 Code1000 \"(null)\"";result "";resultStatus 4000;} 請問安裝…

servlet中實現頁面跳轉return “r:”和return “f:

servlet中實現頁面跳轉return “r&#xff1a;”和return “f&#xff1a;”的區別和作用 分享| 2015-07-28 14:22741830480 | 瀏覽 48 次Pascal2015-07-28 14:26 #知道行家專業創造價值&#xff0c;火熱招募中&#xff01;#提問者采納熱心網友r是redirect重定向&#xff0c;參…

多線程編程 RW_LOCK 讀寫鎖

RW鎖 讀寫鎖&#xff0c;也叫共享獨占鎖 互斥量 要么是鎖住狀態&#xff0c;要么是不加鎖狀態&#xff0c;而且一次只有一個線程可以對其加鎖。 讀寫鎖可以有三種狀態&#xff0c;讀模式下加鎖狀態&#xff0c;寫模式下加鎖狀態&#xff0c;不加鎖狀態。一次只有一個線程可以占…

Error Domain=NSCocoaErrorDomain Code=3840 JSON text did not start with array or object and option

數據請求失敗 報錯 Error DomainNSCocoaErrorDomain Code3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo{NSDebugDescriptionJSON text did not start with array or object and option to allow fragm…

vim學習筆記(4)幫助與配置

使用幫助 在Vim中輸入命令&#xff1a;help&#xff0c;即可進入幫助界面&#xff0c;默認是英文&#xff0c;可以通過以下方式安裝中文幫助&#xff08;以vimcdoc-1.9.0為例&#xff09;&#xff1a; 1、下載中文幫助的文件壓縮包 2、解壓 tar -xzvf vimcdoc-1.9.0.tar.gz 3、…

C語言程序代碼優化

我認為一個好的用于科學計算的程序代碼應該&#xff1a;算法漂亮精妙&#xff0c;程序簡潔易懂&#xff0c;運算快速&#xff0c;節省內存。這里有的地方是矛盾的&#xff0c;比如簡潔vs易懂&#xff0c;時間vs空間&#xff0c;找個平衡吧。目前來看時間要比空間寶貴一些。寫程…

微信支付不回調支付成功的方法,這是為什么

如果你是Xcode7.2&#xff0c;或者IOS9.2的話&#xff0c;可能會遇見在微信客戶端操作返回程序之后不能執行微信的onResp回調方法的問題&#xff0c;就是因為一下這兩個方法被廢棄掉了&#xff0c;所以我的新demo替換了一個新的方法在下面。就完美解決這個問題了&#xff08;并…

如何在蘋果官網下載舊版本的Xcode 方法

1 在百度里輸入“蘋果開發者中心“&#xff0c;進入以下頁面。點擊頁面中的“Member Center" 2 出現登錄界面。這是需要蘋果開發者帳號的&#xff0c;沒有帳號的可以選擇“Create Apple ID”進行注冊。已經注冊的選擇“Sign In"登錄 3 頁面跳轉后&#xff0c;選擇…

屏幕尺寸 分辨率

1、分辨率 分辨率又稱顯示分辨率、屏幕分辨率 確定手機屏幕上顯示多少信息的設置&#xff0c;以水平和垂直像素來衡量 6 750 *1334 像素 5s 640 * 1136 像素 2、屏幕尺寸 屏幕大小的物理尺寸&#xff0c;以屏幕對角線長度衡量 單位&#xff1a;英寸 1英寸2.54厘米 6 4.7英…

程序代碼優化2

程序進行優化&#xff0c;通常是指優化程序代碼或程序執行速度。優化代碼和優化速度實際上是一個予盾的統一&#xff0c;一般是優化了代碼的尺寸&#xff0c;就會帶來執行時間的增加&#xff0c;如果優化了程序的執行速度&#xff0c;通常會帶來代碼增加的副作用&#xff0c;很…

【轉】android多分辨率適配

前一階段開發android項目&#xff0c;由于客戶要求進行多分辨率適配&#xff0c;能夠支持國內主流的分辨率手機。因此經過了幾次開發走了很多彎路&#xff0c;目前剛剛領略了android多分辨率適配的一些方法。 先介紹一下所走的彎路&#xff0c;由于android的布局文件存放在res的…

TCP/IP SOCKET HTTP及HTTPS之間的關系

GET跟POST的區別&#xff1a; get只能傳送128K的數據 而post是無限制的 post提交是不在會IE上帶上參數 就算你加密了別人也會解密 一般比較重要的數據通過post 傳&#xff0c;因為get是別人可以改參數值的 別人亂寫參數&#xff0c;你的異常報個不停 網絡七層由下往上分別為物理…

靜態鏈接與動態鏈接的區別

動態鏈接庫、靜態庫、import庫區別 動態鏈接庫(Dynamic Linked Library)&#xff1a; Windows為應用程序提供了豐富的函數調用&#xff0c;這些函數調用都包含在動態鏈接庫中。其中有3個最重要的DLL&#xff0c;Kernel32.dll&#xff0c;它包含用于管理內存、進程和線程的各個函…

Java線程池介紹

根據摩爾定律&#xff08;Moore’s law&#xff09;&#xff0c;集成電路晶體管的數量差不多每兩年就會翻一倍。但是晶體管數量指數級的增長不一定會導致 CPU 性能的指數級增長。處理器制造商花了很多年來提高時鐘頻率和指令并行。在新一代的處理器上&#xff0c;單線程程序的執…

curl -L get.rvm.io | bash -s stable報錯:連接不上服務器

1、安裝cocoa pods時&#xff0c; ERROR: Error installing cocoa: activesupport requires Ruby version > 2.2.2. 這個錯誤是說&#xff1a;rvm的版本過低&#xff0c;需要升級一下版本 2、升級rvm版本的時候&#xff0c;報標題的錯誤解決辦法如下 將上面的命令行改成&a…

C語言中#define的用法(轉)

轉自&#xff1a;http://www.dingge.com/main/article.asp?id10 今天整理了一些#define的用法&#xff0c;與大家共享&#xff01; 1.簡單的define定義 #define MAXTIME 1000 一個簡單的MAXTIME就定義好了&#xff0c;它代表1000&#xff0c;如果在程序里面寫 if(i<MAXTIM…