Změna stylu: Standardní Dřevo Jaro Léto Léto2 Potápěč :-) Údolí stínů

Objekt Session

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ří:

Metody

Metoda Abandon

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.

Atributy

Atribut CodePage

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

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

Atribut SessionID obsahuje identifikátor aktuální session.

Atribut Timeout

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

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"

Události

Objekt Session má dvě události, které se používají v souboru global.asa.

Událost OnStart

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

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.

Kolekce

Objekt Session obsahuje dvě kolekce standardního typu.

Kolekce Contents

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

Kolekce StaticObjects

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

Hlavní stránka