Active Server Pages
ASP-koulutus / kurssit v. 2008
Kurssit saatavilla kautta Suomen. Tule, tutustu ja varaa oma koulutustapahtumasi jo tänään. Kurssit järjestää IT-koulutuksen asiantuntijasi, Koulutus- ja konsultointipalvelu KK Mediat
Datan kirjoittaminen ja tulostuksen puskurointi
Response.Write ja datan kirjoittaminen
Eräs tärkeimmistä toiminnosta ASP:ssa on datan kirjoittaminen / tulostaminen HTTP-vastaukseen, siten että asiakas pystyy tarkastelemaan tulostetta näytöllään. Kirjoittaminen tapahtuu menetelmän Response.Write-avulla:
<%
Response.Write (variant)
%>
Esimerkki:
<%
Response.Write "Tämä on merkkijono"
strToinenjono="Tämä on jokin toinen jono"
Response.Write strToinenJono &" ja sama uudelleen " &strToinenJono
%>
Tulostuksen hallinta
ASP:ssä tulostuksen hallinta tapahtuu nk. tulostuksen puskuroinnin avulla. Puskuri (buffer) on muistissa oleva alue, johon voidaan tallentaa dataa rajatuksi ajaksi. Puskurointi on oiva lisä virheenkäsittelyssä, sillä sen käyttäytymistä voidaan ohjata erittäin helposti.
Esimerkki: Sivulla suoritetaan erittäin monimutkainen raportti, jossa asiakkaalle näytettävä sisältö koostetaan useista eri tietokantakyselyistä. Jokainen kysely tulostaa oman osionsa vastauksesta. Kesken sivun suorittamisen tietokantapalvelimella tapahtuu virhe, jonka takia kysely epäonnistuu ja sivun sisältö jää vajavaiseksi. Kuinka virhetilanne tulisi esittää käyttäjälle?
Optio 1. Virhettä ei käsitellä millään lailla, vaan asiakkaalle tulostetaan siihen asti kertynyt vastaus. Tämä tarkoittaa myös sitä, että asiakas kokee virheen mahdolliset aiheuttamat toimintahäiriöt (esim. rikkinäinen layout) tavalla tai toisella
Optio 2. Virhe käsitellään hyödyntämälllä tulostuksen hallintaa. Kaikki tietokantakyselyiden vastaukset tulostetaan nk. puskuriin. Virhetilanteen yhteydessä puskurin sisältämä data tyhjennetään, ja asiakkaalle lähtevään vastaukseen kirjoitetaan esim. ilmoitus virheestä tai asiakas ohjataan virheesta kertovalle sivulle.
Puskuria hallitaan ominaisuudella Response.Buffer; mahdolliset arvot ovat True tai False. Arvolla true, puskurointi otetaan käyttöön. Jotta puskurointia voisi käyttää, täytyy puskurointi ottaa käyttöön ennen kuin asiakkaalle lähtevään HTTP-vastaukseen on tulostettu yhtään mitään; ts. Response.Buffer sijoitetaan yleensä välittömästi ASP-direktiivien yhteyteen tiedoston alkuun. Tällöin palvelin puskuroi koko sivun tulostuksen, kunnes tiedoston kaikki komennot on suoritettu, tai Response-objektin menetelmää Response.Flush tai Response.End on kutsuttu.
Ominaisuuden Response.Buffer oletusarvo vaihtelee Microsoft IIS:n eri versioilla.
Virheiden käsittelyn ohella tulostuksen hallintaa / puskurointia tarvitaan mm. XML-muotoisen datan käsittelyssä. Etenkin XML:n tapauksessa on ensisijaisen tärkeää, että koko dokumentti on latautunut ennen kuin sen sisältöä ruvetaan parsimaan. Puskurointia tarvitaan myös silloin kun esim. HTTP-otsakkeiden muutosta vaativia toimintoja, esim. evästeiden luomista, käsitellään jossain kohden tiedostoa.
.
<% @LANGUAGE="Vbscript" %>
<% Option Explicit
' puskurointi käyttöön
Response.Buffer = True '
Response.Write "Terve, sanoi " & Request.QueryString("nimi")
If Request.QueryString("nimi") = "" Then
' tyhjennä puskuri
Response.Clear
' ja printtaa uusi viesti
Response.Write "Terve"
' tulosta puskurin sisältö
Response.Flush
End If
' lisää puskuriin kaikille
Response.Write "...ja kiitos kaloista"
' tulosta ja tyhjennmä puskuri
Response.End
Tutustu artikkelin muihin osiin:
»»» ASP »»»Response olio
»»» ASP »»»Datan kirjoittaminen ja tulostuksen puskurointi (Response.Write ja Response.Buffer)
»»» ASP »»»Edistynyt tulostuksen hallinta (Response.Charset ja Response.ContentType)
»»» ASP »»»Response olion muita ominaisuuksia
»»» ASP »»»Response.Cookies ja eväste-datan käsittely
»»» ASP »»»Response.addHeader ja Response.AppendToLog
»»» ASP »»»Response.Redirect ja Response.BinaryWrite
Tallenna tämä sivu kirjanmerkkeihin!