Programiranje

Napišite programe CGI v Javi

Common Gateway Interface (CGI) je standard za pisanje programov, ki lahko prek spletnega strežnika komunicirajo z odjemalcem, ki uporablja spletni brskalnik. Ti programi spletnemu razvijalcu omogočajo, da prek brskalnika posreduje dinamične informacije (običajno v obliki HTML). Program CGI je mogoče napisati v katerem koli jeziku, vključno z Javo, ki ga lahko izvaja vaš spletni strežnik. Programi CGI se pogosto uporabljajo za dodajanje iskalnikov, aplikacij za knjige gostov, mehanizmov za poizvedbe po zbirkah podatkov, forumov interaktivnih uporabnikov in drugih interaktivnih aplikacij na spletna mesta.

Zelo osnovno mora program CGI razlagati informacije, ki so mu bile poslane, jih na nek način obdelati in ustvariti odgovor, ki bo poslan stranki.

Večina vhodnih podatkov v program CGI se vanj prenese prek spremenljivk okolja. Ta članek bo prikazal, kako te spremenljivke okolja poslati v program Java CGI. Preostali del vnosa (če obstaja) se prenese v program CGI kot standardni vhod, ki ga lahko vaš program bere neposredno.

Obdelava je lahko tako preprosta kot dodajanje informacij datoteki ali tako zapletena kot zahtevanje podatkov iz baze podatkov.

Ker lahko program CGI vrne nešteto vrst dokumentov, mora program CGI na svoj izhod postaviti kratko glavo (besedilo ASCII), tako da bo odjemalec znal razlagati informacije, ki jih ustvari. Najpogosteje programi CGI ustvarjajo HTML. Spodaj boste našli knjižnico funkcij, vključno s tisto, ki ustvari ustrezno glavo za HTML. Po glavi CGI program preprosto ustvari telo izhoda v izvorni obliki.

Prenos okolja CGI v program Java

Pisanje programa CGI v Javi je dokaj enostavno, ko enkrat razumete težave. Najprej in najpomembneje je, da morate izvajanje Java programa zaviti v drug skript. Torej bo dejanski skript, ki se prikliče na vašem spletnem strežniku, skript lupine Unix ali paketna datoteka sistema Windows (ali enakovredna datoteka), ki preprosto posreduje spremenljivke okolja CGI v vaš program Java.

Ker Java ne ponuja več metode za neposreden dostop do spremenljivk okolja ( System.getenv () metoda je bila onemogočena v zadnji izdaji JDK), predlagam, da se vsaka spremenljivka okolja CGI posreduje v program Java s pomočjo parametra ukazne vrstice -D v tolmaču Java. Spodaj vam bom pokazal, kako uporabljati parameter -D.

Knjižnica funkcij, ki jo zagotavljam spodaj, predvideva, da ste uporabili zgoraj opisani pristop; uporablja System.getProperty () za dostop do teh parametrov ukazne vrstice. Če mora vaš program uporabiti katero koli spremenljivko okolja CGI, lahko do njih dostopate na enak način. Če želite na primer dostopati do spremenljivke okolja SERVER_NAME, lahko to storite na naslednji način:

 Niz ime_strežnika = System.getProperty ("cgi.server_name"); 

Zavedajte se, da ne grem mimo vse spremenljivk okolja CGI v moj program Java. Mimo samo glavnih. Vključitev ostalih bom pustil bralcu kot vajo.

Naslednji primer prikazuje datoteko skripta Unix zdravo.cgi priklic programa Java, imenovanega zdravo. Upoštevajte, da parameter -D ukazne vrstice posreduje spremenljivke okolja CGI v program Java:

#! / bin / sh java -Dcgi.content_type = $ CONTENT_TYPE -Dcgi.content_length = $ CONTENT_LENGTH -Dcgi.request_method = $ REQUEST_METHOD -Dcgi.query_string = $ QUERY_STRING -Dcgi.server_name = $ SERVER_NAME -port = SERV SERVER_NAMEDport Dcgi.script_name = $ SCRIPT_NAME -Dcgi.path_info = $ PATH_INFO zdravo 

Ta rešitev ne deluje dobro na platformah Windows 95 in NT, ker je v ukazni vrstici morda dovoljeno število znakov. Alternativni pristop je lahko preprosto zapisovanje vsake spremenljivke okolja in z njimi povezanih vrednosti v začasno datoteko (seveda z edinstvenim imenom datoteke). Nato lahko ime te datoteke prenesete v svoj program Java in jo preberete ter razčlenite pare spremenljivke / vrednosti okolja. Ko končate z uporabo, ne pozabite izbrisati začasne datoteke! Spet je ta vaja prepuščena bralcu.

Knjižnica Java CGI

Da bi olajšal dolgočasno nalogo obdelave vhodov CGI, sem napisal razred Java (v resnici knjižnica funkcij), ki ga lahko uporabite za zmanjšanje nekaterih umazanih del. Ta knjižnica poskuša podvojiti funkcionalnost zelo priljubljenega Perla cgi-lib.pl knjižnica. Spodnjo kodo sem dokumentiral s komentarji v slogu javadoc, tako da lahko neposredno iz kode ustvarite HTML dokumentacijo. (Uporaba javadoc cgi_lib.java ustvarjati cgi_lib.html.)

Tu je izvorna koda in dokumentacija za knjižnico.

Pisanje vašega prvega programa Java CGI

Tu je primer, ki prikazuje, kako cgi_lib.java knjižnico lahko uporabimo za pisanje programa CGI. Napisali bomo preprost program, ki obdeluje moj obrazec "Hello There". Ta preprost obrazec bo od uporabnika zahteval ime in e-poštni naslov. Tu je obrazec (zdravo.html), ki ga želimo obdelati:

& ltHTML> & ltHEAD> & ltTITLE & gtPozdravljeni in dobrodošli! & ltBODY> & ltH1 ALIGN = CENTER & gtPozdravljeni in dobrodošli & lthr> & ltFORM METHOD = "POST" ACTION = "/ cgi-bin / hello.cgi"> Kako vam je ime? & ltINPUT TYPE = "text" NAME = "name"> & ltp> Kakšen je vaš e-poštni naslov? & ltINPUT SIZE = 40 TYPE = "text" NAME = "email"> & ltINPUT TYPE = "submit" VALUE = "Submit" & gt. & ltP> & lthr>

Napišimo program Java za obdelavo obrazca "Hello There".

Najprej moramo stranko obvestiti, da bo naš program generiral HTML. The Glava () metoda v cgi_lib.java ustvari niz, ki ga potrebujemo, zato bomo začeli s klicem te metode in vrvico poslali v standardno s pomočjo System.out.println sistemski klic.

 // // Natisnemo zahtevano glavo CGI. // System.out.println (cgi_lib.Header ()); 

Drugič, želimo obdelati podatke obrazca, ki nam jih pošlje brskalnik. The ReadParse metoda v cgi_lib.java naredi vse, kar dela za nas, in vrne rezultat v primerku Hashtable. V tem primeru bo Hashtable po razčlenitvi podatkov obrazca vseboval dve ključni vrednosti. Eno bo vnosno polje "ime", drugo pa vnosno polje "e-pošta". Vrednosti, povezane z vsakim od teh ključev, bodo tiste, ki jih je uporabnik vpisal v ta vnosna polja na obrazcu "Hello There".

 // // Analizira podatke obrazca v Hashtable. // Hashtable form_data = cgi_lib.ReadParse (System.in); 

Zdaj, ko smo razčlenili podatke obrazca, lahko s podatki, ki so nam poslani, opravimo poljubno obdelavo. Nato lahko ustvarimo nekaj HTML-ja, ki ga pošljemo nazaj v uporabnikov brskalnik. V tem preprostem programu ne bomo izvajali nobene obdelave podatkov; preprosto bomo ponovili informacije, ki jih je posredoval uporabnik. Uporabili bomo dobili metoda na objektu Hashtable za pridobivanje vrednosti obrazca v nize, ki jih lahko uporabimo v našem programu. Naslednji primer prikazuje, kako bi izvlekli ime, ki ga je uporabnik vtipkal v objekt String.

 Ime niza = (niz) form_data.get ("ime"); 

Zdaj pa vse skupaj združimo v preprost program. Tu je aplikacija Java, ki jo lahko uporabimo za obdelavo obrazca "Hello There" (zdravo.java):

uvoz java.util. *; uvoz java.io. *; class hello {public static void main (String args []) {// // Tu je minimalistični program CGI, ki uporablja cgi_lib // // // Natisni zahtevano glavo CGI. // System.out.println (cgi_lib.Header ()); // // Analizira podatke obrazca v Hashtable. // Hashtable form_data = cgi_lib.ReadParse (System.in); // // Ustvari vrh vrnjene strani HTML // String name = (String) form_data.get ("name"); System.out.println (cgi_lib.HtmlTop ("Pozdravljeni" + ime + "!")); System.out.println ("& lth1 align = center & gtPozdravljeni" + ime + "!"); System.out.println (" Tu so pari imena / vrednosti iz obrazca: "); // // Natisnite pare imena / vrednosti, poslane iz brskalnika. // System.out.println (cgi_lib.Variables (form_data)); // // Natisnemo spremenljivke okolja, poslane iz skripta Unix. // System.out.println ("Tu so spremenljivke / vrednosti parov okolja CGI +", posredovane iz skripta UNIX: ") ; System.out.println (cgi_lib.Environment ()); // // Ustvari dno vrnjene strani HTML, da jo čisto zapreš. // System.out.println (cgi_lib.HtmlBot ());}} 

Zaključek

S tem uvodom v programiranje CGI v Javi bi morali biti na poti do povsem novega načina programiranja strežniške strani vaših spletnih aplikacij. Upoštevajte, da protokol CGI omogoča le en način komunikacije med odjemalskim brskalnikom in spletnim strežnikom. Jigsaw konzorcija za svetovni splet (glejte spodnji razdelek Viri) in drugi, kot je Sun's Jeeves, pripravljajo boljše rešitve, ki vključujejo pisanje javanskih strežnikov, ki jih lahko obesite s spletnega strežnika. Ampak to je tema za drug dan. Zabavaj se!

Pat Durante je višji inženir programske opreme v podjetju TASC, Inc., Reading, MA. TASC je 00 milijonov uporabno informacijsko podjetje, specializirano za razvoj in integracijo naprednih informacijskih sistemov in storitev. Pat že štiri leta oblikuje objektno usmerjene aplikacije. Je vodja objektno usmerjene posebne interesne skupine TASC in soustanovitelj interesne skupine Java TASC. Naslov spletnega mesta Pat je: //members.aol.com/durante.

Preberite več o tej temi

  • Informacije o vmesniku Common Gateway (CGI) najdete na:

    //hoohoo.ncsa.uiuc.edu/cgi

  • Sestavljanka konzorcija za svetovni splet je opisana na:

    //www.w3.org/pub/WWW/Jigsaw

  • Za več informacij o Sun's Jeeves glej:

    //www.javasoft.com/products/jeeves/index.html

To zgodbo "Pisanje programov CGI v Javi" je prvotno objavil JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found