Programavimas

Kas yra „Java“ servletai? Prašyti tvarkyti „Java“ žiniatinklio programas

Užklausų tvarkymas yra „Java“ žiniatinklio programų kūrimo duona ir sviestas. Kad galėtų atsakyti į tinklo užklausas, „Java“ žiniatinklio programa pirmiausia turi nustatyti, koks kodas atsakys į užklausos URL, tada paskirti atsakymą. Kiekviena technologijos paketas turi būdą, kaip apdoroti užklausos ir atsakymo tvarkymą. „Java“ mes naudojame servletai (ir „Java Servlet“ API) šiam tikslui. Pagalvokite apie servletą kaip mažą serverį, kurio užduotis yra priimti užklausas ir pateikti atsakymus.

URL ir pabaigos taškas

Kaip interneto vartotojas, jūs esate susipažinę su URL, kaip savo naršyklės svetainės adresu. Kaip kūrėjas taip pat galite žinoti URL kaip žiniatinklio paslaugų galinius taškus. A URL (vienodas išteklių lokatorius) yra standartinis būdas aprašyti ir surasti interneto išteklius naudojant tekstą. Terminas galutinis taškas nurodo URL, žymintį žiniatinklio paslaugą. Sąlygos galutinis taškas ir URL dažnai naudojami pakaitomis, nors jie nurodo skirtingas naudojimo sritis.

Programinė įranga kaip sluoksniai

Kaip paaiškinau savo „Java Runtime Environment“ įžangoje, programinę įrangą galime žiūrėti kaip į sluoksnių seriją. Kiekvienas programinės įrangos sistemos sluoksnis turi tam tikras galimybes, kurių reikalauja virš jo esantys sluoksniai. Pavyzdžiui, aparatinės įrangos sluoksnis yra žemiau programinės įrangos sluoksnio, palaikydamas jo funkcionalumą. Taip pat, norint paleisti operacinę sistemą, reikalingas programinės aparatinės įrangos sluoksnis (BIOS kompiuteryje arba EFI „Mac“). 1 paveiksle šie trys komponentai parodomi sluoksniuotoje diagramoje.

Matthew Tysonas

Jūs taip pat galite pažvelgti į programinės įrangos sistemą kaip į seriją konteineriai, kur apatiniai sluoksniai veikia kaip aukštesnių konteineriai. Kiekvienas sluoksnis veikia kaip a kontekste kito lygio funkcijoms vykdyti: aparatinėje įrangoje yra programinė aparatinė įranga, o programinėje įrangoje yra operacinė sistema.

Serverio „Java“

A serverio „Java“ programa yra viena iš plačios klasės programų, kurios tarnauja kaip tinklo galiniai taškai, gaunančios HTTP užklausas iš nurodyto URL ir siunčiančios atgal duomenis mainų formatu, pvz., HMTL ar JSON. Serverio pusėje esančią „Java“ sudaro tiek standartizuoti „Java“ serveriai, tiek technologijos, skirtos sąveikai su tais serveriais. „Java Servlet“ API yra standartas, naudojamas sąveikai su „Java“ serveriu.

„Java“ serveriai ir JVM

„Java“ pagrįstose sistemose operacinėje sistemoje (OS) yra JVM, kuris suteikia pastovią aplinką „Java“ programoms paleisti. „Java“ serveris sėdi ant JVM. Kaip JVM yra tarpininkas tarp OS ir jūsų „Java“ programos, „Java“ serveris suteikia nuoseklią, supaprastintą prieigą prie operacinės sistemos tinklo ir apdorojimo galimybių. „Java“ programa veikia serveryje, naudodama „Java Servlet“ API, kad pasiektų serverio galimybes.

2 paveiksle pavaizduota serverio „Java“ programinės įrangos krūva.

Matthew Tysonas

„Java Servlet“ specifikacija

„Java Servlet“ specifikacijoje pateikiama pagrindinė „Java“ serverio ir susijusių komponentų apibrėžtis. Jis apibrėžia, kaip serveris siunčia užklausas ir atsakymus per tinklo sąveiką per HTTP. Visi „Java“ serveriai turi būti suderinami su „Java Servlet“ specifikacija. Dauguma „Java“ serverių šiandien yra suderinami su „Servlet 4.0“.

„Servlet 4.0“

Kiekviena „Java Servlet“ specifikacijos versija suteikia naujų funkcijų. „Servlet 4.0“ apima HTTP / 2 protokolo ir serverio stūmimo mechanizmo palaikymą. „Server push“ suteikia serveriui galimybę iš anksto įkelti tinklalapiui reikalingus išteklius, o ne laukti konkrečios užklausos. „Servlet 4.0“ specifikacijoje taip pat yra galimybė rasti URL susiejimus vykdymo metu, tai funkcija, žinoma kaip vykdymo laiko atradimas.

„Eclipse Enterprise“, skirta „Java“

„Servlet 4.0“ yra atvirojo kodo EE4J („Eclipse Enterprise for Java“) iniciatyvos dalis, į kurią įeina siūlomas JCP pakeitimas.

Norėdami praktiškai suprasti, kaip veikia „Servlet“ specifikacija, apsvarstykite straipsnį, kurį šiuo metu skaitote. Kažkur „JavaWorld“ infrastruktūros viduryje šis straipsnis buvo suformatuotas ir pateiktas paskelbti. Jam buvo priskirtas URL, nukreiptas per tinklą ir jis pateko į serverį. Serveris sujungė artefaktą (straipsnį) su URL ir nustatė, kad gavus GET užklausą dėl to URL, jis pateiks šį straipsnį kaip HTML.

Kai kuriate „Java“ žiniatinklio programą, kuriate programinę įrangą, kuri veikia „Java“ serveryje. Programa naudoja serverio konteksto teikiamas galimybes, o viena iš šių galimybių yra „Servlet“ API. Dėl šios priežasties „Java“ serveris, įgyvendinantis „Servlet“ specifikaciją, kartais vadinamas a servletų indas.

Norėdami sukurti servletą, turite įdiegti Servletas sąsają ir įdėkite ją į servleto talpyklą. 3 paveiksle parodyta, kaip jūsų programa priklauso nuo servleto.

Matthew Tysonas

Servletų rašymas su Tomcat

Dabar, kai turite konceptualią apžvalgą, pradėkime nuo „Java“ servleto rašymo.

Pirmiausia jums reikės servleto talpyklos, kitaip vadinamos „Java“ programų serveriu. „Tomcat“ ir „Jetty“ yra du populiariausi servetėlių konteineriai. Mes naudosime „Tomcat“, nes tai yra vienas iš seniausių „Java“ programų serverių. „Tomcat“ yra nemokama, jame yra mažai varpų ir švilpukų, todėl mūsų pavyzdys bus paprastas. („Varpai ir švilpukai“, beje, yra techninis terminas.)

Atsisiųskite ir įdiekite „Tomcat“

Jei dar neturite „Tomcat“, pirmiausia atidarykite „Tomcat“ atsisiuntimo puslapį. Čia galite pasirinkti arba „Windows“ diegimo programą, arba tinkamiausią ZIP atsisiuntimą savo kompiuteriui (pavyzdžiui, atsisiunčiu 64 bitų „Windows“ ZIP failą).

Viskas: ką tik pridėjote „Java“ serverio sluoksnį prie savo operacinės sistemos!

Patikrinkite, ar „Tomcat“ veikia

Prieš eidami toliau įsitikinkite, kad galite paleisti „Tomcat“. Paleiskite „Windows“ paslaugą arba paleiskite paleidimas.sh arba startup.bat failą iš komandinės eilutės.

Jei dabar atidarote interneto naršyklę ir einate į vietinis šeimininkas: 8080, jus turėtų pasveikinti šis ekranas:

Matthew Tysonas

Jei susiduriate su problemomis vykdant „Tomcat“, galite apsilankyti „Tomcat“ dokumentacijoje, kad gautumėte trikčių.

Paleiskite „Tomcat“ servleto pavyzdį

Dabar pažvelkime į „Java“ servletą. Patogu, kad „Tomcat“ pateikė keletą paprastų pavyzdžių.

Spustelėkite Pavyzdžiai nuorodą, kurią matote Kūrėjo greita pradžia skyriuje „Tomcat“ sveikinimo puslapyje. Kai būsite ten, spustelėkite Servletų pavyzdžiai nuoroda.

Dabar galite pamatyti, kaip veikia paprasta „Servlet“, spustelėdami Labas pasauli pavyzdžiai Vykdyti nuoroda. Tai atves jūsų naršyklę į // localhost: 8080 / pavyzdžiai / servletai / servletas / HelloWorldExample URL, kur pamatysite daugiamečio programuotojo pasveikinimą.

Servleto šaltinio kodo peržiūra

Naršyklėje spustelėkite rodyklę atgal, tada spustelėkite šaltinis „HelloWorld“ programos nuoroda. Šaltinis rodomas 1 sąraše.

Sąrašas 1. „HelloWorld“ pavyzdžio šaltinio kodas

 importuoti java.io. *; importuoti javax.servlet. *; importuoti javax.servlet.http. *; viešoji klasė „HelloWorld“ pratęsia „HttpServlet“ {public void doGet („HttpServletRequest“ užklausa, „HttpServletResponse“ atsakymas) išmeta „IOException“, „ServletException“ {response.setContentType ("text / html"); „PrintWriter out“ = atsakymas.getWriter (); out.println (""); out.println (""); out.println („Labas pasaulis!“); out.println (""); out.println (""); out.println (""); out.println (""); out.println (""); }} 

Šiame labai paprastame kodų sąraše yra pagrindiniai „Java“ servleto komponentai. Apsvarstykime tai žingsnis po žingsnio.

Pirmoje eilutėje iškviečiamas standartinis „Java“ importas. Po to programa apibrėžia naują klasę, kuri pratęsia „HttpServlet“ klasė. Tai labai svarbu, nes servletai turi įgyvendinti Servletas sąsają, kad galėtumėte veikti servleto talpykloje.

Kitas, Labas pasauli klasė apibrėžia vadinamąjį metodą „doGet“ (). Tai yra standartinis servletų metodas: jis nurodo serveriui maršrutą HTTP GAUTI šio metodo užklausos. Kiti HTTP metodai, pvz., POST, tvarkomi panašiai pavadintais metodais, pvz „doPost“.

Atkreipkite dėmesį, kad doGet () turi du parametrus: („HttpServletRequest“ užklausa, „HttpServletResponse“ atsakymas). Šie du objektai atspindi prašymą ir atsakymą. Jie suteikia prieigą prie visko, ko jūsų kodui reikia norint patenkinti užklausą ir pateikti atsakymą. Viduje konors HelloWorld.doGet servleto metodas, pavyzdžiui, atsakymą objektas naudojamas informuoti serverį, kokio turinio tipo antraštę išleisti. Šiuo atveju taip response.setContentType ("text / html");.

Galiausiai programa iš atsakymo gauna „Java Writer“ objektą response.getWriter (). Rašytojas tada naudojamas norint sukurti paprastą HTML atsakymą, kad grįžtumėte į naršyklę.

URL susiejimas

1 sąrašo struktūra ir kodo srautas yra gana intuityvus, tačiau yra akivaizdus praleidimas. Kaip serveris žino susieti // localhost: 8080 / pavyzdžiai / servletai / servletas / HelloWorldExample URL į HelloWorld.doGet metodas?

Atsakymą į šią paslaptį rasite programos metaduomenyse. Kiekvienoje „Java“ žiniatinklio programoje yra standartinis metaduomenų failas, vadinamas web.xml, kuris nurodo serveriui, kaip susieti URL su servletais.

Kas yra metaduomenys?

Meta duomenys yra bet kokia informacija, naudojama programinės įrangos veikimui kontroliuoti iš pačios programinės įrangos ribų.

„Tomcat“ programų pavyzdžiuose web.xml yra \ apache-tomcat-9.0.11 \ webapps \ pavyzdžiai \ WEB-INF \ web.xml. \ WEB-INF \ web.xml yra standartinė servletų metaduomenų failo vieta. Jei atidarysite šį failą, pamatysite, kaip sukonfigūruotas serveris.

Sutrumpinta web.xml 2 sąraše yra tik mūsų diskusijoms reikalinga informacija.

2. sąrašas „Tomcat HelloWorld“ pavyzdžio šaltinio kodas

     HelloWorldExample HelloWorldExample HelloWorldExample / servletai / servletas / HelloWorldExample 

2 sąraše rodoma tipinė XML failo antraštė, nurodanti „Java“ žiniatinklio programų aprašo schemą. Po to pateikiami du įrašai: ir.

Kvietimas priskiria loginį pavadinimą, HelloWorldPavyzdys, į HelloWorldPavyzdys klasės, per ir laukus.

Kvietimas priskiria tą loginį pavadinimą reikšmę, tokiu būdu susiejant kodą su URL.

Atkreipkite dėmesį, kad laukas palaiko pakaitines korteles, kad būtų galima tvarkyti įvairius lanksčius URL susiejimus.

Kitos servleto galimybės

Be URL susiejimo, servletai suteikia papildomų filtravimo ir autentifikavimo galimybių. Filtrai naudojami prašymams apdoroti ir autentifikavimas naudojamas paprastiems vartotojams ir vaidmenims priskirti URL šablonams. „JavaServer Pages“ (JSP) specifikacija teikia paramą kuriant HTML žymiai galingesniu būdu.

Išvada

Šis straipsnis buvo koncepcinė „Java“ servletų apžvalga, įskaitant URL užklausų ir atsakymų tvarkymą „Java“ serveryje. Suprasdami šiuos pagrindinius serverio „Java“ elementus, galėsite integruoti pažangesnes sąvokas, tokias kaip serverio stumdymas ir URL susiejimų aptikimas vykdymo metu, kurios yra naujos „Servlet 4.0“.

Šią istoriją „Kas yra„ Java “servletai?„ Java “žiniatinklio programų užklausų tvarkymas“ iš pradžių paskelbė „JavaWorld“.