Když přijde od klienta požadavek na odeslání nějaké stránky, vytvoří se tzv. session (sezení). Stránka může používat proměnné nebo objekty viditelné na úrovni session. Tak je možné předávat data mezi různými stránkami jedné aplikace. Pokud přijde od téhož klienta požadavek na jinou stránku aplikace, zpřístupní se této stránce data, která byla na serveru uložena v rámci dané session.
Session zaniká při ukončení prohlížeče (všech oken), při uplynutí časového limitu nebo při zavolání metody Abandon.
Mezi hlavní výhody mechanismu session patří:
Metoda Abandon zruší aktuální session (zruší se všechny proměnné a objekty viditelné na úrovni session). Při příštím požadavku na některou ze stránek dané aplikace se vytvoří nová session a vytvoří se nové proměnné a objekty podle obsahu souboru global.asa.
Atribut CodePage obsahuje číselný kód znakové stránky používané pro zobrazování stránky v prohlížeči. Pro zobrazování českých znaků se používá nejčastěji kódování windows-1250 (číselné označení 1250) nebo iso-8859-2 (číselné označení 28592).
Pro nastavení kódové stránky na ISO Latin 2 použijeme příkaz:
Session.CodePage = 28592
Pro nastavení kódování pro jednu konkrétní ASP stránku můžeme použít ASP direktivu:
<%@ LANGUAGE="VBScript" CODEPAGE="28592" %>
Použitím této direktivy překryjeme nastavení atributu CodePage.
Následující tabulka obsahuje přehled některých běžnějších kódových stránek:
| Kódová stránka | Jméno | Alias |
|---|---|---|
| 1200 | Univerzální abeceda | unicode |
| 1201 | Univerzální abeceda (Big-Endian) | unicodeFEFF |
| 1250 | Středoevropské jazyky (Windows) | windows-1250 |
| 1251 | Cyrilice (Windows) | windows-1251 |
| 1252 | Západoevropské jazyky | iso-8859-1 |
| 1253 | Řečtina (Windows) | windows-1253 |
| 1254 | Turečtina | iso-8859-9 |
| 1255 | Hebrejština | iso-8859-8 |
| 1256 | Arabština (Windows) | windows-1256 |
| 1257 | Pobaltské jazyky (Windows) | windows-1257 |
| 1258 | Vietnamština (Windows) | windows-1258 |
| 20866 | Cyrilice (KOI8-R) | koi8-r |
| 21866 | Ukrajinština (KOI8-RU) | koi8-ru |
| 28592 | Středoevropské jazyky (ISO) | iso-8859-2 |
| 28593 | Latin 3 (ISO) | iso-8859-3 |
| 28594 | Pobaltské jazyky (ISO) | iso-8859-4 |
| 28595 | Cyrilice (ISO) | iso-8859-5 |
| 28596 | Arabština (ISO) | iso-8859-6 |
| 28597 | Řečtina (ISO) | iso-8859-7 |
| 50220 | Japonština (JIS) | iso-2022-jp |
| 50221 | Japonština (JIS-dovoluje 1 bytové Kana) | csISO2022JP |
| 50222 | Japonština (JIS-dovoluje 1 bytové Kana) | iso-2022-jp |
| 50225 | Korejština (ISO) | iso-2022-kr |
| 50932 | Japonština (Automatický výběr) | |
| 50949 | Korejština (Automatický výběr) | |
| 51932 | Japonština (EUC) | euc-jp |
| 51949 | Korejština (EUC) | euc-kr |
| 52936 | Zjednodušená čínština (HZ) | hz-gb-2312 |
| 65000 | Univerzální abeceda (UTF-7) | utf-7 |
| 65001 | Univerzální abeceda (UTF-8) | utf-8 |
| 852 | Středoevropské jazyky (DOS) | ibm852 |
| 866 | Cyrilice (DOS) | cp866 |
| 874 | Thajština (Windows) | windows-874 |
| 932 | Japonština (Shift-JIS) | shift_jis |
| 936 | Zjednodušená čínština (GB2312) | gb2312 |
| 949 | Korejština | ks_c_5601-1987 |
| 950 | Tradiční čínština (Big5) | big5 |
Atribut LCID (locale identifier) definuje národní prostředí stránky odesílané prohlížeči. Například hexadecimální hodnota 0409 (1033 desítkově) označuje USA se symbolem měny '$' a formátem pro datum 'mm/dd/yy'.
Příklad nastavení národního prostředí stránky na české (hexa označení 0405):
Session.LCID = &H0405
Hodnota LCID pro jednotlivou stránku může být nastavena ASP direktivou:
<%@ LANGUAGE="VBScript" LCID="1029" %>
Seznam kódů národních prostředí:
| Země/Region | Jazyk | LCID (Hexadecimálně) |
|---|---|---|
| Albánie | Albánština | 041c |
| Alžírsko | Arabština | 1401 |
| Argentina | Španělština | 2c0a |
| Austrálie | Angličtina | 0c09 |
| Bahrain | Arabština | 3c01 |
| Belgie | Francouzština | 0813 |
| Belize | Angličtina | 2809 |
| Bělorusko | Běloruština | 0423 |
| Bolívie | Španělština | 400a |
| Brazílie | Portugalština | 0416 |
| Brunei Darussalam | Malajština | 083e |
| Bulharsko | Bulharština | 0402 |
| Česká republika | Čeština | 0405 |
| Čína | Čínština | 0804 |
| Dánsko | Dánština | 0406 |
| Dominikánská republika | Španělština | 1c0a |
| Egypt | Arabština | 0c01 |
| Ekvádor | Španělština | 300a |
| El Salvador | Španělština | 440a |
| Estonsko | Estonština | 0425 |
| Faerské ostrovy | Faerština | 0438 |
| Filipíny | Angličtina | 3409 |
| Finsko | Finština | 040b |
| Francie | Francouzština | 040c |
| Guatemala | Španělština | 100a |
| Honduras | Španělština | 480a |
| Hongkong | Čínština | 0c04 |
| Chile | Španělština | 340a |
| Chorvatsko | Chorvatština | 041a |
| Indie | Hindština | 0439 |
| Indonésie | Indonéština | 0421 |
| Irák | Arabština | 0801 |
| Írán | Farsi | 0429 |
| Irsko | Angličtina | 1809 |
| Island | Islandština | 040f |
| Itálie | Italština | 0410 |
| Izrael | Hebrejština | 040d |
| Jamajka | Angličtina | 2009 |
| Japonsko | Japonština | 0411 |
| Jemen | Arabština | 2401 |
| Jihoafrická republika | Afrikánština | 0436 |
| Jihoafrická republika | Angličtina | 1c09 |
| Jordánsko | Arabština | 2c01 |
| Kanada | Angličtina | 1009 |
| Kanada | Francouzština | 0c0c |
| Karibik | Angličtina | 2409 |
| Katar | Arabština | 4001 |
| Keňa | Svahilština | 0441 |
| Kolumbie | Španělština | 240a |
| Korea | Korejština (Ext. Wansung) | 0412 |
| Korea | Korejština (Johab) | 0812 |
| Kostarika | Španělština | 140a |
| Kuvajt | Arabština | 3401 |
| Libanon | Arabština | 3401 |
| Libye | Arabština | 3001 |
| Lichtenštejnsko | Němčina | 1407 |
| Litva | Klasická litevština | 0827 |
| Litva | Litevština | 0427 |
| Lotyšsko | Lotyština | 0426 |
| Lucembursko | Francouzština | 140c |
| Lucembursko | Němčina | 1007 |
| Macao | Čínština | 1404 |
| Maďarsko | Maďarština | 040e |
| Makedonie | Makedonština | 042f |
| Malajsie | Malajština | 043e |
| Maroko | Arabština | 1801 |
| Mexiko | Španělština | 080a |
| Monako | Francouzština | 180c |
| Německo | Němčina | 0407 |
| Nikaragua | Španělština | 4c0a |
| Nizozemí | Holandština | 0413 |
| Norsko (Bokmal) | Norština | 0414 |
| Norsko (Nynorsk) | Norština | 0814 |
| Nový Zéland | Angličtina | 1409 |
| Omán | Arabština | 2001 |
| Pákistán | Urdština | 0420 |
| Panama | Španělština | 180a |
| Paraguay | Španělština | 280a |
| Peru | Španělština | 280a |
| Polsko | Polština | 0415 |
| Portoriko | Španělština | 500a |
| Portugalsko | Portugalština | 0816 |
| Rakousko | Němčina | 0c07 |
| Rumunsko | Rumunština | 0418 |
| Rusko | Ruština | 0419 |
| Řecko | Řečtina | 0408 |
| Saudská Arábie | Arabština | 0401 |
| Singapur | Čínština | 1004 |
| Slovensko | Slovenština | 041b |
| Slovinsko | Slovinština | 0424 |
| Spojené arabské emiráty | Arabština | 3801 |
| Spojené státy | Angličtina | 0409 |
| Srbsko (Cyrilice) | Srbština | 0c1a |
| Srbsko (Latinka) | Srbština | 081a |
| Sýrie | Arabština | 2801 |
| Španělsko | Baskičtina | 042d |
| Španělsko | Katalánština | 0403 |
| Španělsko (Moderní) | Španělština | 0c0a |
| Španělsko (Tradiční) | Španělština | 040a |
| Švédsko | Švédština | 041d |
| Švýcarsko | Francouzština | 100c |
| Švýcarsko | Italština | 0810 |
| Švýcarsko | Němčina | 0807 |
| Taiwan | Čínština | 0404 |
| Thajsko | Thajština | 041e |
| Trinidad | Angličtina | 2c09 |
| Tunisko | Arabština | 1c01 |
| Turecko | Turečtina | 041f |
| Ukrajina | Ukrajinština | 0422 |
| Uruguay | Španělština | 380a |
| Velká Británie | Angličtina | 0809 |
| Venezuela | Španělština | 200a |
| Vietnam | Vietnamština | 042a |
| Zimbabwe | Angličtina | 3009 |
Atribut SessionID obsahuje identifikátor aktuální session.
Pokud od posledního požadavku v dané session uplyne doba určená tímto atributem, je tato session ukončena a objekt Session je zrušen.
Atribut Value zprostředkovává přístup k hodnotám uloženým pro danou session. Obvykle se vynechává.
Následující dva zápisy jsou ekvivalentní:
Session.Value("Jmeno") = "Ferda"
Session("Jmeno") = "Ferda"
Objekt Session má dvě události, které se používají v souboru global.asa.
Událost OnStart nastává, když klient zavolá některou ze stránek dané ASP aplikace a nemá ještě aktivní session.
Událost nastane před zpracováním stránky, kterou klient požaduje. V obslužné funkci této události se provádí inicializace proměnných a objektů, které mají být uchovávány pro danou session (tzn. i mezi voláními jednotlivých stránek, ale pouze pro daného klienta).
Příklad nastavení proměnné na čas vytvoření aktuální session:
Sub Session_OnStart()
Session("ZacatekSession") = Now()
End Sub
Událost OnEnd je vyvolána v případě ukončení session. K tomu může dojít z důvodu uplynutí doby nastavené v atributu Timeout od posledního požadavku na stránku ASP aplikace. Další příčinou vzniku události OnEnd může být explicitní ukončení session voláním metody Abandon.
Objekt Session obsahuje dvě kolekce standardního typu.
Tato kolekce obsahuje všechny proměnné a hodnoty uložené v aktuální session, kromě objektů vytvořených s využitím elementu <OBJECT>.
Přestože je možný přístup k proměnným dané session prostřednictvím kolekce Contents, obvykle se tato kolekce používá jen pro zjištění seznamu proměnných, které jsou pro tuto session dostupné. K jednotlivým proměnným se obvykle přistupuje přímo přes objekt Session.
Například:
Session("Barva") = "Zelená"
barva = Session("Barva")
Pro vypsání všech položek kolekce můžeme použít následující kód:
For Each polozka In Session.Contents
If IsObject(Session.Contents(polozka)) Then
Response.Write "Objekt: '" & polozka & "'<BR>"
ElseIf IsArray(Session.Contents(polozka)) Then
Response.Write "Pole: '" & polozka & "'<BR>"
Else
Response.Write "Proměnná: '" & polozka & "' = " & Session.Contents(polozka) & "<BR>"
End If
Next
Tato kolekce obsahuje objekty vytvořené pro aktuální session prostřednictvím elementu <OBJECT> v souboru global.asa.
Všechny hodnoty této kolekce lze pouze číst. Obvykle se k nim přistupuje přímo přes objekt Session, např.:
obj = Session("Objekt")
Kolekce StaticObjects se obvykle používá pouze pro zjištění seznamu objektů dostupných v aktuální session.
For Each obj In Session.StaticObjects
If IsObject(Session.StaticObjects(obj)) Then
Response.Write "Objekt: ID = '" & obj & "'<BR>"
End If
Next