160 likes | 262 Views
Dynamické dokumenty na straně serveru. Informatika pro ekonomy II přednáška 8. Dynamický × statický dokument. Statický dokument – vzhled je neměnný, uživatel si nemůže volit zobrazované informace.
E N D
Dynamické dokumenty na straně serveru Informatika pro ekonomy II přednáška 8
Dynamický × statický dokument • Statický dokument – vzhled je neměnný, uživatel si nemůže volit zobrazované informace • Dynamický dokument – tvar a prezentované informace může uživatel ovlivnit svojí činnosti • Dynamický dokument na straně serveru – vytvořen programem, který běží na vzdáleném stroji (komunikace přes CGI rozhraní) • Dynamický dokument na straně klienta – vytvoření a modifikaci zajišťuje prohlížeč (klient)
Vlastnosti dynamických dokumentů na straně serveru • Schopnost řešení složitých a rozsáhlých úloh, používání souborového systému a výkonu serveru • Nízká závislost na klientovi (prohlížeči) a jeho schopnostech, klient pouze stránku zobrazuje • Veškeré požadavky a data se včetně odpovědí přenášejí přes síťové spojení (protokol TCP) • Nelze reagovat na události vzniklé u klienta (pohyb myši, stisk klávesy apod.) – to řeší dynamické dokumenty na straně klienta
Dynamické dokumentyna straně serveru – princip CGI URL + data data klient(prohlížeč) WWWserver obslužný program HTML HTML data • CGI rozhraní (Common Gateway Interface) – definice způsobu komunikace WWW serveru s obslužnou aplikací (programem)
Zpracování požadavku • URL dynamického dokumentu na straně serveru se liší v datech, zapsaných za otazníkem http://akela.mendelu.cz/~xyz/skript.cgi?data • Server podle rozšíření .cgi pozná, že se jedná o CGI rozhraní, a předá mu data z URL • CGI skript zpracuje data a na výstup pošle výsledný text (vygenerovaný HTML dokument) • WWW server vytvořený dokument zašle klientovi, který ho zobrazí stejným způsobem jako statické dokumenty
Tvar dat předávaných v URL <form action=skript.cgi method=get> <input type=text name=prvni>…<br> <input type=text name=druhy>…<br> <input type=submit value=Odeslat> </form> …/skript.cgi?prvni=neco&druhy=neco • Metoda předání dat (viz formuláře HTML) • GET – data předána viditelně v URL • POST – data předána skrytě v těle požadavku
Kódování URL • Mezera se v URL zobrazí jako + (někdy %20) • Znaky, které v URL něco znamenají, se kódují jako %cc, kde cc jsou dvě šestnáctkové číslice ordinálního čísla znaku. (Unicode %cccc) • Příklady jmeno=”Jan Kos” …skript.cgi?jmeno=Jan+Kos jmeno=”Tomáš Hála” …skript.cgi?jmeno=Tom%E1%9A+H%E1la
Proměnné prostředí • QUERY_STRING – obsahuje data předaná v URL • REQUEST_METHOD – metoda předání dat • SERVER_NAME – IP adresa (jméno) serveru • SERVER_PROTOCOL – jméno a verze protokolu • SERVER_PORT – číslo portu hostitele • CONTENT_TYPE – typ dotazovaných dat • HTTP_USER_AGENT – prohlížeč • …a mnohé další (nejdůležitější jsou první dvě)
text/html text/plain … Obecný tvar CGI skriptu • Úvodní příkazy #! /bin/bash echo Content-type: <typ dat> echo • Test způsobu předání dat if test $REQUEST_METHOD = GET then Data=$QUERY_STRING else Data=`cat` fi
Obecný tvar CGI skriptu …skript.cgi?vstup=1&jmeno=Franta+Vopicka • Získání dat Cislo=`echo $Data | sed 's/vstup=//' |sed 's/&.*//'` Jmeno=`echo $Data | sed 's/.*jmeno=//' |sed 's/&.*//'` • Výpis HTML stránky odpovědi echo "<HTML><BODY><H1>Odpověď</H1>" echo "<H4>Číslo: $Cislo</H4>" echo "<H4>Metoda: $REQUEST_METHOD.</H4>" echo "</BODY></HTML>"
Příklady k procvičení • Navrhněte HTML formulář a odpovídající skript na straně serveru, který ze zadání alespoň části jména nebo příjmení studenta zobrazí jeho fotografii, UID, celé jméno a příjmení. Předpokládejte, že fotografie studentů jsou v jednom adresáři v souborech, jejichž jméno je tvořeno číslem UID a rozšíření je gif. Předpokládejte, že údaje o všech studentech (UID, jméno a příjmení) jsou v jediném textovém souboru, jehož přesný tvar navrhněte podle potřeby.
Příklady k procvičení • Navrhněte dynamický dokument HTML, do jehož formuláře může uživatel vložit část názvu nebo autora knihy. Odpovědí je úplná informace o všech knihách, které vyhovují zadanému řetězci. Odpověď do HTML bude mít tvar tabulky s pěti sloupci, v nichž budou přehledně vypsány údaje o názvu, autorovi, roku vydání, nakladatelství a ISBN.
Příklady k procvičení • Navrhněte HTML formulář a odpovídající skript na straně serveru s následující činností: Uživatel zadá do formuláře nějaký řetězec a po stisku odesílacího tlačítka skript poskytne informaci o všech souborech aktuálního adresáře, jejichž jména obsahují zadaný řetězec. Výstup bude formátován do HTML tabulky, v níž bude první sloupec tvořen plným jménem souboru a druhý bude naplněn deseti znaky vyjadřujícími typ souboru a přístupová práva ve stejném tvaru, jako zobrazí příkaz ls –l.
Příklady k procvičení • Napište dynamický HTML dokument, do něhož uživatel zadá název souboru a příslušný skript zobrazí prvních 10 řádků tohoto souboru, který se nachází v aktivním adresáři. Ve stránce generované skriptem rovněž uveďte odkaz zpět na formulářovou stránku. K filtraci klientových dat použijte program sed ve tvaru: sed 's/xxx=//' | sed 's/&.*//'
Příklady k procvičení • Je dán soubor teploty.txt s následující strukturou:– datum,– teplota v 7 hod.,– teplota ve 14 hod.,– teplota v 21 hod.,– směr větru ve stupních,– rychlost větru v m/s,– tlak v hPa.Příklad dat: 31.01.2003|16|19|18|16|105|1009,4Vytvořte skript, který dodá do prohlížeče jen datum a poslední dva údaje o větru v podobě HTML tabulky.
Příklady k procvičení • Sestavte skript, který zobrazí poslední řádek, který se vztahuje k měsíci březnu a kdy byl naměřen tlak alespoň 1000 hPa. Tvar dat, předaný do prohlížeče, zůstane textový.Příklad dat: 31.01.2003|16|19|18|16|105|1009,4 #!/bin/bash(řešení je skryto) echo Content-type: text/plain echo cat teploty.txt | grep ^....3.*[1-9]...,.$ | tail -1