Servlet (Java)

En servlet är ett Java -gränssnitt vars implementering utökar funktionaliteten hos en server . En servlet interagerar med klienter genom begäran-svar-principen.

Även om servlets kan betjäna vilken begäran som helst, används de vanligtvis för att utöka webbservrar . För sådana applikationer definierar Java Servlet-teknologin HTTP-specifika servletklasser.

Paketerar javax.servletoch javax.servlet.httptillhandahåller gränssnitt och klasser för att bygga servlets.

Den första servletspecifikationen skapades av Sun Microsystems (version 1.0 färdigställdes i juni 1997 ). Sedan version 2.3 har servletspecifikationen utvecklats under ledning av Java Community Process . JSR 53-standarden definierade både Servlet 2.3 och JavaServer Page 1.2-specifikationen. JSR 154 inkluderar Servlet 2.4 och 2.5 specifikationer. Den nuvarande specifikationen från och med den 2 mars 2021 är Servlet 4.0 (beskrivs i JSR-369 ).

Tidslinje för Servlet API

Servlet API tidslinje
Servlet API-version Släpp Plattform Stora ändringar
Server 4.0 september 2017 JavaEE 8 HTTP/2 Server Push
Servlet 3.1 maj 2013  (engelska) JavaEE7 JavaSE7 Icke-blockerande I/O, stöd för icke-standardiserade protokoll över HTTP
Server 3.0 December 2009 Arkiverad 6 augusti 2011 på Wayback Machine JavaEE6, JavaSE6 Pluggbarhet, enkel utveckling, asynkrona servlets, säkerhet, filuppladdningar
Server 2.5 September 2005 Arkiverad 9 juni 2008 på Wayback Machine JavaEE 5, J2SE 5.0 Kräver J2SE 5.0, anteckningsstöd
Server 2.4 November 2003 Arkiverad 9 juni 2008 på Wayback Machine J2EE 1.4, J2SE 1.3 web.xml använder XML Schema
Server 2.3 Augusti 2001 Arkiverad 16 maj 2008 på Wayback Machine J2EE 1.3, J2SE 1.2 UtseendeFilter
Server 2.2 Augusti 1999 Arkiverad 11 juni 2008 på Wayback Machine J2EE 1.2, J2SE 1.2 Blir en del av J2EE , erbjuder oberoende webbapplikationer i .war- filer
Server 2.1 November 1998 Arkiverad 11 juni 2008 på Wayback Machine ej angivet Första officiella specifikationen, tillagd RequestDispatcher.ServletContext
Server 2.0 JDK 1.1 En del av Java Servlet Development Kit 2.0
Server 1.0 juni 1997

Servlets livscykel

Livscykeln för en servlet består av följande steg:

  1. Om det inte finns någon servlet i behållaren.
    1. Servletklassen laddas av behållaren.
    2. Behållaren skapar en instans av servletklassen.
    3. Behållaren anropar init(). Denna metod initierar servleten och anropas först, innan servleten kan betjäna förfrågningar. Under hela livscykeln init()kallas metoden endast en gång.
  2. Betjänar en kunds begäran. Varje begäran behandlas i sin egen tråd. Behållaren anropar metoden service()för varje begäran. Denna metod bestämmer typen av den inkommande begäran och distribuerar den till den metod som motsvarar denna typ för bearbetning av begäran. Servletutvecklaren måste tillhandahålla en implementering för dessa metoder. Om en begäran tas emot för vilken en metod inte är implementerad, anropas metoden för den överordnade klassen och slutar vanligtvis med att ett fel returneras till begäranden.
  3. Om behållaren behöver ta bort servleten anropar den metoden destroy(), som avvecklar servleten. Liksom metoden init()kallas denna metod också en gång i hela servletcykeln.

Exempel

importera java.io.IOException ; importera java.io.PrintWriter ; importera javax.servlet.ServletException ; importera javax.servlet.http.HttpServlet ; importera javax.servlet.http.HttpServletRequest ; importera javax.servlet.http.HttpServletResponse ; importera javax.servlet.http.HttpSession ; public class NewServlet utökar HttpServlet { @Override protected void doGet ( HttpServletRequest request , HttpServletResponse response ) kastar ServletException , IOException { // Strängparameter = begäran . _ getParameter ( "parameter" ); // Starta HTTP-session HttpSession session = begäran . getSession ( sant ); session . setAttribute ( "parameter" , parameter ); svar . setContentType ( "text/html;charset=UTF-8" ); PrintWriter ut = svar . getWriter (); prova { ut . println ( "<html>" ); ut . println ( "<huvud>" ); ut . println ( "<titel>Titel</title>" ); ut . println ( "</head>" ); ut . println ( "<kropp>" ); ut . println ( "<h1>Servletexempel" + parameter + "</h1>" ); ut . println ( "</body>" ); ut . println ( "</html>" ); } slutligen { ut . stäng (); } } @Override public String getServletInfo () { return "Servlet Exempel)" ; } }

Se även

Länkar