Programmering

Hva er Java-servlets? Be om håndtering for Java-webapplikasjoner

Behandling håndtering er brød og smør av Java web applikasjonsutvikling. For å svare på forespørsler fra nettverket, må en Java-nettapplikasjon først bestemme hvilken kode som vil svare på forespørsels-URL-en, og deretter slå et svar. Hver teknologibunke har en måte å oppnå håndtering av forespørsel-svar. I Java bruker vi servlets (og Java Servlet API) for dette formålet. Tenk på en servlet som en liten server hvis jobb er å godta forespørsler og gi svar.

URL mot sluttpunkt

Som Internett-bruker er du kjent med URL-er som nettadressen i nettleseren din. Som utvikler kan du også kjenne nettadresser som sluttpunkter for webtjenester. EN URL (uniform resource locator) er en standard måte å beskrive og lokalisere internettressurser på ved hjelp av tekst. Begrepet endepunkt refererer til en URL som betegner en nettjeneste. Vilkårene endepunkt og URL brukes ofte om hverandre, selv om de refererer til forskjellige bruksdomener.

Programvare som lag

Som jeg forklarte i introduksjonen til Java Runtime Environment, kan vi se programvare som en serie lag. Hvert lag i et programvaresystem har visse funksjoner som kreves av lagene over det. Som et eksempel sitter maskinvarelaget under fastvarelaget og støtter dets funksjonalitet. Likeledes er firmwarelaget (BIOS på en PC eller EFI på en Mac) nødvendig for å kjøre operativsystemet. Figur 1 viser disse tre komponentene i et lagdelt diagram.

Matthew Tyson

Du kan også se på et programvaresystem som en serie av containere, hvor de nedre lagene fungerer som beholdere for de høyere. Hvert lag fungerer som en kontekst for å kjøre neste nivå av funksjonalitet: maskinvare inneholder fastvare, og fastvare inneholder operativsystemet.

Server på Java

EN server-Java applikasjonen er en av en bred klasse applikasjoner som fungerer som nettverksendepunkter, mottar HTTP-forespørsler fra en gitt URL og sender tilbake data i et utvekslingsformat som HMTL eller JSON. Server-side Java består av både standardiserte Java-servere og teknologier for interaksjon med disse serverne. Java Servlet API er standarden som brukes til å samhandle med en Java-server.

Java-servere og JVM

I Java-baserte systemer inneholder operativsystemet (JVM) JVM, som gir et jevnt miljø for å kjøre Java-applikasjoner. En Java-server sitter på toppen av JVM. Akkurat som JVM er mellomledd mellom operativsystemet og Java-applikasjonen, gir Java-serveren jevn, strømlinjeformet tilgang til operativsystemets nettverks- og behandlingsmuligheter. En Java-applikasjon kjører inne i serveren, ved hjelp av Java Servlet API for å få tilgang til serverens evner.

Figur 2 viser en programvarestabel for Java-server på siden.

Matthew Tyson

Java Servlet-spesifikasjonen

Java Servlet-spesifikasjonen gir den underliggende definisjonen for en Java-server og relaterte komponenter. Den definerer hvordan serveren vil sende forespørsler og svar under nettverksinteraksjoner over HTTP. Alle Java-servere må være kompatible med Java Servlet-spesifikasjonen. De fleste Java-servere i dag er kompatible med Servlet 4.0.

Servlet 4.0

Hver versjon av Java Servlet-spesifikasjonen gir nye funksjoner. Servlet 4.0 inkluderer støtte for HTTP / 2-protokollen og serverens push-mekanisme. Server push gjør det mulig for en server å forhåndslaste eiendeler som kreves av en webside, i stedet for å vente på en spesifikk forespørsel. Servlet 4.0-spesifikasjonen inneholder også muligheten til å oppdage URL-tilordninger ved kjøretid, en funksjon kjent som kjøretidsoppdagelse.

Eclipse Enterprise for Java

Servlet 4.0 er en del av open source EE4J (Eclipse Enterprise for Java) -initiativet, som inkluderer en foreslått erstatning for JCP.

For en praktisk forståelse av hvordan Servlet-spesifikasjonen fungerer, bør du vurdere artikkelen du leser for øyeblikket. Et eller annet sted i tarmene til JavaWorlds infrastruktur ble denne artikkelen formatert og sendt til publisering. Den ble tildelt en URL, rutet gjennom nettverket og ankom en server. Serveren koblet artefakten (artikkelen) til URL-en og bestemte seg for at når en GET-forespørsel kom til den URL-en, vil den tjene tilbake denne artikkelen som HTML.

Når du oppretter et Java-webapplikasjon, lager du programvare som kjører inne på Java-serveren. Applikasjonen bruker fasilitetene som tilbys av serverkonteksten, og en av disse fasilitetene er Servlet API. Av denne grunn blir en Java-server som implementerer Servlet-spesifikasjonen noen ganger kalt a servletbeholder.

For å opprette en servlet implementerer du Servlet grensesnitt og distribuere det i en servletcontainer. Figur 3 viser hvordan søknaden din er avhengig av servletten.

Matthew Tyson

Skriver servlets med Tomcat

Nå som du har en konseptuell oversikt, la oss komme til å skrive en Java-servlet.

Det første du trenger er en servletbeholder, ellers kjent som en Java-applikasjonsserver. Tomcat og Jetty er to av de mest populære servletcontainerne. Vi bruker Tomcat fordi det er en av de mest langvarige applikasjonsserverne for Java. Tomcat er gratis og inneholder minimalt med bjeller og fløyter, noe som vil gjøre ting enkelt for vårt eksempel. ("Bells and whistles" er for øvrig et teknisk begrep.)

Last ned og installer Tomcat

Hvis du ikke allerede har Tomcat, kan du starte med å åpne Tomcat-nedlastingssiden. Der kan du velge enten Windows-installasjonsprogrammet eller den mest passende ZIP-nedlastingen for datamaskinen din (for eksempel laster jeg ned 64-biters Windows-zip).

Det er det: du har nettopp lagt til Java-serverlaget i operativsystemet ditt!

Bekreft at Tomcat kjører

Før vi går videre, la oss sørge for at du kan kjøre Tomcat. Start enten Windows-tjenesten eller kjør startup.sh eller startup.bat filen fra kommandolinjen.

Hvis du nå åpner en nettleser og går til lokal vert: 8080, bør du bli møtt av følgende skjermbilde:

Matthew Tyson

Hvis du får problemer med å kjøre Tomcat, kan du gå til Tomcat-dokumentasjonen for feilsøking.

Kjør Tomcat servlet-eksemplet

La oss nå se på en Java-servlet. Tomcat har beleilig tatt med noen enkle eksempler.

Klikk på Eksempler lenke du ser i Utvikler hurtigstart delen av Tomcat velkomstside. Når du er der, klikker du på Servlet eksempler lenke.

Nå kan du se en enkel Servlet i aksjon ved å klikke på Hei Verden prøver Henrette lenke. Det vil bringe nettleseren din til // localhost: 8080 / eksempler / servlets / servlet / HelloWorldExample URL, hvor du vil se den flerårige programmørens hilsen.

Viser servlet kildekoden

Klikk på pilen Tilbake i nettleseren din, og klikk deretter på kilde lenke for HelloWorld-appen. Kilden er vist i Oppføring 1.

Oppføring 1. Kildekode for HelloWorld-eksempel

 importer java.io. *; importere javax.servlet. *; importere javax.servlet.http. *; offentlig klasse HelloWorld utvider HttpServlet {public void doGet (HttpServletRequest request, HttpServletResponse response) kaster IOException, ServletException {respons.setContentType ("text / html"); PrintWriter out = respons.getWriter (); out.println (""); out.println (""); out.println ("Hello World!"); out.println (""); out.println (""); out.println (""); out.println (""); out.println (""); }} 

Denne veldig enkle kodelisten inneholder de grunnleggende komponentene i en Java-servlet. La oss vurdere det trinn for trinn.

Første linje kaller standard Java-import. Etter det definerer programmet en ny klasse som utvider HttpServlet klasse. Dette er kritisk fordi servlets implementere Servlet grensesnitt for å kjøre inne i en servletbeholder.

Neste, den Hei Verden klasse definerer en metode som kalles doGet (). Dette er en standard metode på servlets: den forteller serveren å rute HTTP FÅ forespørsler til denne metoden. Andre HTTP-metoder, som POST, håndteres av lignende navngitte metoder, som doPost.

Legg merke til at det doGet () har to parametere: (HttpServletRequest forespørsel, HttpServletResponse svar). Disse to objektene representerer forespørselen og svaret. De gir tilgang til alt koden din trenger for å håndtere forespørselen og gi et svar. I HelloWorld.doGet servlet-metoden, for eksempel respons objektet brukes til å informere serveren om hvilken innholdstype header du skal utstede. I dette tilfellet er det respons.setContentType ("tekst / html");.

Til slutt får programmet et Java Writer-objekt fra svaret respons.getWriter (). De Forfatter brukes deretter til å lage et enkelt HTML-svar for å gå tilbake til nettleseren.

URL-kartlegging

Strukturen og kodestrømmen i Listing 1 er ganske intuitiv, men det er en skarp utelatelse. Hvordan vet serveren å knytte // localhost: 8080 / eksempler / servlets / servlet / HelloWorldExample URL til HelloWorld.doGet metode?

Du vil finne svaret på dette mysteriet i applikasjonsmetadataene. Hver Java-webapplikasjon inneholder en standard metadatafil, kalt web.xml, som forteller serveren hvordan man tilordner URL-er til servlets.

Hva er metadata?

Metadata er all informasjon som brukes til å kontrollere driften av programvare utenfor selve programvaren.

I eksemplene på Tomcat-eksemplene, er web.xml er funnet på \ apache-tomcat-9.0.11 \ webapps \ eksempler \ WEB-INF \ web.xml. De \ WEB-INF \ web.xml er standardplasseringen til metadatafilen for servlets. Hvis du åpner denne filen, ser du hvordan serveren er konfigurert.

Den forkortede web.xml i Listing 2 har akkurat den informasjonen vi trenger for diskusjonen vår.

Oppføring 2. Kildekode for Tomcat HelloWorld-eksemplet

     HelloWorldExample HelloWorldExample HelloWorldExample / servlets / servlet / HelloWorldExample 

Oppføring 2 viser en typisk XML-filoverskrift som refererer til skjemaet for en Java-webapplikasjonsbeskrivelse. Dette følges av to oppføringer: og.

Oppfordringen til tildeler et logisk navn, HelloWorldExample, til HelloWorldExample klasse, via felt og.

Oppfordringen til tildeler det logiske navnet til verdi, og dermed knytte koden til URL-en.

Merk at feltet støtter jokertegn for å håndtere en rekke fleksible nettadressekartlegginger.

Andre servletfunksjoner

I tillegg til nettadressekartlegging, gir servlets ekstra muligheter for filtrering og autentisering. Filtre brukes til å behandle forespørsler, og godkjenning brukes til å tilordne enkle brukere og roller til URL-mønstre. JavaServer Pages (JSP) spesifikasjonen gir støtte for å generere HTML på en mye kraftigere måte.

Konklusjon

Denne artikkelen har vært en konseptuell oversikt over Java-servlets, inkludert URL-forespørsel og svarhåndtering på en Java-server. Å forstå disse grunnleggende elementene på serversiden Java hjelper deg med å integrere mer avanserte konsepter som server push og runtime discovery of URL mappings, som er nye i Servlet 4.0.

Denne historien, "Hva er Java-servlets? Behandling om Java-applikasjoner" ble opprinnelig utgitt av JavaWorld.

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