Katalog ASP odkaz∙: Hledßte informace o ASP? Zkuste nßÜ nov² katalog odkaz∙ na ASP weby. Vφce zde...
TextLink.cz
VyÜlo: 1.11.2000 Rubrika: ASP - Objekty

Objekt Response aneb vklßdejte data do toku HTTP
Pokud chcete °φdit tok HTTP informacφ na stranu klienta, vyu₧ijte objekt Response. V Φlßnku se dozvφte o vÜech jeho vlastnostech, metodßch a kolekcφch.

Objekt slou₧φ p°edevÜφm k °φzenφ odpov∞di HTTP klientovi. Objekt by se dal pomysln∞ rozd∞lit na t°i skupiny:

1) Data, kterß se odesφlajφ v hlaviΦce odpov∞di HTTP.
2) Data, kterß se odesφlajφ v t∞le odpov∞di HTTP.
3) Kdy a jak se data odesφlajφ.

P°ehled vlastnostφ

Buffer

Response.Buffer = [True | False]

Tato vlastnost nastavuje, zda-li se bude generovanß ASP strßnka zasφlat klientovi postupn∞, jak se generuje nebo se poΦkß, a₧ si server celou strßnku vygeneruje a potΘ bude strßnka zaslßna klientovi.
True: Je-li Response.Buffer nastaven na True dokument bude zaslßn a₧ po dokonΦenφ na stran∞ serveru.
False: Dokument se bude zasφlat pr∙b∞₧n∞. Tato hodnota je v²chozφ, kdy₧ se Response.Buffer na strßnce nenastavuje.
Poznßmka: Tato vlastnost se musφ nastavit p°ed HTML tagem < HTML >. Pokud nastavφte tuto vlastnost pod znaΦkou < HTML >, nastane chyba scriptu.

Response.CacheControl

Response.CacheControl = [Private | Public ]

Tato vlastnost umo₧≥uje nastavit zda m∙₧e proxy server p°es kter² je VaÜe strßnka posφlßna uklßdat strßnku na sv∙j disk (do cache). Tuto vlastnost doporuΦuji nastavit pouze pokud se jednß o ASP strßnku, kterß se Φasto nem∞nφ.

Private: Volba, kterß je nastavena implicitn∞. Znamenß v₧dy brßt data ze serveru.
Public: Zvolenφm tΘto vlastnosti povolφte naΦφtßnφ ASP strßnky z cache serveru.

Poznßmka: I tuto vlastnout musφte nastavit p°ed zaΦßtkem vlastnφ HTML strßnky, tedy p°ed znaΦkou < HTML >. Dßle musφm z vlastnφ zkuÜenosti konstatovat, ₧e ne vÜechny proxy-servery majφ zapnutΘ cachovßnφ strßnek a tedy ani hodnota Response.CacheControl nastavenß na Public nezaruΦuje jejφ zrychlenφ p°i naΦφtßnφ.

ContentType

Response.ContentType

Nastavuje typ dokumentu. V²chozφ hodnota je text/html. Tuto vlastnost lze v praxi pou₧φt pokud z databßze vypisujete obrßzek, tak lze nastavit ContentType na Response.Write = "image/JPEG"

Expires

Response.Expires = doba v minutßch

Nastavφ, po jakΘ dob∞ vyprÜφ aktußlnost strßnky. V praxi se jednß o toto: Otev°ete-li strßnku p°ed vyprÜenφm limitu Expires, prohlφ₧eΦ naΦte strßnku ze svΘ cache, ale pokud p°φjdete po vyprÜenφ tΘto doby bude strßnka naΦtena znova ze serveru. Doba se udßvß v minutßch.

Poznßmka: Nastavφte-li hodnotu na 0 bude se strßnka naΦφtat v₧dy znovu.
Pokud nastavφte vlastnost Expires ve skriptu vφcekrßt, pou₧ije se nejkratÜφ doba nikoliv ta, kterou zadßte jako poslednφ.

IsClientConnected

Response.IsClientConnected

Vlastnost, kterß vracφ, zda-li se ji₧ u₧ivatel strßnky odpojil nebo je stßle aktvinφ. Vyu₧itφ mß tato vlastnost v dlouh²ch strßnkßch, kde se generujφ slo₧itΘ SQL dotazy a u₧ivatel musφ Φekat na zpracovßnφ serverem. Hodnota je True pokud je klient stßle p°ipojen na server nebo False, jestli₧e se klient p°edΦasn∞ odpojil.

PICS

Response.PICS(string)

Tato vlastnost vlo₧φ do hlaviΦky HTTP oznaΦenφ PICS (Platform for Internet Content Selection) PICS jednoznaΦn∞ oznaΦuje obsah VaÜich strßnek pro hodnotφcφ slu₧by (RSAC). Tento parametr je vhodnΘ pou₧φvat na strßnkßch, kam si nep°ejete, aby nevstupovali d∞ti. Samoz°ejm∞ to nenφ 100% °eÜenφ, ale pokud na poΦφtaΦi, kde je strßnka zobrazena b∞₧φ hodnotφcφ program a vy do svΘ strßnky napφÜete, ₧e nenφ pro d∞ti, tak se na n∞j dφt∞ nedostane.

Status

Response.Status

Zadßvß stavovou informaci, kterß se odeÜle klientovi z webovskΘho serveru.
Poznßmka: Tuto vlastnost objektu Response je nutno pou₧φt p°ed HTML tagem < HTML > jinak dojde k chyb∞.

Dßle se dozvφte, jak do strßnky vepsat prom∞nnou, jak oÜet°it chybu ve strßnce, jak p°esm∞rovat strßnku a samoz°ejm∞ jeÜt∞ spoustu dalÜφho.

P°ehled kolekcφ

Cookies

Response.Cookies(ôCookieö)[(KlφΦ)|.Atribut] = hodnota

Kde Cookie reprezentuje jmΘno specifikovanΘ cookie, u kterΘ se bude nastavovat hodnota. KlφΦ je °et∞zcov² volen² parametr podklφΦe cookie, pokud bude zadßn, bude cookie tzv. ôdirectoryö a hodnota klφΦe bude nastavena na hodnota. Atribut dopl≥uje informace o samotnΘ cookie.
Pro lepÜφ pochopenφ se podφvejme na p°φklad, kter² demonstruje vytvo°enφ Cookies s nßzvem "Test" a klφΦem "lock", kter² je nastaven na hodnotu "pokus"
<% 
Response.Cookies("Test")("lock") = "pokus"
%>
V hlaviΦce strßnky se objevφ n∞co jako
Set-Cookie:TEST=lock=pokus

Pro lepÜφ pochopenφ celΘ problematiky okolo Cookies je nutno si o nich °φct vφce. Opat°ete si proto dopl≥ujφcφ informace.

P°ehled metod

AddHeader

Response.AddHeader name, value

Tato metoda slou₧φ k p°idßnφ vlastnφ hlaviΦky do HTTP strßnky s Vßmi zadan²mi hotnotami. Pokud budete chtφt vlo₧it hlaviΦku s ji₧ existujφcφm nßzvem, tak p°edchozφ hlaviΦka nebude p°epsßna. Proto doporuΦuji v nßzvech VaÜich hlaviΦek nepou₧φvat "_" (podtr₧φtka), jeliko₧ kolekce ServerVariables by p°eklßdala tento znak jako pomlΦku, a tudφ₧ by doÜlo k nesprßvnΘ interpretaci. Hodnota, kterß se zadßvß jako value je °et∞zec.
Jeliko₧ HTTP protokol vy₧aduje odeslßnφ hlaviΦek p°ed obsahem strßnky, je nutno vÜechny hlaviΦky do strßnky "napustit" p°ed znaΦkou < HTML >. Pokud zavolßte Response.AddHeaeder pod znaΦkou < HTML > nastane neoΦekßvanß chyba ;)

AppendToLog

Response.AppendToLog °et∞zec

Metoda p°idß do zßznamu o po₧adavku strßnky na server °et∞zec. Maximßlnφ dΘlka je 80 znak∙, ale pokud pot°eujete vklßdat delÜφ ret∞zec je mo₧nΘ metodu pou₧φt vφcekrßt. Dßle °et∞zec nesmφ obsahovat znak ","(Φßrka), jeliko₧ pole, kam se data zapisujφ v IIS jsou odd∞leny Φßrkami.
Praxe: Mßte-li web a chcete identifikovat u₧ivatele mßte mo₧nost si pomocφ AppendToLog zaznamenßvat, jak se u₧ivatel pohyboval na webu, pop°φpad∞ kolikrßt se na web vrßtil.

BinaryWrite

Response.BinaryWrite Data

BinaryWrite zapφÜe, jak ji₧ nßzev napovφdß p°φmo do toku HTTP data, kterß zadßte jako parametr Data. Mφsto Data je nutno vlo₧it pole bajt∙, kterΘ chcete vlo₧it.
Nemusφte se tedy bßt, ₧e zde dojde ke konverzi znak∙. PraktickΘ vyu₧itφ naleznete, kdy₧ musφte ve svΘ webovskΘ aplikaci zapisovat binßrnφ data pro klienta. Na prvnφ pohled se m∙₧e zdßt, ₧e tato metoda nemß p°φliÜ velkΘ praktickΘ vyu₧itφ. Myslφm, ₧e nßzor zm∞nφte pokud budete pot°ebovat vypsat obrßzek z databßze. P°φkaz Response.BinaryWrite je v tomto p°φpad∞ neoceniteln².

Clear

Response.Clear

Metoda Clear vyma₧e obsah p°ipravovanΘho v²stupu pro klienta (strßnku, kterß by se m∞la poslat klientovi). Tuto metodu lze pou₧φt pokud mßte nastaveno Response.Buffer na hodnotu True. Strßnka se neodesφlß okam₧it∞ klientovi a vy mßte mo₧nost nap°φklad v p°φpadu chyby smazat obsah strßnky. PraktickΘ vyu₧itφ naleznete ve strßnce, kde m∙₧e nastat chyba a vy nechcete, aby se u₧ivateli zobrazila. Nastavφte si Response.Buffer a potΘ generujete strßnku. Na konci otestujete zda-li je strßnka v po°ßdku. Pokud ano, nic se ned∞je, ale pokud nastala chyba, pou₧ijete Response.Clear a u₧ivatel se o niΦem nedovφ. Nakonec m∙₧ete nap°φklad dodat hlßÜku, ₧e doÜlo k neoΦekßvanΘ chyb∞.

End

Response.End

Metoda End zakonΦφ veÜkerou prßci serveru na generovßnφ strßnky a zaÜle jφ klientovi. Sma₧e po sob∞ veÜkerΘ spojenφ s databßzφ a uvolnφ po sob∞ pam∞¥. Pokud p°i pou₧itφ mßte nastavenou vlastnost Buffer na True, pak se zßsobnφk vyprßzdnφ stejn∞, jako by jste zavolali metodu Flush. Jedin² rozdφl je vÜak ten, ₧e po zavolßnφ tΘto metody se ji₧ ₧ßdn² k≤d nezpracuje, ale u Flush se strßnka pouze odeÜle klientovi a prßce na strßnce pokraΦuje sm∞le dßl ;)

Flush

Response.Flush

Okam₧it∞ odeÜle souΦasnou verzi strßnky na stranu klienta. Znamenß to tedy zrychlenφ naΦφtßnφ strßnek pokud mßte na strßnce dva a vφce SQL dotaz∙, kterΘ nemusejφ Φekat na sebe a m∙₧ou se v²sledky postupn∞ posφlat klientovi, kter² je zobrazφ v browseru a je mo₧nΘ si je nap°φklad prohlφ₧et v dob∞, kdy server generuje zbytek strßnky. Tento p°φkaz bohu₧el nemß upla¥n∞nφ pokud mßte celou strßnku v tabulce, kdy jsou sice data u klienta, ale browser Φekß na zbytek dat, aby mohl naΦφst celou tabulku.
Pro lepÜφ pochopenφ zde uvßdφm p°φklad:

<HTML>
<HEAD>
<TITLE>Pokusnß strßnka s vyu₧itφm Response.Flush
<BODY>
<%
Set Conn = ServerCreateObject("ADODB.Connection")
Conn.Open nazev_databaze
Narocny_SQL = " [VLASTNI SQL DOTAZ]"
Set vysledek = Conn.Execute(Narocny_SQL)

Zde se provedl prvnφ dotaz. Abychom urychlili naΦφtßnφ stßnky na stran∞ klienta, zaÜleme mu ji p°ed dokonΦenφm naΦφtßnφ strßnky.

Response.Flush
Druhy_Dlouhy_SQL = "[VLASTNI SQL DOTAZ]"
Set vysledek = Conn.Execute(Druhy_Dlouhy_SQL)
%>
</BODY>
</HTML>

Redirect

Response.Redirect url

P°esm∞ruje klienta na URL (Uniform Resource Locator). Tato metoda se volß p°ed tagem < HTML >.

Write

Response.Write data

Asi nejpou₧φvan∞jÜφ metoda objektu Response. Metoda zapφÜe informace p°φmo do t∞la odpov∞di HTTP. Za data lze doplnit jak text, tak znaΦky HTML, ale data nesmejφ obsahovat "% >". Za tyto znaky je nutnΘ napsat "% \ >". Tomuto server rozumφ. :)
P°φklad:
<% Response.Write "<IMG SRC = "aaa.jpg" %\>" %>
Klientovi dorazφ
<IMG SRC = "aaa.jpg" >

Poznßmka: Pot°ebujete-li odeslat znak konce °ßdku nebo uvozovky, pou₧ijte funkci Chr.
P°φklad:
Response.Write "Test uvozovek - " & Chr(34) & " - Konec testu"
O Response.Write by se zaslou₧il cel² Φlßnek, ale ten zatφm nenφ, tak₧e jeÜt∞ struΦn∞ podotknu, ₧e pomocφ Response.Write lze jednoduÜe vypisovat hodnoty prom∞nn²ch.
P°φklad:
<%
pro1 = 548
Response.Write ("Vypsßnφ prom∞nnΘ: " & pro1)
%>
Klient dostane:
Vypsßnφ prom∞nnΘ: 548
Toto je doufßm jasnΘ. Pro spojenφ se pou₧φvß znak "&".
Jako poslednφ v∞c, kterß m∞ k Response.Write napadß je jejφ zjednoduÜenΘ pou₧itφ ve form∞ <%=promena1%>. VÜe jist∞ pochopφte na p°φkladu.
P°φklad:
Vypsßnφ prom∞nnΘ: <%=pro1%>
Tento druh² p°φklad je ve v²slednΘ fßzi zcela toto₧n² s p°edchozφm.

Toto je prozatφm o objektu Response vÜechno. VeÜkerΘ funkce si m∙₧ete vyzkouÜet za pou₧itφ PWS (Personal Web Serveru), o kterΘm jste zde mohli takΘ nalΘzt Φlßnek.

Zden∞k Cendra
ceskywap@ceskywap.cz



   Souvisejφcφ Φlßnky
TextLink.cz