ASP 3.0 Active Server Pages 2 ASP 3.0 Active Server Pages Microsoft palvelinpuolen www-ohjelmointitekniikka, jossa HTML:n sekaan voidaan kirjoittaa skriptejä 26.12.2018 Dynaaminen Internet T2HA53
Esimerkki. staattinen ja dynaaminen www-sivu Tallennetaan palvelimeen C:\Inetpub\www.root\kansio\tiedosto Pyydetään selaimella URL http:/localhost/kansio/tiedosto heippa.html heippa.asp <html> <head> <title> xxxx</title> </head> <body> Heippa </body> </html> <html> <head> <title>xxxx</title> </head> <body> <% Response.Write("Heippa ")%> </body> </html> Esittelyt ja alustukset <HEAD> -elementtiin html-sekaan tulevat <%...%> -koodilla <BODY>-elementtiin Demo. http://localhost/asp3/heippa.asp Heippa.asp 26.12.2018 Dynaaminen Internet T2HA53
Lomakepyyntö ja ASP-vastaus lomake on request (pyyntö) pyynto.asp esim. <form action=”vastaus.asp” method=”post”> <input type=”text” name=”kohde” id=”kohde” /> <input type=”submit” name=”go” /> </form> vastaus.asp-tiedostossa on response (vastaus) esim. <% muuttuja=Request.Form(”kohde") Response.Write(muuttuja) %> Request.Form Object.Collection <html> <head> <title>Request -pyyntölomake</title> </head> <body> Tähän tulee html-tekstiä<br/> <form action="responsi.asp" method="post"> <input type="text" value="???" name="syotto”/> <select size=3 name="yksikko" multible=”multible”/> <option>Malmi</option> <option>Helsinki</option> <option>Haaga</option> <INPUT type="submit" value="lähetä" name=”lahetys” id=”lahetys” /> <INPUT type="reset" value="tyhjennä" name=”tyhjennys” id=”tyhjennys” /> </form> </body> </html> ------------------------ responsi.asp <title>Palvelimen vastaus</title> <% Dim strTeksti strTeksti=Request.Form("syotto") Response.Write "Kirjoitit tekstikenttään <i>" Response.Write strTeksti Response.Write "</i> " %> 26.12.2018 Dynaaminen Internet T2HA53
Dynaaminen Internet T2HA53 …..Esim. pyyntö-vastaus requesti2.asp responsi2.asp <html> <body> <form name="lomake" id="lomake" action="responsi2.asp" method="post"> <input name="etu" type="text" > <input name="go" type="submit" > </form> </body> </html> <html> <body> <% dim juttu juttu=Request.Form("etu") Response.Write("Kiitos. ") Response.Write(juttu) %> </body> </html> Demo. http://localhost /asp3/requesti2.asp 26.12.2018 Dynaaminen Internet T2HA53
Dynaaminen Internet T2HA53 TEHTÄVÄ. Vahvistus Rakenna vuorovaikutteinen sivusto (2 tiedostoa), jossa on lomake syöttökenttineen (nimi ja ikä) ja palvelin vastaa kertomalla mitä syötit. Extra demo. requesti_responsi.asp Lisätehtäviin ks. edellisten tehtävien muistiinpanosivuja 26.12.2018 Dynaaminen Internet T2HA53
Dynaaminen Internet T2HA53 Evästeet - Cookies Evästekokoelman avulla pystytään tunnistamaan kone, joka on jo aiemmin käynyt sivustossa (palvelimella…) Evästeisiin voidaan tallentaa (pitemmäksi aikaa) tietoa asiakaskoneen aiemmin tekemistä valinnoista Evästeet tallentuvat tekstitiedostona asiakkaan koneelle -> Evästeet -kokoelma mahdollistaa asiakaskoneen personoinnin Cookies eli suomeksi eväste on asiakaskone- ja palvelinsivustokohtainen. Cookies säilyy myös istuntojen välillä. Aikakatkaisu on esimerkiksi vuorokaudesta kuukauteen, muista julkinen tietokone! max. 4kt (Netscape) 26.12.2018 Dynaaminen Internet T2HA53
Dynaaminen Internet T2HA53 … Cookies syntaksi Eväste asennetaan ennen ensimmäistä <html>-tagia Tiedostossa vastaus.asp sijoitetaan eväste asiakkaan koneeseen a) eväste voidaan antaa koodissa suoraan Response.Cookies(”sNimi”)=”Ankka” (yksiulotteinen eväste) b) evästeelle saadaan arvo lomakekentästä Response.Cookies(”sNimi")=Request.Form(”kohde") ASP Cookies A cookie is often used to identify a user. A cookie is a small file that the server embeds on the user's computer. Each time the same computer requests for a page with a browser, it will send the cookie too. The Response.Cookies command is used to create cookies: Note: The Response.Cookies command must appear BEFORE the tag! The "Request.Cookies" command is used to retrieve a cookie value. Yhteys palvelimen ja asiakkaan välillä on stateless, http-protokolla on asiakasvetoinen, ei ole minkäänlaista muistia palvelimen ja asiakkaan välillä. anonyymi. Etsi koneen evästeitä esimerkiksi kansiosta C:\Documents and Settings\....\Cookies ----------- esimerkki kolmiavaimisesta evästeestä nimeltään ”mieli” Response.Cookies("mieli")(”joukkue")="Espa" Response.Cookies("mieli")("mauste")="neilikka" Response.Cookies("mieli")("auto")="VW" <!---------------------tiedosto requesti.asp alkaa--------------------------------------> <HTML> <HEAD> <TITLE>Cookies -requesti</TITLE> </HEAD> <BODY> Haluatko keksejä? <FORM action="responsi.asp" method="post"> <INPUT type="radio" value="joo2" name="valinta" > haluan kaksi keksiä <INPUT type="radio" value="joo1" name="valinta" checked> haluan yhden keksin <INPUT type="radio" value="ei" name="valinta">en halua keksejä <INPUT type="submit" value="lähetä" > <INPUT type="reset" value="tyhjennä" > </FORM> </BODY> </HTML> <!------------------------tiedosto loppuu-----------------------------------> <!------------------------tiedosto responsi.asp alkaa-----------------------------------> <% Select Case Request.Form("valinta") Case "joo2" Response.Cookies("evaste")("eka")="Marie" Response.Cookies("evaste")("toka")="Domino" Case "joo1" Case "ei" Response.Cookies("evaste").Expires=date-1 Response.Write "Tuhotaan vanhat keksit... " End Select %> <TITLE>Evästeiden istutus</TITLE> Kiitokset ajastanne ja mielenkiinnostanne keksejämme kohtaan. <!----------------testiä varten..... <%Dim strEvaste1, strEvaste2 strEvaste1=Request.Cookies("evaste")("eka") strEvaste2=Request.Cookies("evaste")("toka") Response.Write strEvaste1&" " &strEvaste2 %> ------------------------> ----------------------------------------------------------------------- ***************************************************** Toinen esimerkki Evästeen anto <!------------------------lomake -tiedosto alkaa-----------------------------------> <TITLE></TITLE> <form name="lomake" method="post" action="ASPcookies1.asp"> <P>Minkä evästeen haluat antaa?</P> <P><INPUT id=text1 name=syotto><INPUT id=submit1 type=submit value=Submit name=submit1></P> </form> Seuraava asp-tiedosto asettaa evästeen yhdeksi vuorokaudeksi <!------------------------ ASPcookies1.asp -tiedosto alkaa-----------------------------------> <%@ Language=VBScript %> <% Response.Cookies("evaste").Expires=date+1 Response.Cookies("evaste")("avain1")=Request.Form("syotto") ///////tässä kerrotaan mitä tuli evästettyä dim evas1 evas1=Request.Cookies(”evaste")(”avain1”) Response.Write "Kirjoitit ” & evas1 <P> </P> Seuraava asp-tiedoto tarkistaa onko evästettä ja jos on niin ilmoittaa olemassa olevan, muuten asettaa evästeen yhdeksi vuorokaudeksi If response.Cookies("evaste").HasKeys then dim evas0 evas0=Request.Cookies("evaste")("avain1") Response.Write "Olet tuttu: " Response.Write evas0 else evas1=Request.Form("syotto") Response.Write "Kirjoitit "&evas1 End if Seuraava tiedosto poistaa evästeen <!------------------------evasttiedosto alkaa-----------------------------------> <% Response.Cookies("evaste").Expires=date-1 Response.Write "Eväste poistettiin"%> 26.12.2018 Dynaaminen Internet T2HA53
Dynaaminen Internet T2HA53 … Evästeet (Cookies) voimassaoloaika (tällöin sijoitetaan fyysisesti asiakaskoneeseen esim. kohtaan C:\Documents and Settings\...\Cookies) voimassa 30 päivää: Response.Cookies(”sNimi").Expires=date()+30 tuhotaan eväste: Response.Cookies(”sNimi").Expires=date()-1 voimassaolo voi olla myös palvelimen tuntema päiväys "June 10, 2002" <!---------------------tiedosto requesti.asp alkaa--------------------------------------> <HTML> <HEAD> <TITLE>Cookies -requesti</TITLE> </HEAD> <BODY> Haluatko keksejä? <FORM action="responsi.asp" method="post"> <INPUT type="radio" value="joo2" name="valinta" > haluan kaksi keksiä <INPUT type="radio" value="joo1" name="valinta" checked> haluan yhden keksin <INPUT type="radio" value="ei" name="valinta">en halua keksejä <INPUT type="submit" value="lähetä" > <INPUT type="reset" value="tyhjennä" > </FORM> </BODY> </HTML> <!------------------------tiedosto loppuu-----------------------------------> <!------------------------tiedosto responsi.asp alkaa-----------------------------------> <% Select Case Request.Form("valinta") Case "joo2" Response.Cookies("evaste")("eka")="Marie" Response.Cookies("evaste")("toka")="Domino" Case "joo1" Case "ei" Response.Cookies("evaste").Expires=date-1 Response.Write "Tuhotaan vanhat keksit... " End Select %> <TITLE>Evästeiden istutus</TITLE> Kiitokset ajastanne ja mielenkiinnostanne keksejämme kohtaan. <!----------------testiä varten..... <%Dim strEvaste1, strEvaste2 strEvaste1=Request.Cookies("evaste")("eka") strEvaste2=Request.Cookies("evaste")("toka") Response.Write strEvaste1&" " &strEvaste2 %> ------------------------> ----------------------------------------------------------------------- ***************************************************** UUTUUS: Toinen esimerkki Evästeen anto <!------------------------lomake -tiedosto alkaa-----------------------------------> <TITLE></TITLE> <form name="lomake" method="post" action="ASPcookies1.asp"> <P>Minkä evästeen haluat antaa?</P> <P><INPUT id=text1 name=syotto><INPUT id=submit1 type=submit value=Submit name=submit1></P> </form> Seuraava asp-tiedosto asettaa evästeen yhdeksi vuorokaudeksi <!------------------------ ASPcookies1.asp -tiedosto alkaa-----------------------------------> <%@ Language=VBScript %> <% Response.Cookies("evaste").Expires=date+1 Response.Cookies("evaste")("avain1")=Request.Form("syotto") ///////tässä kerrotaan mitä tuli evästettyä dim evas1 evas1=Request.Cookies(”evaste")(”avain1”) Response.Write "Kirjoitit ” & evas1 <P> </P> Seuraava asp-tiedoto tarkistaa onko evästettä ja jos on niin ilmoittaa olemassa olevan, muuten asettaa evästeen yhdeksi vuorokaudeksi If response.Cookies("evaste").HasKeys then dim evas0 evas0=Request.Cookies("evaste")("avain1") Response.Write "Olet tuttu: " Response.Write evas0 else evas1=Request.Form("syotto") Response.Write "Kirjoitit "&evas1 End if Seuraava tiedosto poistaa evästeen <!------------------------evasttiedosto alkaa-----------------------------------> <% Response.Cookies("evaste").Expires=date-1 Response.Write "Eväste poistettiin"%> 26.12.2018 Dynaaminen Internet T2HA53
… Evästeet (Cookies) olemassa olevan evästeen käsittely Muuttujaan sijoitetaan olemassa oleva eväste ja se kirjoitetaan HTML -tulostusvirtaan evaste=Request.Cookies(”sNimi”) Response.Write(evaste) voimassaolo voi olla myös palvelimen tuntema päiväys "June 10, 2002" <!---------------------tiedosto requesti.asp alkaa--------------------------------------> <HTML> <HEAD> <TITLE>Cookies -requesti</TITLE> </HEAD> <BODY> Haluatko keksejä? <FORM action="responsi.asp" method="post"> <INPUT type="radio" value="joo2" name="valinta" > haluan kaksi keksiä <INPUT type="radio" value="joo1" name="valinta" checked> haluan yhden keksin <INPUT type="radio" value="ei" name="valinta">en halua keksejä <INPUT type="submit" value="lähetä" > <INPUT type="reset" value="tyhjennä" > </FORM> </BODY> </HTML> <!------------------------tiedosto loppuu-----------------------------------> <!------------------------tiedosto responsi.asp alkaa-----------------------------------> <% Select Case Request.Form("valinta") Case "joo2" Response.Cookies("evaste")("eka")="Marie" Response.Cookies("evaste")("toka")="Domino" Case "joo1" Case "ei" Response.Cookies("evaste").Expires=date-1 Response.Write "Tuhotaan vanhat keksit... " End Select %> <TITLE>Evästeiden istutus</TITLE> Kiitokset ajastanne ja mielenkiinnostanne keksejämme kohtaan. <!----------------testiä varten..... <%Dim strEvaste1, strEvaste2 strEvaste1=Request.Cookies("evaste")("eka") strEvaste2=Request.Cookies("evaste")("toka") Response.Write strEvaste1&" " &strEvaste2 %> ------------------------> ----------------------------------------------------------------------- ***************************************************** UUTUUS: Toinen esimerkki Evästeen anto <!------------------------lomake -tiedosto alkaa-----------------------------------> <TITLE></TITLE> <form name="lomake" method="post" action="ASPcookies1.asp"> <P>Minkä evästeen haluat antaa?</P> <P><INPUT id=text1 name=syotto><INPUT id=submit1 type=submit value=Submit name=submit1></P> </form> Seuraava asp-tiedosto asettaa evästeen yhdeksi vuorokaudeksi <!------------------------ ASPcookies1.asp -tiedosto alkaa-----------------------------------> <%@ Language=VBScript %> <% Response.Cookies("evaste").Expires=date+1 Response.Cookies("evaste")("avain1")=Request.Form("syotto") ///////tässä kerrotaan mitä tuli evästettyä dim evas1 evas1=Request.Cookies(”evaste")(”avain1”) Response.Write "Kirjoitit ” & evas1 <P> </P> Seuraava asp-tiedoto tarkistaa onko evästettä ja jos on niin ilmoittaa olemassa olevan, muuten asettaa evästeen yhdeksi vuorokaudeksi If response.Cookies("evaste").HasKeys then dim evas0 evas0=Request.Cookies("evaste")("avain1") Response.Write "Olet tuttu: " Response.Write evas0 else evas1=Request.Form("syotto") Response.Write "Kirjoitit "&evas1 End if Seuraava tiedosto poistaa evästeen <!------------------------evasttiedosto alkaa-----------------------------------> <% Response.Cookies("evaste").Expires=date-1 Response.Write "Eväste poistettiin"%> Evästeet (joissa voimassaoloaika) löytyvät asiakkaan koneelta eri kohdista, esim: C:\Documents and Settings\...\Cookies ks. selaimelta Tools>Internet Options > Temporary Internet Files>Settings>View Files Demo. http://localhost/asp3/cookies_syottolomake.asp cookies_syottolomake.asp, cookies_syotto.asp 26.12.2018 Dynaaminen Internet T2HA53
Dynaaminen Internet T2HA53 TEHTÄVIÄ . Eväste 1.Rekisteröinti. Tee lomake, joka pyytää luomaan etunimen, käyttäjätunnuksen ja salasanan. Lisäksi se ilmoittaa, että nämä tallennetaan vastaisuuden (10 vrk) varalle. Tämän jälkeen palvelin kertoo mitä löytyy evästeinä. 2. Anna asiakkaalle mahdollisuus poistaa olemassa oleva eväste. . 26.12.2018 Dynaaminen Internet T2HA53
Dynaaminen Internet T2HA53 4.2 Session Session -olio interaktiivisuuteen istunnon aikana milloin istunto alkaa tallentaa istuntoa koskevaa tietoa milloin istunto lopetetaan Sessionit ovat korvaamassa cookiet, mutta käytännössä ilman cookieta ei voi olla sessioneita. Cookies on konekohtainen. Cookies myös istuntojen välillä. Jos sessionin aikakatkaisu on esimerkiksi 20 minuuttia, voisi se cookiella olla vuorokaudesta kuukauteen, muista julkinen tietokone! 26.12.2018 Dynaaminen Internet T2HA53
...Session -olion termejä istunnon aikaiset muuttujat (ominaisuuksia, metodeja ja kokoelmaa) <% tunnus=Session.SessionID %> palauttaa nyk. istunnon id-tunnuksen <% Session.Timeout=10 %> palauttaa/asettaa aikakatkaisun (10 minuuttia) <% Session.Abandon() %> tuhoaa session-olion <%Session.Contents(”nimi”)=”Tiina” %> Antaa istunnon kokoelman ”nimi” arvoksi ”Tiina” <% = Session.Contents("asiakasID") %> <% Session.Contents.Remove ("muuttuja") %> Session olion kokoelmaa (Collection) muuttujat ja taulukot, ei <OBJECT> elemetille! <%=Session.StaticObjects... <OBJECT>-elementin avulla varastoitu istuntotieto Session olion jäsenmuuttujia (ominaisuuksia) <% Session.CodePage %> kokonaisluku selaimen koodisivu (code page). 1252 on ANSI (eurooppalainen) <% Session.LCID %> kokonaisluku, maaasetukset (locate identifier), esim. 2057 £ <% Session.SessionID %> long palvelimen antama (Sovellus-oliota kohden) yksilöllinen "laskuri" <% Session.Timeout %> kokonaisluku katkaisee istunnon (minuuttia), oletuksena 20 minuuttia Session olion Metodit (Method) <% Session.Contents.Remove ("muuttuja") %> tyhjentää Session.Contents("muuttujan") <% Session.Contents.RemoveAll() %> tyhjentää kaikki Session.Contents("muuttujat") <% Session.Abandon %> tuhoaa nykyisen Session- olion, kun asiakas päivittää sivun Session –olion tapahtumia (Event). Käytetään global.asa -tiedostossa <% Session.onStart %> alustaa istunnon <% Session.onEnd %> tyhjentää istunnon aikaiset muuttujat, kun istunto päättyy Demo. http://localhost/asp3/session.asp session.asp 26.12.2018 Dynaaminen Internet T2HA53
Dynaaminen Internet T2HA53 TEHTÄVIÄ. Session 1. Session. Tee istunnon aikainen sivu, joka antaa istunnolle ID:n. Istunnon aikakatkaisuksi laitat 5 minuuttia. Lisäksi käyttäjällä on mahdollisuus katkaista istunto. . 26.12.2018 Dynaaminen Internet T2HA53
...Selaimen sivujen integrointia (Response ja Server -oliot) <% Response.Redirect(”responsi2.asp”) %> -ohjaa uudelle sivulle <% Server.Transfer (”responsi2.asp”) %> -upottaa/ohjaa uudelle sivulle (vie mukanaan muuttujia) <% Server.Execute(”responsi2.asp”) %> -suorittaa käskyn upottaa toisen sivun alkuperäiseen mahdollistaa yhteiset aliohjelmat <!-- #include file="responsi2.asp" - -> -SSI eli Server Side Includes -komento Including Files You can insert the content of one ASP file into another ASP file before the server executes it, with the #include directive. The #include directive is used to create functions, headers, footers, or elements that will be reused on multiple pages Syntax: or Use the virtual keyword to indicate a path beginning with a virtual directory. If a file named "header.inc" resides in a virtual directory named /html, the following line would insert the contents of "header.inc": Use the file keyword to indicate a relative path. A relative path begins with the directory that contains the including file. If you have a file in the html directory, and the file "header.inc" resides in html\headers, the following line would insert "header.inc" in your file: Use the file keyword with the syntax (..\) to include a file from a higher-level directory. <% Response.Redirect =responsi2.asp %> ohjaa uudelle sivulle. HUOM bufferin tulee olla true. <-------------------------Responsi1.asp------------------------> <% Response.Redirect "responsi2.asp" %> <HTML> <HEAD> <TITLE>Kontrolloi mihin mennään ja milloin </TITLE> </HEAD> <BODY> <% Response.Write "Responsi1.asp -tiedoston tekstiä!!" %> </BODY> </HTML> <-------------------------tiedosto päättyy------------------------> <-------------------------responsi2.asp------------------------> <% Response.Write "Tämä on responsi2.asp -tiedoston tekstiä" %> SSI-tekniikkaa ASP:ssa SSI eli Server Side Includes -komennollakin voi liittää palvelimella toisen tiedoston <!-- #include Polkutyyppi = Tiedostonimi --> Ennen sivun käsittelemistä ASP käy läpi koko tiedoston ja etsii liitettäviä (sisällytettäviä) tiedostoja ja sijoittaa tiedoston direktiivin #include paikalle. Hyvä keino yhtenäistää esimerkiksi yhteiset valikot Polkutyyppi voi olla jokin seuraavista: File;Tiedostonimi on suhteellinen polku kansiosta, jossa #flastmod-direktiivin sisältävä tiedosto sijaitsee, lähtien. Virtual; Tiedostonimi on täydellinen polku Web-palvelimesi näennäiskansiosta lähtien. esim. <!-- #include file = "navigointi.html" --> <!-- #include virtual = "/scripts/dbs/dbyhteys.asp" --> <-------------------------teksti päättyy------------------------> demot: redirect.asp+heippa.asp, testi transfer.asp+heippa.asp, testi execute.asp+heippa.asp, testi include.asp+includealku.asp+includekeski.asp+includeloppu.asp, testi 26.12.2018 Dynaaminen Internet T2HA53
Dynaaminen Internet T2HA53 TEHTÄVIÄ Teht10_0. Ohjaus. Tee sivusto (3-4 sivua), jossa (ASP-tekniikkaa hyväksikäyttäen) asiakas ohjautuu (Redirect) talous- tai yhteiskuntasivulle, sen mukaan onko hänen ilmoittamansa vuositulot yli/alle 50000 euroa. Teht10_1. Rakenna talous- ja yhteiskunta sivuilla näkyvä yhteinen navigointitiedosto (käytä include-toimintoa) 26.12.2018 Dynaaminen Internet T2HA53