Jakarta Servlet

Van Wikipedia, de gratis encyclopedie
Spring naar navigatie Spring naar zoeken

Jakarta Servlet (voorheen Java Servlet) zijn Java- klassen waarvan de instanties binnen een webserver verzoeken van clients ontvangen en beantwoorden. De inhoud van de reacties kan dynamisch worden aangemaakt, dus op het moment van de aanvraag, en hoeft niet statisch (bijvoorbeeld in de vorm van een HTML- pagina) beschikbaar te zijn voor de webserver. Servlets vertegenwoordigen een verdere ontwikkeling van de CGI- interface of andere concepten die oorspronkelijk in het webgebied werden gebruikt.Java-webapplicaties gebruiken voornamelijk servlets, terwijl de klassieke generatie van dynamische webinhoud via CGI gebeurt met PHP , Ruby on Rails , Active Server Pages of Perl bijvoorbeeld.

De servlet-specificatie maakt deel uit van de Jakarta EE- technologie. Servlet-containers zijn een integraal onderdeel van alle Jakarta-EE- toepassingsservers . Een servletcontainer is echter niet altijd een volledige Jakarta EE- implementatie. Onafhankelijk hiervan zijn er webservers die een servletcontainer bevatten (bijvoorbeeld Apache Tomcat , Jetty ).

gebruik maken van

Een servlet wordt geïmplementeerd door een klasse te maken die de javax.servlet.Servlet interface implementeert. Er is een klasse javax.servlet.http.HttpServlet die dit proces vereenvoudigt. Dan worden een of beide methoden doGet en doPost overschreven om de twee belangrijkste HTTP- methoden GET en POST te kunnen verwerken. Vaak wordt alleen de service overschreven, die onafhankelijk van het HTTP-commando wordt aangeroepen. Om de servlet op de webserver te kunnen registreren, moet meta-informatie worden verstrekt. Deze meta-informatie wordt opgeslagen in een XML- bestand genaamd web.xml , de zogenaamde deployment descriptor . De implementatiedescriptor wordt gecombineerd met de gecompileerde servletklasse (en eventuele andere vereiste klassen) in een archiefbestand, het webarchief . Dit webarchief wordt overgebracht naar de servletcontainer via een functionaliteit die erdoor wordt geleverd (implementatie) .

Tijdens runtime krijgt de webserver toegang tot de servlet-container, die op zijn beurt een instantie van de servlet kan maken en de bijbehorende methode kan starten. Sommige containers verwerken meerdere verzoeken en dus threads tegelijkertijd via een pool van servlets. Om deze reden moet de gelijktijdige toegang van meerdere threads altijd in gedachten worden gehouden voor attributen binnen een servlet.

Vaak worden in een servlet zowel de parameters van de aanvraag als de sessiegegevens gebruikt, bijvoorbeeld om een ​​gepersonaliseerd antwoord te genereren of om gegevens op de server op te slaan of te wijzigen. Naast tekst (bijvoorbeeld HTML of XML) kunnen de antwoorden ook afbeeldingen of andere binaire bestanden zijn.

Servlets worden vaak gebruikt volgens het Model View Controller (MVC) ontwerppatroon in de vorm van Jakarta Server Pages (JSP). De JSP of JSF vertegenwoordigen meestal de weergave. Interessant is dat de JSP-pagina's tijdens runtime ook in servlets worden gecompileerd. De zelfgeschreven servlets vertegenwoordigen de controller en het model. Kaders zoals B. Spring MVC of Struts vormen een ander abstractieniveau en zorgen voor een duidelijker gescheiden MVC-patroon.

uitdrukking

Het Engelse woord “servlet” is een kofferwoord dat bestaat uit de termen “ server ” en “ applet ”, dwz server-side applet en dus servlet.

Met de introductie van de Java-taal definieerde Sun twee soorten applicaties : applicaties (d.w.z. desktop-applicaties) en applets (letterlijk application-chen , d.w.z. mini-applicaties die alleen binnen een container draaien - meestal in een webbrowser). Toen Java-technologie ook aan de serverkant kwam, werd daar een naam gezocht voor de kleine stukjes code die niet meer in de context van de browser draaien, maar in die van de webserver, die doet denken aan applets. Het is immers een soortgelijk concept in de breedste zin van het woord: kleine serverapplicaties die een container (hier: een webserver uitgebreid met een servletcontainer) eromheen nodig hebben om te kunnen draaien. Dit kwam met Servlet .

Standaardisatie / versies

De afhandeling, het gedrag en het beheer van Jakarta-servlets volgt een standaard die is gedefinieerd via het Java Community Process (JCP). We werken actief aan deze standaard en er zijn verschillende versies. De laatst gepubliceerde versie is 4.0, dat deel uitmaakt van de Java EE 8-specificatie. Het werd uitgebracht in september 2017. [1] [2]

Grensscheiding

Er kunnen aparte, uitvoerbare modules worden geschreven om de functionaliteit van een server uit te breiden. Deze serverextensies zijn beschikbaar voor tal van platforms, b.v. B. Voor Microsoft Internet Information Services (IIS) bestaat de zogenaamde Internet Server API (ISAPI). In Java worden serverextensies geschreven met behulp van de Servlet API. De serveruitbreidingsmodules worden servlets genoemd.

voorbeeld

  1. De gebruiker dient een ingevuld formulier in de browser in.
  2. De browser activeert de bijbehorende actie door de formuliergegevens naar de webserver te verzenden.
  3. De webserver vertaalt de actienaam van het formulier in de naam van een servletklasse. Om dit te doen, gebruikt het informatie uit de descriptor voor implementatie , een bestand met de naam "web.xml".
  4. Afhankelijk van de HTTP-methode van het formulier (GET of POST), roept de webserver de doGet- of doPost- methode van de servlet aan en draagt ​​de aanvraaggegevens over als parameters samen met een antwoordobject waarmee uitvoer mogelijk wordt gemaakt. De uitvoer wordt van de webserver naar de browser gestuurd nadat de methode is voltooid.
  5. De browser ontvangt het antwoord en geeft het weer.
  6. De gebruiker leest het antwoord in de browser.

Het volgende stroomschema toont een typisch proces bij het aanroepen van een servlet.

Stroomschema van een webtoepassing met servlet

web links

Individueel bewijs

  1. JCP-specificatie 369
  2. Java EE 8-technologieën