Programmēšana

Kas ir Java servleti? Pieprasīt Java tīmekļa lietojumprogrammu apstrādi

Pieprasījumu apstrāde ir Java tīmekļa lietojumprogrammu izstrādes maize un sviests. Lai atbildētu uz tīkla pieprasījumiem, Java tīmekļa lietojumprogrammai vispirms jānosaka, kurš kods atbildēs uz pieprasījuma URL, pēc tam atbilde jāsniedz. Katrai tehnoloģiju kaudzei ir veids, kā paveikt pieprasījuma un atbildes apstrādi. Java valodā mēs izmantojam serveles (un Java Servlet API) šim nolūkam. Padomājiet par servletu kā par mazu serveri, kura uzdevums ir pieņemt pieprasījumus un sniegt atbildes.

URL pret galapunktu

Kā interneta lietotājs jūs pārlūkprogrammā esat pazīstams ar vietrāžiem URL kā vietnes adresi. Kā izstrādātājs jūs varētu zināt arī URL kā tīmekļa pakalpojumu galapunktus. A URL (vienotu resursu meklētājs) ir standarta veids, kā aprakstīt un atrast interneta resursus, izmantojot tekstu. Termiņš galapunkts attiecas uz vietrādi URL, kas apzīmē tīmekļa pakalpojumu. Noteikumi galapunkts un URL bieži lieto savstarpēji, lai gan tie attiecas uz dažādiem lietošanas domēniem.

Programmatūra kā slāņi

Kā es paskaidroju ievadā Java Runtime Environment, programmatūru varam skatīt kā slāņu sēriju. Katram programmatūras sistēmas slānim ir noteiktas iespējas, kas nepieciešamas virs tā esošajiem slāņiem. Piemēram, aparatūras slānis atrodas zem programmaparatūras slāņa, atbalstot tā funkcionalitāti. Tāpat operētājsistēmas darbināšanai ir nepieciešams programmaparatūras slānis (BIOS datorā vai EFI Mac datorā). 1. attēlā šīs trīs sastāvdaļas parādītas slāņainā diagrammā.

Metjū Taisons

Jūs varētu arī apskatīt programmatūras sistēmu kā virkni konteineri, kur apakšējie slāņi darbojas kā konteineri augstākajiem. Katrs slānis darbojas kā a kontekstā nākamā funkcionalitātes līmeņa palaišanai: aparatūra satur programmaparatūru un programmaparatūra satur operētājsistēmu.

Servera puses Java

A servera puses Java lietojumprogramma ir viena no plašajām lietojumprogrammu klasēm, kas kalpo kā tīkla galapunkti, saņemot HTTP pieprasījumus no norādītā URL un nosūtot atpakaļ datus apmaiņas formātā, piemēram, HMTL vai JSON. Servera puses Java sastāv gan no standartizētiem Java serveriem, gan tehnoloģijām mijiedarbībai ar šiem serveriem. Java Servlet API ir standarts, ko izmanto, lai mijiedarbotos ar Java serveri.

Java serveri un JVM

Java balstītās sistēmās operētājsistēma (OS) satur JVM, kas nodrošina konsekventu vidi Java lietojumprogrammu darbināšanai. Java serveris atrodas virs JVM. Tāpat kā JVM ir starpnieks starp OS un jūsu Java lietojumprogrammu, Java serveris nodrošina konsekventu, racionalizētu piekļuvi operētājsistēmas tīkla un apstrādes iespējām. Servera iekšpusē darbojas Java lietojumprogramma, izmantojot Java Servlet API, lai piekļūtu servera iespējām.

2. attēlā parādīta programmatūras kaudze servera puses Java.

Metjū Taisons

Java servlet specifikācija

Java servlet specifikācija nodrošina Java servera un saistīto komponentu pamatā esošo definīciju. Tas nosaka, kā serveris sūtīs pieprasījumus un atbildes tīkla mijiedarbības laikā, izmantojot HTTP. Visiem Java serveriem jābūt saderīgiem ar Java servlet specifikāciju. Lielākā daļa Java serveru mūsdienās ir saderīgi ar Servlet 4.0.

Servlet 4.0

Katra Java servleta specifikācijas versija nodrošina jaunas funkcijas. Serversīklietotne 4.0 ietver HTTP / 2 protokola un tā servera virzīšanas mehānisma atbalstu. Server push ļauj serverim iepriekš ielādēt tīmekļa vietnei nepieciešamos resursus, nevis gaidīt noteiktu pieprasījumu. Servlet 4.0 spec ietver arī iespēju atklāt URL kartējumus izpildes laikā, kas ir pazīstama kā izpildlaika atklāšana.

Eclipse Enterprise Java

Serversīklietne 4.0 ir daļa no atvērtā pirmkoda EE4J (Eclipse Enterprise for Java) iniciatīvas, kas ietver ierosināto JCP aizstājēju.

Lai praktiski saprastu, kā darbojas Servleta specifikācija, apsveriet rakstu, kuru pašlaik lasāt. Kaut kur JavaWorld infrastruktūras iekšienē šis raksts tika formatēts un iesniegts publicēšanai. Tam tika piešķirts URL, tas tika virzīts caur tīklu un nonāca serverī. Serveris savienoja artefaktu (rakstu) ar URL un noteica, ka, saņemot GET pieprasījumu šim URL, tas šo rakstu kalpos kā HTML.

Veidojot Java tīmekļa lietojumprogrammu, tiek veidota programmatūra, kas darbojas Java serverī. Lietojumprogramma izmanto servera konteksta nodrošinātās iespējas, un viena no šīm iespējām ir Servlet API. Šī iemesla dēļ Java serveri, kas ievieš Servleta specifikāciju, dažreiz sauc par a servletu trauks.

Lai izveidotu servletu, jūs ievietojat Servlet saskarni un izvietojiet to servleta konteinerā. 3. attēlā parādīts, kā jūsu lietojumprogramma paļaujas uz servletīklu.

Metjū Taisons

Servletu rakstīšana ar Tomcat

Tagad, kad esat ieguvis konceptuālu pārskatu, ķeramies pie Java servleta rakstīšanas.

Pirmā lieta, kas jums būs nepieciešama, ir servleta konteiners, citādi saukts par Java lietojumprogrammu serveri. Tomcat un Jetty ir divi no populārākajiem servletu konteineriem. Mēs izmantosim Tomcat, jo tas ir viens no ilgstošākajiem Java lietojumprogrammu serveriem. Tomcat ir bezmaksas, un tajā ir minimāli zvani un svilpes, kas mūsu piemēram padarīs lietas vienkāršas. (Starp citu, "Zvani un svilpes" ir tehnisks termins.)

Lejupielādējiet un instalējiet Tomcat

Ja jums vēl nav Tomcat, vispirms atveriet Tomcat lejupielādes lapu. Tur jūs varat izvēlēties vai nu Windows instalēšanas programmu, vai vispiemērotāko ZIP lejupielādi savam datoram (piemēram, es lejupielādēju 64 bitu Windows zip).

Tas ir viss: jūs tikko pievienojāt Java servera slāni savai operētājsistēmai!

Pārbaudiet, vai darbojas Tomcat

Pirms došanās tālāk, pārliecinieties, ka jūs varat palaist Tomcat. Vai nu palaidiet Windows pakalpojumu, vai palaidiet startup.sh vai startup.bat failu no komandrindas.

Ja tagad atverat tīmekļa pārlūku un dodaties uz vietējais saimnieks: 8080, jūs vajadzētu sagaidīt šādā ekrānā:

Metjū Taisons

Ja rodas problēmas ar Tomcat palaišanu, problēmu novēršanai varat apmeklēt Tomcat dokumentāciju.

Palaidiet Tomcat servleta piemēru

Tagad apskatīsim Java servletu. Ērti Tomcat ir iekļāvis dažus vienkāršus piemērus.

Noklikšķiniet uz Piemēri saite, kuru redzat Izstrādātāja ātrais sākums sadaļā Tomcat sveiciena lapa. Kad esat tur, noklikšķiniet uz Servletu piemēri saite.

Tagad jūs varat redzēt vienkāršu Serversīklietotni darbībā, noklikšķinot uz Sveika pasaule paraugs Izpildīt saite. Tas novedīs jūsu pārlūkprogrammu uz // localhost: 8080 / piemēri / servlets / servlet / HelloWorldExample URL, kur redzēsiet daudzgadīgo programmētāju sveicienus.

Serversīklietotnes avota koda skatīšana

Pārlūkprogrammā noklikšķiniet uz bultiņas Atpakaļ, pēc tam noklikšķiniet uz avots saite lietotnei HelloWorld. Avots ir parādīts 1. sarakstā.

Saraksts 1. Avota kods HelloWorld piemēram

 importēt java.io. *; importēt javax.servlet. *; importēt javax.servlet.http. *; publiskā klase HelloWorld paplašina HttpServlet {public void doGet (HttpServletRequest pieprasījums, HttpServletResponse atbilde) izmet IOException, ServletException {response.setContentType ("text / html"); PrintWriter out = response.getWriter (); out.println (""); out.println (""); out.println ("Sveika pasaule!"); out.println (""); out.println (""); out.println (""); out.println (""); out.println (""); }} 

Šajā ļoti vienkāršajā kodu sarakstā ir Java servleta pamatkomponenti. Apsvērsim to soli pa solim.

Pirmā rinda izsauc standarta Java importēšanu. Pēc tam programma nosaka jaunu klasi, kas paplašina HttpServlet klasē. Tas ir kritiski, jo servleti jābūt īstenot Servlet interfeisu, lai palaistu servleta konteinerā.

Tālāk Sveika pasaule klase nosaka metodi, ko sauc doGet (). Šī ir standarta metode servletiem: tā liek serverim maršrutu HTTP IEGŪT pieprasījumi šai metodei. Citas HTTP metodes, piemēram, POST, tiek apstrādātas ar līdzīgi nosauktajām metodēm, piemēram, doPost.

Ievērojiet, ka tas doGet () ir divi parametri: (HttpServletRequest pieprasījums, HttpServletResponse atbilde). Šie divi objekti atspoguļo pieprasījumu un atbildi. Tie nodrošina piekļuvi visam, kas jūsu kodam nepieciešams, lai izskatītu pieprasījumu un sniegtu atbildi. Iekš HelloWorld.doGet servleta metode, piemēram, atbildi objekts tiek izmantots, lai informētu serveri, kāda satura tipa galveni izdot. Šajā gadījumā tā ir response.setContentType ("text / html");.

Visbeidzot, programma no atbildes iegūst Java Writer objektu response.getWriter (). The rakstnieks pēc tam tiek izmantots, lai izveidotu vienkāršu HTML atbildi, lai atgrieztos pārlūkprogrammā.

URL kartēšana

1. saraksta struktūra un koda plūsma ir diezgan intuitīva, taču ir acīmredzama izlaidība. Kā serveris zina saistīt // localhost: 8080 / piemēri / servlets / servlet / HelloWorldExample URL uz HelloWorld.doGet metodi?

Atbildi uz šo noslēpumu atradīsit lietojumprogrammas metadatos. Katrā Java tīmekļa lietojumprogrammā ir iekļauts standarta metadatu fails ar nosaukumu web.xml, kas serverim stāsta, kā URL saistīt ar servletiem.

Kas ir metadati?

Meta dati ir jebkura informācija, kas tiek izmantota programmatūras darbības kontrolei ārpus pašas programmatūras.

Tomcat lietotņu piemēros web.xml ir atrodams \ apache-tomcat-9.0.11 \ webapps \ piemēri \ WEB-INF \ web.xml. The \ WEB-INF \ web.xml ir servletu metadatu faila standarta atrašanās vieta. Atverot šo failu, redzēsiet, kā serveris ir konfigurēts.

Saīsināts web.xml 2. sarakstā ir tikai tā informācija, kas mums nepieciešama diskusijai.

Saraksts 2. Avota kods Tomcat HelloWorld piemēram

     HelloWorldExample HelloWorldExample HelloWorldExample / servlets / servlet / HelloWorldExample 

2. sarakstā parādīta tipiska XML faila galvene, kas atsaucas uz Java tīmekļa lietojumprogrammas deskriptora shēmu. Pēc tam seko divi ieraksti: un.

Zvans uz piešķir loģisku nosaukumu, HelloWorldPiemērs, uz HelloWorldPiemērs klases, izmantojot un laukus.

Zvans uz piešķir šo loģisko nosaukumu vērtību, tādējādi saistot kodu ar URL.

Ņemiet vērā, ka lauks atbalsta aizstājējkartes, lai apstrādātu dažādus elastīgus URL kartējumus.

Citas servletu iespējas

Papildus URL kartēšanai servleti nodrošina papildu iespējas filtrēšanai un autentifikācijai. Filtri tiek izmantoti pieprasījumu apstrādei, un autentifikācija tiek izmantots, lai piešķirtu URL lietotājiem vienkāršus lietotājus un lomas. JavaServer Pages (JSP) specifikācija nodrošina atbalstu HTML ģenerēšanai daudz jaudīgākā veidā.

Secinājums

Šis raksts ir konceptuāls Java servletu pārskats, tostarp URL pieprasījumu un atbilžu apstrāde Java serverī. Izpratne par šiem servera puses Java pamatelementiem palīdzēs integrēt uzlabotas koncepcijas, piemēram, servera push un URL kartējumu atklāšana, kas ir jauni servlet 4.0.

Šo stāstu "Kas ir Java servleti? Pieprasījumu apstrāde Java tīmekļa lietojumprogrammām" sākotnēji publicēja JavaWorld.

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