Komunikace klienta s www serverem

Základní schéma:
  1. Uživatel zadá URL (např. http://localhost/soubor.html).
  2. Klient sestaví dle protokolu HTTP požadavek a odešle ho serveru.
  3. Server vyhledá zdroj (soubor.html) a obalený HTTP hlavičkou ho pošle klientovi.
  4. 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:
  1. Uživatel zadá URL (např. http://localhost/search.cgi?what=java&lang=en).
  2. Klient sestaví dle protokolu HTTP požadavek a odešle ho serveru.
  3. Server spustí program search.cgi.
  4. Jeho výstup pošle klientovi.
  5. 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.
Příklad:
#!/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 typu java MyClass.)