ASP Session objekti
- Edellinen sivu ASP Cookies
- Seuraava sivu ASP Application
Session-objekti käytetään käyttäjän tietojen tallentamiseen. Session-objektiin tallennetut muuttujat sisältävät yksittäisen käyttäjän tietoja ja ovat saatavilla kaikissa sovelluksen sivuissa.
Session-objekti
Kun käytät tiettyä sovellusta, avaat sen, teet muutoksia ja suljet sen. Tämä on aivan kuin keskustelu (Session). Tietokone tietää, kuka olet. Se tietää, milloin avasit ja suljettiin sovelluksen. Mutta Internetissä on ongelma: koska HTTP-osoitteet eivät voi säilyttää tilaa, web-palvelin ei tiedä, kuka olet ja mitä teit.
ASP ratkaisee tämän ongelman luomalla jokaiselle käyttäjälle yksilöllisen cookien. Cookie lähetetään asiakaspuolelle, ja siinä on tietoja, jotka tunnistavat käyttäjän. Tämä liitäntä kutsutaan Session-objektiksi.
Session-objekti käytetään käyttäjätietojen tallentamiseen tai session asetusten muuttamiseen käyttäjää kohden. Session-objektiin tallennetut muuttujat sisältävät yksittäisen käyttäjän tiedot ja ovat saatavilla kaikissa sovelluksen sivuissa. Session-objektiin tallennettujen tietojen yleensä nimi, id ja parametrit. Palvelin luo uuden session jokaiselle uudelle käyttäjälle ja poistaa session-objektin, kun session päätyy.
Kun session aloittuu?
Session aloittuu:
- Kun uusi käyttäjä pyytää ASP-tiedostoa, ja Global.asa viittaa Session_OnStart-algoritmiin;
- Kun arvo tallennetaan Session-muuttujaan;
- Kun käyttäjä pyytää ASP-tiedostoa, ja Global.asa käyttää <object>-tagia session sovellusalueen avulla esittämään tiettyä objektia;
Kun session päätyy?
Jos käyttäjä ei pyydä tai päivitä sivua sovelluksessa määrätyn ajan sisällä, session päätyy. Oletusarvo on 20 minuuttia.
Jos haluat asettaa aikavälin pidemmäksi tai lyhyemmäksi, voit asettaa Timeout Ominaisuus.
Seuraavassa esimerkissä asetetaan 5 minuutin aikaväli:
<% Session.Timeout=5 %>
Jotta session voidaan päättää välittömästi, voidaan käyttää Abandon Menetelmä:
<% Session.Abandon %>
Huomio:Sessionin pääongelma on, milloin sen tulisi päättää. Emme tiedä, onko käyttäjän viimeinen pyyntö ollut viimeinen. Siksi emme tiedä, kuinka kauan session tulisi "elää". Liian pitkä odotus tyhjille sessionille kuluttaa palvelimen resursseja. Kuitenkin jos session poistetaan liian aikaisin, käyttäjän täytyy alkaa uudestaan alusta, koska palvelin on poistanut kaikki tiedot. Erikoisen aikavälin löytäminen on vaikeaa.
Vinkki:Jos käytät session-muuttujia, älä tallenna niissä suurta määrää tietoja.
Tallennus ja palauttaminen session-muuttujia
Session-objektin suurin etu on, että siinä voidaan tallentaa muuttujia, jotka voidaan lukea myöhemmissä sivuissa, ja sen sovellusala on erittäin laaja.
Seuraavassa esimerkissä arvo "Donald Duck" asetetaan session-muuttujaan nimeltä username, ja arvo "50" asetetaan session-muuttujaan nimeltä age:
<% Session("username")="Donald Duck" Session("age")=50 %>
Kun arvo tallennetaan session-muuttujaan, sitä voidaan käyttää ASP-sovelluksen kaikissa sivuissa:
Tervetuloa <%Response.Write(Session("username"))%>
Yllä olevan ohjelman palauttama tulos on: "Tervetuloa Donald Duck".
Voit myös tallentaa käyttäjäparametreja session-objektiin ja päättää näiden parametrien perusteella, minkä sivun palauttaa käyttäjälle.
Esimerkissä, jos käyttäjä käyttää matalaa näyttöresoluutiota, palauta puhtainen tekstiversio sivusta:
<%If Session("screenres")="low" Then%> Tämä on sivun tekstiversio <%Else%> Tämä on sivun multimedias versio <%End If%>
Poista istunnon muuttuja
Contents-kokoelma sisältää kaikki istunnon muuttujat.
Voit poistaa session muuttujan remove-metodilla.
Esimerkissä, jos session muuttujan "age" arvo on alle 18, poista session muuttuja "sale":
<% If Session.Contents("age")<18 then Session.Contents.Remove("sale") End If %>
Jos haluat poistaa kaikkien istunnon muuttujien, käytä RemoveAll-metodia:
<% Session.Contents.RemoveAll() %>
Käy läpi contents-kokoelma
Contents-kokoelma sisältää kaikki istunnon muuttujat. Voit tarkastella tallennettuja muuttujia käymällä läpi contents-kokoelman:
<% Session("username")="Donald Duck" Session("age")=50 dim i For Each i in Session.Contents Response.Write(i & "<br />") Seuraava %>
Tulos:
username age
Jos haluat tietää contents-kokoelmaa sisältämien kohteiden määrän, voit käyttää count-ominaisuutta:
<% dim i dim j j=Session.Contents.Count Response.Write("Istunnon muuttujat: " & j) For i=1 to j Response.Write(Session.Contents(i) & "<br />") Seuraava %>
Tulos:
Istunnon muuttujat: 2 Donald Duck 50
Lähde läpi StaticObjects -kokoelma
Voit käydä läpi StaticObjects -kokoelman silmälläpidolla tarkistaaksesi session-objektissa tallennettujen kaikkien objektien arvot:
<% dim i For Each i in Session.StaticObjects Response.Write(i & "<br />") Seuraava %>
- Edellinen sivu ASP Cookies
- Seuraava sivu ASP Application