Programmēšana

Rakstiet CGI programmas Java valodā

Common Gateway Interface (CGI) ir standarts tādu programmu rakstīšanai, kuras, izmantojot tīmekļa serveri, var mijiedarboties ar klientu, kas darbojas tīmekļa pārlūkprogrammā. Šīs programmas ļauj tīmekļa izstrādātājam piegādāt pārlūkprogrammā dinamisku informāciju (parasti HTML formā). CGI programmu var rakstīt jebkurā valodā, ieskaitot Java, kuru var izpildīt jūsu tīmekļa serveris. CGI programmas parasti izmanto, lai Web vietnēm pievienotu meklētājprogrammas, viesu grāmatu lietojumprogrammas, datu bāzes vaicājumu dzinējus, interaktīvo lietotāju forumus un citas interaktīvas lietojumprogrammas.

Vispārīgi runājot, CGI programmai ir jāinterpretē tai nosūtītā informācija, kaut kādā veidā jāapstrādā informācija un jārada atbilde, kas tiks nosūtīta atpakaļ klientam.

Lielākā daļa CGI programmas ievades tajā tiek nodota, izmantojot vides mainīgos. Šis raksts parādīs, kā šos vides mainīgos nosūtīt Java CGI programmai. Pārējā ievade (ja tāda ir) tiek nodota CGI programmā kā standarta ievade, kuru programma var tieši nolasīt.

Apstrāde var būt tikpat vienkārša kā informācijas pievienošana failam vai tikpat sarežģīta kā datu pieprasīšana no datu bāzes.

Tā kā CGI programma var atgriezt neskaitāmus dokumentu tipus, CGI programmai uz produkcijas jānovieto īss galvenes (ASCII teksts), lai klients zinātu, kā interpretēt tās ģenerēto informāciju. Visbiežāk CGI programmas ģenerē HTML. Zemāk jūs atradīsit funkciju bibliotēku, ieskaitot to, kas ģenerē atbilstošu HTML galveni. Pēc galvenes CGI programma vienkārši ģenerē izejas tekstu tā dabiskajā formā.

CGI vides nodošana Java programmai

Uzzināt CGI programmu Java valodā ir diezgan viegli. Pirmkārt un galvenokārt, jums jāiesaiņo Java programmas izpilde cita skripta iekšpusē. Tātad faktiskais skripts, kas tiek izsaukts jūsu tīmekļa serverī, būs Unix čaulas skripts vai Windows pakešfails (vai ekvivalents), kas vienkārši pārsūta CGI vides mainīgos jūsu Java programmā.

Tā kā Java vairs nenodrošina metodi, kā tieši piekļūt vides mainīgajiem ( System.getenv () metode ir atspējota jaunākajā JDK laidienā), es ierosinu katru CGI vides mainīgo nodot Java programmai, izmantojot Java tulka komandrindas parametru -D. Es jums parādīšu, kā izmantot -D parametru zemāk.

Funkciju bibliotēka, kuru es sniedzu zemāk, pieņem, ka esat izmantojis iepriekš aprakstīto pieeju; tas izmanto System.getProperty () metodi, lai piekļūtu šiem komandrindas parametriem. Ja jūsu programmai ir jāizmanto kāds no CGI vides mainīgajiem, varat tiem piekļūt tāpat. Piemēram, ja vēlaties piekļūt SERVER_NAME vides mainīgajam, to varat izdarīt šādi:

 String server_name = System.getProperty ("cgi.servera_nosaukums"); 

Jāapzinās, ka es netieku garām visi CGI vides mainīgo manā Java programmā. Es eju garām tikai galvenajiem. Es atstāšu pārējo iekļaušanu kā vingrinājumu lasītājam.

Šajā piemērā parādīts Unix skripta fails ar nosaukumu labdien.cgi izsaucot Java programmu ar nosaukumu Sveiki. Ņemiet vērā, ka komandrindas parametrs -D nodod CGI vides mainīgos Java programmai:

#! / 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_erver_name = $ SERVER_ERVER_name = Dcgi.script_name = $ SCRIPT_NAME -Dcgi.path_info = $ PATH_INFO sveiki 

Šis risinājums nedarbojas labi Windows 95 un NT platformās, jo komandrindā atļauto rakstzīmju skaitam var būt ierobežojumi. Alternatīva pieeja var būt vienkārši visu vides mainīgo un ar tiem saistīto vērtību ierakstīšana pagaidu failā (protams, ar unikālu faila nosaukumu). Tad jūs varat nodot šī faila nosaukumu savai Java programmai un likt tai izlasīt šo failu un parsēt vides mainīgo / vērtību pārus. Neaizmirstiet izdzēst pagaidu failu, kad esat to izmantojis! Arī šis uzdevums ir atstāts lasītāja ziņā.

Java CGI bibliotēka

Lai atvieglotu garlaicīgo darbu, apstrādājot CGI ievades, es esmu uzrakstījis Java klasi (patiešām funkciju bibliotēku), kuru varat izmantot, lai samazinātu dažus netīros darbus. Šī bibliotēka mēģina dublēt ļoti populārā Perl funkcionalitāti cgi-lib.pl bibliotēka. Esmu dokumentējis zemāk esošo kodu, izmantojot javadoc stila komentārus, lai jūs varētu ģenerēt HTML dokumentāciju tieši no koda. (Izmantot javadoc cgi_lib.java ģenerēt cgi_lib.html.)

Šeit ir bibliotēkas pirmkods un dokumentācija.

Rakstot savu pirmo Java CGI programmu

Šis piemērs parāda, kā cgi_lib.java bibliotēku var izmantot, lai rakstītu CGI programmu. Mēs uzrakstīsim vienkāršu programmu, kas apstrādā manu formu “Sveiki tur!”. Šī vienkāršā forma liks lietotājam ievadīt vārdu un e-pasta adresi. Šeit ir veidlapa (labdien.html), kuru mēs vēlamies apstrādāt:

& ltHTML> & ltHEAD> & ltTITLE & gtLabdien un sveiki! & ltBODY> & ltH1 ALIGN = CENTRS & gtLabdien un sveiki! & lthr> & ltFORM METHOD = "POST" ACTION = "/ cgi-bin / hello.cgi"> Kā jūs saucat? & ltINPUT TYPE = "text" NAME = "name"> & ltp> Kāda ir jūsu e-pasta adrese? & ltINPUT SIZE = 40 TYPE = "teksts" NAME = "e-pasts"> & ltINPUT TYPE = "Iesniegt" VALUE = "Iesniegt" & gt. & ltP> & lthr>

Uzrakstīsim Java programmu, lai apstrādātu formu "Sveiki tur".

Pirmkārt, mums jāpaziņo klientam, ka mūsu programma ģenerēs HTML. The Galvene () metode cgi_lib.java izveido mums nepieciešamo virkni, tāpēc mēs sāksim izsaukt šo metodi un nosūtīt virkni standartā, izmantojot System.out.println sistēmas izsaukums.

 // // Izdrukājiet nepieciešamo CGI galveni. // System.out.println (cgi_lib.Header ()); 

Otrkārt, mēs vēlamies apstrādāt veidlapas datus, ko mums nosūtījis pārlūks. The ReadParse metode cgi_lib.java dara visu, kas mums strādā, un atgriež rezultātu Hashtable instancē. Šajā gadījumā Hashtable satur divas galvenās vērtības pēc veidlapas datu parsēšanas. Viens būs ievades lauks "nosaukums", bet otrs - ievades lauks "e-pasts". Vērtības, kas saistītas ar katru no šīm atslēgām, būs neatkarīgi no tā, ko lietotājs ievadīja šajos ievades laukos formā “Sveiki!”.

 Parsējiet veidlapas datus hashtable. // Hashtable form_data = cgi_lib.ReadParse (System.in); 

Tagad, kad esam parsējuši veidlapas datus, mēs varam nosūtīt datus, kā vien vēlētos. Tad mēs varam ģenerēt HTML, ko nosūtīt atpakaļ uz lietotāja pārlūkprogrammu. Šajā vienkāršajā programmā mēs netiks apstrādāti ar datiem; mēs vienkārši atkārtosim lietotāja sniegto informāciju. Mēs izmantosim gūt metodi Hashtable objektā, lai izvilktu formas vērtības virknēs, kuras mēs varam izmantot mūsu programmā. Šis piemērs parāda, kā mēs izdalīsim vārdu, kuru lietotājs ierakstīja objektā String.

 Virknes nosaukums = (virkne) form_data.get ("nosaukums"); 

Tagad saliksim to visu vienkāršā programmā. Šeit ir Java lietojumprogramma, kuru mēs varam izmantot, lai apstrādātu formu “Sveiki tur” (labdien.java):

importēt java.util. *; importēt java.io. *; class hello {public static void main (String args []) {// // Šeit ir minimālistiska CGI programma, kas izmanto cgi_lib // // // Izdrukājiet nepieciešamo CGI galveni. // System.out.println (cgi_lib.Header ()); Parsējiet veidlapas datus hashtable. // Hashtable form_data = cgi_lib.ReadParse (System.in); // // Izveidojiet atgrieztās HTML lapas augšdaļu // String name = (String) form_data.get ("name"); System.out.println (cgi_lib.HtmlTop ("Sveiki tur" + vārds + "!")); System.out.println ("& lth1 izlīdzināt = centrs & gtSveiki tur" + vārds + "!"); System.out.println (" Šeit ir nosaukuma / vērtības pāri no formas: "); // // Izdrukājiet no pārlūkprogrammas nosūtītos vārdu / vērtību pārus. // System.out.println (cgi_lib.Variables (form_data)); // // Izdrukājiet vides mainīgos, kas nosūtīti no Unix skripta. // System.out.println ("Šeit ir CGI vides mainīgie / vērtību pāri" + ", kas nodoti no UNIX skripta:") ; System.out.println (cgi_lib.Environment ()); // // Izveidojiet atgrieztās HTML lapas apakšdaļu, lai to pilnībā aizvērtu. // System.out.println (cgi_lib.HtmlBot ());}} 

Secinājums

Ar šo ievadu Java CGI programmēšanā jums vajadzētu būt ceļā uz pilnīgi jaunu veidu, kā programmēt tīmekļa lietojumprogrammu servera pusi. Paturiet prātā, ka CGI protokols nodrošina tikai vienu saziņas veidu starp klienta pārlūku un tīmekļa serveri. World Wide Web Consortium finierzāģis (skatiet sadaļu Resursi zemāk) un citi, piemēram, Sun's Jeeves, nāk klajā ar labākiem risinājumiem, kas ietver Java servletu rakstīšanu, kurus varat pakārt pie sava tīmekļa servera. Bet tā ir citas dienas tēma. Ir jautri!

Pats Durante ir vecākais programmatūras inženieris TASC, Inc., Reading, MA. TASC ir 00 miljonu lietišķo informācijas tehnoloģiju uzņēmums, kas specializējas modernu informācijas sistēmu un pakalpojumu izstrādē un integrācijā. Pat ir četrus gadus izstrādājis objektorientētas lietojumprogrammas. Viņš ir TASC Object Oriented Special Interest Group vadītājs un TASC Java Interešu grupas līdzdibinātājs. Pāta vietnes adrese ir: //members.aol.com/durante.

Uzziniet vairāk par šo tēmu

  • Informācija par kopējo vārtejas saskarni (CGI) atrodama vietnē:

    //hoohoo.ncsa.uiuc.edu/cgi

  • Globālā tīmekļa konsorcija finierzāģis ir aprakstīts:

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

  • Lai uzzinātu vairāk par Sun's Jeeves, skatiet:

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

Šo stāstu “CGI programmu rakstīšana Java valodā” sākotnēji publicēja JavaWorld.

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