Ohjelmointi

Kirjoita CGI-ohjelmat Java-muodossa

Common Gateway Interface (CGI) on standardi sellaisten ohjelmien kirjoittamiseen, jotka voivat olla vuorovaikutuksessa Web-palvelimen kanssa verkkoselainta käyttävän asiakkaan kanssa. Näiden ohjelmien avulla verkkokehittäjä voi toimittaa dynaamista tietoa (yleensä HTML-muodossa) selaimen kautta. CGI-ohjelma voidaan kirjoittaa millä tahansa kielellä, Java mukaan lukien, jonka Web-palvelimesi voi suorittaa. CGI-ohjelmia käytetään yleisesti hakukoneiden, vieraskirjasovellusten, tietokantakyselykoneiden, vuorovaikutteisten käyttäjien foorumeiden ja muiden vuorovaikutteisten sovellusten lisäämiseen verkkosivustoihin.

Hyvin yksinkertaisesti CGI-ohjelman on tulkittava sille lähetetyt tiedot, käsiteltävä tietoja jollain tavalla ja luotava vastaus, joka lähetetään takaisin asiakkaalle.

Suurin osa CGI-ohjelman syötteistä siirretään siihen ympäristömuuttujien kautta. Tässä artikkelissa kuvataan, kuinka nämä ympäristömuuttujat lähetetään Java CGI -ohjelmaan. Loput syötteestä (jos sellainen on) siirretään CGI-ohjelmaan vakiotulona, ​​jonka ohjelma voi lukea suoraan.

Käsittely voi olla yhtä yksinkertaista kuin tietojen lisääminen tiedostoon tai yhtä monimutkainen kuin tietojen pyytäminen tietokannasta.

Koska CGI-ohjelma voi palauttaa lukemattomia asiakirjatyyppejä, CGI-ohjelman on asetettava lähtöönsä lyhyt otsikko (ASCII-teksti), jotta asiakas tietää kuinka tulkita luomansa tiedot. Yleisimmin CGI-ohjelmat luovat HTML: n. Alla on kirjasto toimintoja, mukaan lukien sellainen, joka luo sopivan otsikon HTML: lle. Otsikon jälkeen CGI-ohjelma yksinkertaisesti luo tuloksen rungon alkuperäisessä muodossaan.

CGI-ympäristön siirtäminen Java-ohjelmaan

CGI-ohjelman kirjoittaminen Java-ohjelmassa on melko helppoa, kun ymmärrät ongelmat. Ensinnäkin sinun on pakattava Java-ohjelman toteutus toisen komentosarjan sisään. Joten varsinainen Web-palvelimellesi kutsuttu komentosarja on Unix-komentotiedosto tai Windows-erätiedosto (tai vastaava), joka yksinkertaisesti siirtää CGI-ympäristömuuttujat Java-ohjelmaasi.

Koska Java ei enää tarjoa tapaa käyttää ympäristömuuttujia suoraan ( System.getenv () menetelmä on poistettu käytöstä JDK: n viimeisimmässä versiossa), ehdotan, että jokainen CGI-ympäristömuuttuja siirretään Java-ohjelmaan Java-tulkin komentoriviparametrilla -D. Näytän sinulle kuinka käyttää -D-parametria alla.

Seuraavassa tarjoamieni toimintojen kirjasto olettaa, että olet käyttänyt yllä kuvattua lähestymistapaa; se käyttää System.getProperty () tapa käyttää näitä komentoriviparametreja. Jos ohjelmasi on käytettävä jotain CGI-ympäristömuuttujista, voit käyttää niitä samalla tavalla. Esimerkiksi, jos haluat käyttää SERVER_NAME-ympäristömuuttujaa, voit tehdä sen seuraavasti:

 Merkkijono palvelimen_nimi = System.getProperty ("cgi.palvelimen_nimi"); 

Ole tietoinen siitä, että en mene ohi kaikki CGI-ympäristömuuttujien Java-ohjelmaan. Ohitan vain suurimmat. Jätän muiden sisällyttämisen lukijan tehtäväksi.

Seuraava esimerkki näyttää Unix-komentotiedoston nimeltä hei.cgi kutsutaan Java-ohjelma Hei. Huomaa, että -D-komentoriviparametri välittää CGI-ympäristömuuttujat Java-ohjelmaan:

#! / 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_Palvelimen_palvelin Dcgi.script_name = $ SCRIPT_NAME -Dcgi.path_info = $ PATH_INFO hei 

Tämä ratkaisu ei toimi hyvin Windows 95- ja NT-alustoilla, koska komentorivillä sallittujen merkkien määrälle voi olla rajoituksia. Vaihtoehtoinen lähestymistapa voi olla yksinkertaisesti kaikkien ympäristömuuttujien ja niihin liittyvien arvojen kirjoittaminen väliaikaiseen tiedostoon (tietysti yksilöllisellä tiedostonimellä). Sitten voit välittää tämän tiedoston nimen Java-ohjelmaasi ja antaa sen lukea kyseisen tiedoston ja jäsentää ympäristömuuttuja / arvo-parit. Älä unohda poistaa väliaikaista tiedostoa, kun olet lopettanut sen käytön! Jälleen tämä harjoitus jätetään lukijan tehtäväksi.

Java CGI -kirjasto

CGI-syötteiden käsittelyn työlään tehtävän helpottamiseksi olen kirjoittanut Java-luokan (todella kirjaston toimintoja), jonka avulla voit vähentää joitain likaisia ​​töitä. Tämä kirjasto yrittää kopioida toiminnot erittäin suositussa Perlissä cgi-lib.pl kirjasto. Olen dokumentoinut alla olevan koodin käyttämällä javadoc-tyylisiä kommentteja, jotta voit luoda HTML-dokumentaation suoraan koodista. (Käyttää javadoc cgi_lib.java luoda cgi_lib.html.)

Tässä on kirjaston lähdekoodi ja ohjeet.

Ensimmäisen Java CGI -ohjelman kirjoittaminen

Tässä on esimerkki, joka osoittaa, miten cgi_lib.java kirjastoa voidaan käyttää CGI-ohjelman kirjoittamiseen. Kirjoitamme yksinkertaisen ohjelman, joka käsittelee "Hello There" -lomakkeen. Tämä yksinkertainen lomake pyytää käyttäjää antamaan nimen ja sähköpostiosoitteen. Tässä on lomake (hei.html) jonka haluamme käsitellä:

& ltHTML> & ltHEAD> & ltTITLE & gtHei ja tervetuloa! & ltBODY> & ltH1 ALIGN = KESKUS & gtHei ja tervetuloa & lthr> & ltFORM METHOD = "POST" ACTION = "/ cgi-bin / hello.cgi"> Mikä on nimesi? & ltINPUT TYPE = "text" NAME = "name"> & ltp> Mikä on sähköpostiosoitteesi? & ltINPUT SIZE = 40 TYPE = "teksti" NAME = "sähköposti"> & ltINPUT TYPE = "lähetä" VALUE = "Lähetä" & gt. & ltP> & lthr>

Kirjoitetaan Java-ohjelma "Hello There" -lomakkeen käsittelemiseksi.

Ensinnäkin meidän on ilmoitettava asiakkaalle, että ohjelmamme tuottaa HTML: ää. Otsikko () menetelmä cgi_lib.java luo tarvitsemamme merkkijonon, joten aloitamme kutsumalla kyseisen menetelmän ja lähettämällä merkkijono vakiona käyttämällä System.out.println järjestelmän puhelu.

 // // Tulosta vaadittu CGI-otsikko. // System.out.println (cgi_lib.Header ()); 

Toiseksi haluamme käsitellä selaimen meille lähettämät lomaketiedot. LueParse menetelmä cgi_lib.java tekee kaiken, mikä toimii meille ja palauttaa tuloksen Hashtable-esiintymänä. Tässä tapauksessa Hashtable sisältää kaksi avainta-arvoa lomaketietojen jäsentämisen jälkeen. Yksi on "nimi" -kenttä ja toinen "sähköposti" -kenttä. Kuhunkin näihin avaimiin liittyvät arvot ovat mitä tahansa käyttäjän kirjoittamia kyseisiin kenttiin "Hei siellä" -lomakkeessa.

 // // jäsennä lomaketiedot hashtableiksi. // Hashtable form_data = cgi_lib.ReadParse (System.in); 

Nyt kun olemme jäsentäneet lomaketiedot, voimme tehdä haluamamme käsittelyn meille lähetetyillä tiedoilla. Sitten voimme luoda HTML-koodin, joka lähetetään takaisin käyttäjän selaimeen. Tässä yksinkertaisessa ohjelmassa emme aio käsitellä mitään tietoja; toistamme yksinkertaisesti käyttäjän toimittamat tiedot. Aiomme käyttää saada Hashtable-objektin menetelmä, jolla lomakkeen arvot puretaan merkkijonoihin, joita voimme käyttää ohjelmassa. Seuraava esimerkki osoittaa, kuinka otamme käyttäjän kirjoittaman nimen String-objektiin.

 Merkkijonon nimi = (Merkkijono) form_data.get ("nimi"); 

Yhdistetään nyt kaikki yksinkertaiseen ohjelmaan. Tässä on Java-sovellus, jota voimme käyttää "Hello There" -lomakkeen (hei.java):

tuo java.util. *; tuo java.io. *; class hello {public static void main (String args []) {// // Tässä on minimalistinen CGI-ohjelma, joka käyttää cgi_lib // // // Tulosta vaadittu CGI-otsikko. // System.out.println (cgi_lib.Header ()); // // jäsennä lomaketiedot hashtableiksi. // Hashtable form_data = cgi_lib.ReadParse (System.in); // // Luo palautetun HTML-sivun yläosa // Merkkijonon nimi = (Merkkijono) form_data.get ("nimi"); System.out.println (cgi_lib.HtmlTop ("Hei siellä" + nimi + "!")); System.out.println ("& lth1 tasaa = keskellä & gtHello siellä" + nimi + "!"); System.out.println (" Tässä ovat nimen / arvon parit lomakkeesta: "); // // Tulosta selaimelta lähetetyt nimi / arvo-parit. // System.out.println (cgi_lib.Variables (form_data)); // // Tulosta Unix-komentotiedostosta lähetetyt ympäristömuuttujat. // System.out.println ("Tässä ovat CGI-ympäristömuuttujat / arvoparit" + "siirretty UNIX-komentosarjasta:") ; System.out.println (cgi_lib.Environment ()); // // Luo palautetun HTML-sivun alaosa sulkeaksesi sen puhtaasti. // System.out.println (cgi_lib.HtmlBot ());}} 

Johtopäätös

Tämän Java-CGI-ohjelmoinnin johdannon avulla sinun pitäisi olla matkalla aivan uuteen tapaan ohjelmoida Web-sovellusten palvelinpuoli. Muista, että CGI-protokolla tarjoaa vain yhden tavan kommunikoida asiakasselaimen ja Web-palvelimen välillä. World Wide Web Consortiumin palapeli (katso alla oleva Resurssit-osio) ja muut, kuten Sun's Jeeves, keksivät parempia ratkaisuja, joihin sisältyy Java-palvelinsovellusten kirjoittaminen, jotka voit ripustaa verkkopalvelimellesi. Mutta se on toisen päivän aihe. Pidä hauskaa!

Pat Durante on vanhempi ohjelmistosuunnittelija TASC, Inc.:ssä Readingissa, MA. TASC on 00 miljoonan sovellettu tietotekniikkayritys, joka on erikoistunut edistyneiden tietojärjestelmien ja palvelujen kehittämiseen ja integrointiin. Pat on suunnitellut objektiivisia sovelluksia neljä vuotta. Hän on TASC: n Object Oriented Special Interest Groupin johtaja ja TASC: n Java Interest Groupin perustaja. Patin verkkosivuston osoite on: //members.aol.com/durante.

Lisätietoja tästä aiheesta

  • Tietoja yhteisestä yhdyskäytävärajapinnasta (CGI) löytyy osoitteesta:

    //hoohoo.ncsa.uiuc.edu/cgi

  • World Wide Web Consortiumin palapeli on kuvattu osoitteessa:

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

  • Lisätietoja Sunin Jeevesistä:

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

Tämän tarinan "Kirjoita CGI-ohjelmat Javalaan" julkaisi alun perin JavaWorld.

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