Ravnanje z zahtevami je kruh in razvoj razvoja spletnih aplikacij Java. Da bi se odzval na zahteve iz omrežja, mora spletna aplikacija Java najprej določiti, katera koda se bo odzvala na URL zahteve, nato pa označiti odgovor. Vsak tehnološki sklad ima način za izvedbo obravnave zahteve-odziva. V Javi uporabljamo servleti (in API Java Servlet) v ta namen. Servlet si predstavljajte kot majhen strežnik, katerega naloga je sprejemati zahteve in izdajati odgovore.
URL v primerjavi s končno točko
Kot uporabnik interneta poznate URL-je kot naslov spletnega mesta v brskalniku. Kot razvijalec morda tudi URL-je poznate kot končne točke spletnih storitev. A URL (enotni lokator virov) je standardni način za opis in iskanje internetnih virov z uporabo besedila. Izraz končna točka se nanaša na URL, ki označuje spletno storitev. Pogoji končna točka in URL se pogosto uporabljajo medsebojno zamenljivo, čeprav se nanašajo na različna področja uporabe.
Programska oprema kot plasti
Kot sem pojasnil v uvodu v Java Runtime Environment, lahko na programsko opremo gledamo kot na vrsto slojev. Vsak sloj v programskem sistemu ima določene zmožnosti, ki jih zahtevajo sloji nad njim. Kot primer je sloj strojne opreme pod slojem vdelane programske opreme in podpira njegovo funkcionalnost. Prav tako je za zagon operacijskega sistema potrebna plast vdelane programske opreme (BIOS v računalniku ali EFI v Macu). Slika 1 prikazuje te tri komponente v večplastnem diagramu.
Matthew TysonNa sistemski program lahko gledate tudi kot na vrsto posode, kjer spodnje plasti delujejo kot posode za višje. Vsaka plast deluje kot a kontekstu za zagon naslednje stopnje funkcionalnosti: strojna oprema vsebuje vdelano programsko opremo, vdelana programska oprema pa operacijski sistem.
Java na strežniški strani
A strežniška Java aplikacija je ena izmed širokega razreda aplikacij, ki služijo kot omrežne končne točke, ki prejemajo zahteve HTTP z določenega URL-ja in pošiljajo podatke nazaj v obliki izmenjave, kot sta HMTL ali JSON. Strežniška Java je sestavljena iz standardiziranih Java strežnikov in tehnologij za interakcijo s temi strežniki. API Java Servlet je standard, ki se uporablja za interakcijo s strežnikom Java.
Java strežniki in JVM
V sistemih, ki temeljijo na Javi, operacijski sistem (OS) vsebuje JVM, ki zagotavlja dosledno okolje za izvajanje aplikacij Java. Strežnik Java je nameščen na vrhu JVM. Tako kot je JVM posrednik med operacijskim sistemom in vašo aplikacijo Java, tudi Java strežnik zagotavlja dosleden, racionaliziran dostop do omrežnih in procesorskih zmogljivosti operacijskega sistema. Aplikacija Java se izvaja znotraj strežnika in za dostop do zmogljivosti strežnika uporablja API Java Servlet.
Slika 2 prikazuje sklad programske opreme za strežniško Javo.
Matthew TysonSpecifikacija Java Servlet
Specifikacija Java Servlet ponuja osnovno definicijo za strežnik Java in povezane komponente. Določa, kako bo strežnik pošiljal zahteve in odgovore med omrežnimi interakcijami prek HTTP. Vsi strežniki Java morajo biti združljivi s specifikacijo Java Servlet. Večina strežnikov Java je danes združljivih s programom Servlet 4.0.
Servlet 4.0
Vsaka različica specifikacije Java Servlet prinaša nove funkcije. Servlet 4.0 vključuje podporo za protokol HTTP / 2 in mehanizem za potiskanje strežnika. Potiskanje strežnika omogoča strežniku, da vnaprej naloži sredstva, ki jih zahteva spletna stran, namesto da čaka na določeno zahtevo. Specifikacija Servlet 4.0 vključuje tudi možnost odkrivanja preslikav URL-jev med izvajanjem, funkcijo, znano kot odkritje med izvajanjem.
Eclipse Enterprise za Javo
Servlet 4.0 je del odprtokodne pobude EE4J (Eclipse Enterprise for Java), ki vključuje predlagano zamenjavo za JCP.
Za praktično razumevanje delovanja specifikacije Servlet si oglejte članek, ki ga trenutno berete. Ta članek je bil nekje v nedrju infrastrukture JavaWorld oblikovan in odposlan v objavo. Dodeljen mu je bil URL, preusmerjen po omrežju in prispel na strežnik. Strežnik je artefakt (članek) povezal z URL-jem in ugotovil, da bo, ko bo za ta URL prispela zahteva GET, ta članek vrnil kot HTML.
Ko ustvarjate spletno aplikacijo Java, ustvarjate programsko opremo, ki se izvaja znotraj strežnika Java. Aplikacija uporablja pripomočke, ki jih ponuja kontekst strežnika, in eden izmed njih je API strežnika. Zaradi tega se strežnik Java, ki izvaja specifikacijo Servlet, včasih imenuje a posoda za servlet.
Če želite ustvariti strežniški programček, uporabite Servlet
in ga namestite v vsebnik strežniškega programčka. Slika 3 prikazuje, kako se vaša aplikacija opira na strežniški programček.
Pisanje programčkov s programom Tomcat
Zdaj, ko imate konceptualni pregled, se lotimo pisanja Java servleta.
Prva stvar, ki jo boste potrebovali, je vsebnik strežniškega programčka, znan tudi kot strežnik aplikacij Java. Tomcat in Jetty sta dve najbolj priljubljeni posodi za servlete. Tomcat bomo uporabili, ker je eden najdaljših aplikacijskih strežnikov za Javo. Tomcat je brezplačen in vsebuje minimalne zvonce in piščalke, kar bo olajšalo stvari v našem primeru. ("Zvonovi in piščalke" je mimogrede tehnični izraz.)
Prenesite in namestite Tomcat
Če še nimate Tomcata, začnite z odpiranjem strani za prenos Tomcata. Tam lahko izberete namestitveni program za Windows ali najprimernejši prenos ZIP-ja za svoj računalnik (na primer prenašam 64-bitni zip za Windows).
To je to: pravkar ste dodali sloj strežnika Java v svoj operacijski sistem!
Preverite, ali se Tomcat izvaja
Preden nadaljujemo, poskrbimo, da boste lahko zagnali Tomcat. Zaženite storitev Windows ali zaženite startup.sh
ali startup.bat
iz ukazne vrstice.
Če zdaj odprete spletni brskalnik in pojdite na localhost: 8080
, pozdravil bi vas naslednji zaslon:
Če naletite na kakršne koli težave pri zagonu programa Tomcat, lahko za odpravljanje težav obiščete dokumentacijo podjetja Tomcat.
Zaženite primer strežnika Tomcat
Zdaj pa si oglejmo programček Java. Udobno je Tomcat vključil nekaj preprostih primerov.
Kliknite na Primeri povezava, ki jo vidite v Hitri začetek za razvijalce odsek strani dobrodošlice Tomcat. Ko ste tam, kliknite Primeri strežnikov povezava.
Zdaj lahko vidite preprost Servlet v akciji s klikom na Pozdravljen, svet
vzorci Izvedite
povezava. To bo vaš brskalnik pripeljalo do // localhost: 8080 / examples / servlets / servlet / HelloWorldExample URL, kjer boste videli pozdrav trajnega programerja.
Ogled izvorne kode strežniškega programčka
Kliknite puščico Nazaj v brskalniku in nato vir povezava za aplikacijo HelloWorld. Vir je prikazan v seznamu 1.
Seznam 1. Izvorna koda za primer HelloWorld
uvoz java.io. *; uvoz javax.servlet. *; uvoz javax.servlet.http. *; javni razred HelloWorld razširja HttpServlet {public void doGet (zahteva HttpServletRequest, HttpServletResponse) vrže IOException, ServletException {response.setContentType ("text / html"); PrintWriter out = response.getWriter (); out.println (""); out.println (""); out.println ("Pozdravljen svet!"); out.println (""); out.println (""); out.println (""); out.println (""); out.println (""); }}
Ta zelo preprost seznam kod vsebuje osnovne komponente Java-strežnika. Razmislimo o korakih.
Prva vrstica pokliče standardni uvoz Java. Po tem program definira nov razred, ki razširja HttpServlet
razred. To je ključnega pomena, ker so servleti mora izvajati Servlet
vmesnik za zagon znotraj vsebnika strežniškega programčka.
Nato, Pozdravljen, svet
razred definira metodo, imenovano doGet ()
. To je standardna metoda za strežniške programčke: strežniku pove, naj ga usmerja HTTP GET
zahteve za to metodo. Druge metode HTTP, na primer POST, obravnavajo podobno imenovane metode, na primer doPost
.
Upoštevajte, da to doGet ()
ima dva parametra: (Zahteva HttpServletRequest, odgovor HttpServletResponse)
. Ta dva predmeta predstavljata zahtevo in odgovor. Omogočajo dostop do vsega, kar vaša koda potrebuje za obravnavo zahteve in izda odgovor. V HelloWorld.doGet
metoda strežnika, na primer metoda odziv
objekt se uporablja za obveščanje strežnika, katero vrsto vsebine bo izdal. V tem primeru je response.setContentType ("besedilo / html");
.
Na koncu program iz odgovora pridobi objekt Java Writer response.getWriter ()
. The Pisatelj
se nato uporabi za ustvarjanje preprostega odziva HTML za vrnitev v brskalnik.
Preslikava URL-jev
Struktura in tok kode v seznamu 1 sta dokaj intuitivna, vendar obstaja očitna opustitev. Kako strežnik ve, da mora povezati datoteko // localhost: 8080 / examples / servlets / servlet / HelloWorldExample
URL do HelloWorld.doGet
metoda?
Odgovor na to skrivnost boste našli v metapodatkih aplikacije. Vsaka spletna aplikacija Java vključuje standardno metapodatkovno datoteko, imenovano web.xml
, ki strežniku pove, kako preslikati URL-je v servlete.
Kaj so metapodatki?
Metapodatki so vse informacije, ki se uporabljajo za nadzor delovanja programske opreme zunaj same programske opreme.
V primerih Tomcat aplikacij je web.xml
najdete na \ apache-tomcat-9.0.11 \ webapps \ examples \ WEB-INF \ web.xml
. The \ WEB-INF \ web.xml
je običajno mesto metapodatkovne datoteke za programčke. Če odprete to datoteko, boste videli, kako je konfiguriran strežnik.
Okrajšano web.xml
na seznamu 2 vsebuje le informacije, ki jih potrebujemo za našo razpravo.
Seznam 2. Izvorna koda za primer Tomcat HelloWorld
HelloWorldExample HelloWorldExample HelloWorldExample / servleti / servlet / HelloWorldExample
Seznam 2 prikazuje tipično glavo datoteke XML, ki se nanaša na shemo za deskriptor spletne aplikacije Java. Temu sledita dva vnosa: in
.
Klic k dodeli logično ime,
HelloWorldExample
, do HelloWorldExample
razreda prek polj in.
Klic k dodeli to logično ime datoteki
vrednost, s čimer se koda poveže z URL-jem.
Upoštevajte, da field podpira nadomestne znake za obdelavo različnih prilagodljivih preslikav URL-jev.
Druge zmožnosti strežniškega programčka
Poleg preslikave URL-jev nudijo programčke dodatne možnosti za filtriranje in preverjanje pristnosti. Filtri se uporabljajo za obdelavo zahtev in preverjanje pristnosti se uporablja za dodelitev preprostih uporabnikov in vlog vzorcem URL-jev. Specifikacija JavaServer Pages (JSP) nudi podporo za generiranje HTML-ja na veliko močnejši način.
Zaključek
Ta članek je konceptualni pregled Java programčkov, vključno z obdelavo zahtev za URL in odzivi v strežniku Java. Razumevanje teh osnovnih elementov Java na strani strežnika vam bo pomagalo vključiti naprednejše koncepte, kot sta potiskanje strežnika in odkrivanje izvajalnega okolja za preslikave URL-jev, ki so novi v Servlet 4.0.
To zgodbo "Kaj so Java servleti? Upravljanje zahtev za spletne programe Java" je prvotno objavil JavaWorld.