session的使用方法詳解

来源:http://www.cnblogs.com/tangfei/archive/2016/05/17/5502835.html
-Advertisement-
Play Games

session的使用方法詳解 Session是什麼呢?簡單來說就是伺服器給客戶端的一個編號。當一臺WWW伺服器運行時,可能有若幹個用戶瀏覽正在運正在這台伺服器上的網站。當每個用戶首次與這台WWW伺服器建立連接時,他就與這個伺服器建立了一個Session,同時伺服器會自動為其分配一個SessionID ...


session的使用方法詳解

Session是什麼呢?簡單來說就是伺服器給客戶端的一個編號。當一臺WWW伺服器運行時,可能有若幹個用戶瀏覽正在運正在這台伺服器上的網站。當每個用戶首次與這台WWW伺服器建立連接時,他就與這個伺服器建立了一個Session,同時伺服器會自動為其分配一個SessionID,用以標識這個用戶的唯一身份。這個SessionID是由WWW伺服器隨機產生的一個由24個字元組成的字元串,我們會在下麵的實驗中見到它的實際樣子。
  這個唯一的SessionID是有很大的實際意義的。當一個用戶提交了表單時,瀏覽器會將用戶的SessionID自動附加在HTTP頭信息中,(這是瀏覽器的自動功能,用戶不會察覺到),當伺服器處理完這個表單後,將結果返回給SessionID所對應的用戶。試想,如果沒有SessionID,當有兩個用戶同時進行註冊時,伺服器怎樣才能知道到底是哪個用戶提交了哪個表單呢。當然,SessionID還有很多其他的作用,我們會在後面提及到。
  除了SessionID,在每個Session中還包含很多其他信息。但是對於編寫ASP或ASP.NET的程式與來說,最有用的還是可以通過訪問ASP/ASP.NET的內置Session對象,為每個用戶存儲各自的信息。例如我們想瞭解一下訪問我們網站的用戶瀏覽了幾個頁面,我們可能在用戶可能訪問到每個的頁面中加入:
  通過以下這句話可以讓用戶得知自己瀏覽了幾個頁面:
   可能有些有些讀者會問:
這個看似像是數組的Session(“..”)是哪裡來的?需要我定義嗎?實際上,這個Session對象是具有ASP解釋能力的的WWW伺服器的內建對象。也就是說ASP的系統中已經給你定義好了這個對象,你只需要使用就行了。其中Session(“..”)中的..就好像變數名稱,Session(“..”)=$$中的$$就是變數的值了。你只需要寫上句話,在這個用戶的每個頁面中都可以訪問..變數中的值了。

  其實ASP一共內建了7個對象,有Session、Application、Cookie、Response、Request、Server等。在其他的伺服器端腳本語言如JSP、PHP等中也有其類似的對象,只是叫法或者使用方法上不太一樣。 
1、
ASP 判斷Session變數是否存在的4種方法
如果去讀取沒有初始化的Session變數,將得到Empty值(空值)。所以可以利用該值來判斷Session變數是否已經初始化。加入我們要判斷名為sesName的變數是否已經建立,我們可以用以下4種方法:
1 If Session("sesName") = "" Then ...
2 If Session("sesName") = Empty Then ...
3 If IsEmpty(Session("sesName")) Then ...
4 If Cint(Session("sesName")) = 0 Then ...
其中第四種方法在Session變數沒有初始化的情況下使用Cint函數來進行轉換,將返回0值。

 

2、在ASP.NET中用if(Session[ "UserName "]   ==   null) 來判斷Session變數的存在,不能用if(Session[ "UserName "]   ==   "") 或者if(Session[ "UserName "]   ==   " ") ,否則會報錯!
謹記:在ASP.NET中要在客戶端所有頁面都使用Session[..]變數,其一定要在protected void Page_Load(object sender, EventArgs e)定義,否則其他頁面的相同Session[..]為null,即不存在。如果Session[..]變數定義了就不為null,即使初始化為"",即Session[..]=“”;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!this.IsPostBack)   
        {   
            Session["accountMode"] = "studentID";     
            Session["studentID"] = "";              
            Session["identityNo"] = "";
        }
    }
註意:未使用Session對象時不能複製給其他變數,否則報錯


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1、與ssh有關的兩個命令可以提供很方便的操作: sz:將選定的文件發送(send)到本地機器 rz:運行該命令會彈出一個文件選擇視窗,從本地選擇文件上傳到伺服器(receive)2、chmod [options] mode files option: -R 可遞歸遍歷子目錄3、ln 為某一個文件在 ...
  • 問題描述通過 uint16_t ConvData[8]保存DMA搬運的ADC轉換數值,但是這個數組數值的順序總是和ADC不是順序對應的。比如用7個通道的ADC,當設置ADC_InitStructure.ADC_ScanDirection = ADC_ScanDirection_Backward,是對 ...
  • 將控制項綁定到多個數據源,ListBox綁定到一個集合,其中每一項綁定到集合中對象的兩個屬性,並對綁定進行了格式化。 ... ...
  • 最近一直在忙工作的事情,所以文章寫得有些少. 有3-5篇文章都是寫到一半然後被別的事情給打斷了,所以,我得找個時間好好補補. 最近一直在關註移動端介面API的可用性問題,在移動時代這個做這個優化能產生相當大的優化結果。根據經驗數據一般不做任何優化,介面的可用性在95%左右。舉個例子,廣告介面的可用性 ...
  • 先看一下 .NET Core(包含 ASP.NET Core)的 "路線圖" : Beta6 : 2015年7月27日 Beta7 : 2015年9月2日 Beta8 : 2015年10月15日 RC1 : 2015年11月 RC2 (Tools Preview 1) : 2016年5月17日 1. ...
  • 有些對象需要顯示地銷毀代碼來釋放資源,比如打開的文件資源,鎖,操作系統句柄和非托管對象。在.NET中,這就是所謂的對象銷毀,它通過IDisposal介面來實現。不再使用的對象所占用的記憶體管理,必須在某個時候回收;這個被稱為無用單元收集的功能由CLR執行。 對象銷毀和垃圾回收的區別在於:對象銷毀通常是 ...
  • .NET常見錯誤大全 1.檢測到有潛在危險的 Request.Form 值 原因: (1)在提交數據的頁面或webconfig中沒有對validateRequest的屬性進行正確的設置 (2)HTML裡面寫了兩個<form>引起 解決: 方案一: 在.aspx文件頭中加入這句: <%@ Page v ...
  • 在資料庫設計時,也許會有一些約定,說一下我自己的三點基本硬性規定: 1、所有欄位都為可空設定(主鍵、布爾類型欄位除外) 2、字元串類型不允許有前後空格(可能特殊情況時除外) 3、如果是空字元串,則應存儲Null(為了防止不同資料庫類型對字元串為空和NULL的不同對待) 第一點是設計時的事情,在這裡可 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...