Komunikace klienta s www serverem
Základní schéma:
- Uživatel zadá URL (např. http://localhost/soubor.html).
- Klient sestaví dle protokolu HTTP požadavek a odešle ho serveru.
- Server vyhledá zdroj (soubor.html) a obalený HTTP hlavičkou ho pošle klientovi.
- Klient zpracuje odpověď serveru a něco zobrazí uživateli.
Případ, kdy zdrojem není statický soubor, ale program produkující nějaký výstup:
- Uživatel zadá URL (např. http://localhost/search.cgi?what=java&lang=en).
- Klient sestaví dle protokolu HTTP požadavek a odešle ho serveru.
- Server spustí program search.cgi.
- Jeho výstup pošle klientovi.
- Klient zpracuje odpověď serveru a něco zobrazí uživateli.
Jak pracuje takový CGI program:
- Data z klienta dostane v proměnných prostředí, případně na standardním vstupu.
- Program něco počítá a to, co pošle na standardní výstup, přijde prostřednictvím serveru zpět klientovi.
#!/bin/sh echo "<?xml version=\"1.0\" encoding=\"iso-8859-2\"?>" echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"" echo " \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">" echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">" echo "<head>" echo "<meta http-equiv=\"content-type\"" echo " content=\"text/html; charset=iso-8859-2\" />" echo "<title>Sample CGI</title>" echo "</head>" echo "<body>" echo "<h1>Hello World!</h1>" echo "</body>" echo "</html>"
CGI v Javě?
- Přístup k proměnným prostředí a ke standardnímu vstupu máme.
- Psát na standardní výstup umíme.
- → Hurá! (Ovšem protože Java nevytváří samostatně spustitelné soubory, museli bychom vyrábět
falešné
cgi programy s jednořádkovým obsahem typujava MyClass
.)