Servlet (Java)

Un servlet este o interfață Java a cărei implementare extinde funcționalitatea unui server . Un servlet interacționează cu clienții prin principiul cerere-răspuns.

În timp ce servleturile pot servi orice solicitare, ele sunt utilizate în mod obișnuit pentru a extinde serverele web . Pentru astfel de aplicații, tehnologia Java Servlet definește clase de servlet specifice HTTP.

Pachetează javax.servletși javax.servlet.httpoferă interfețe și clase pentru construirea de servlet-uri.

Prima specificație de servlet a fost creată de Sun Microsystems (versiunea 1.0 a fost finalizată în iunie 1997 ). Începând cu versiunea 2.3, specificația servlet-ului a fost dezvoltată sub îndrumarea procesului comunității Java . Standardul JSR 53 a definit atât specificația Servlet 2.3, cât și JavaServer Page 1.2. JSR 154 include specificațiile Servlet 2.4 și 2.5. Specificația actuală din 2 martie 2021 este Servlet 4.0 (descris în JSR-369 ).

Cronologie a API-ului Servlet

Cronologie Servlet API
Versiunea API Servlet Eliberare Platformă Schimbari majore
Server 4.0 septembrie 2017 JavaEE 8 HTTP/2 Server Push
Servlet 3.1 mai 2013  (engleză) JavaEE7 JavaSE7 I/O non-blocante, suport pentru protocoale non-standard prin HTTP
Server 3.0 Decembrie 2009 Arhivat 6 august 2011 la Wayback Machine JavaEE6, JavaSE6 Conectare, ușurință de dezvoltare, servlet-uri asincrone, securitate, încărcare de fișiere
Server 2.5 Septembrie 2005 Arhivat pe 9 iunie 2008 la Wayback Machine JavaEE 5, J2SE 5.0 Necesită J2SE 5.0, suport pentru adnotări
Server 2.4 Noiembrie 2003 Arhivat pe 9 iunie 2008 la Wayback Machine J2EE 1.4, J2SE 1.3 web.xml folosește schema XML
Server 2.3 August 2001 Arhivat pe 16 mai 2008 la Wayback Machine J2EE 1.3, J2SE 1.2 AspectFilter
Server 2.2 August 1999 Arhivat pe 11 iunie 2008 la Wayback Machine J2EE 1.2, J2SE 1.2 Devine parte a J2EE , oferă aplicații web independente în fișiere .war
Server 2.1 Noiembrie 1998 Arhivat pe 11 iunie 2008 la Wayback Machine nespecificat Prima specificație oficială, adăugată RequestDispatcher.ServletContext
Server 2.0 JDK 1.1 Parte a Java Servlet Development Kit 2.0
Server 1.0 iunie 1997

Ciclul de viață al servletului

Ciclul de viață al unui servlet constă din următorii pași:

  1. În cazul în care nu există servlet în container.
    1. Clasa servlet este încărcată de container.
    2. Containerul creează o instanță a clasei servlet.
    3. Containerul numește init(). Această metodă inițializează servletul și este apelată mai întâi, înainte ca servletul să poată servi cererile. Pentru întregul ciclu de viață, metoda init()este apelată o singură dată.
  2. Deservirea cererii unui client. Fiecare cerere este procesată în propriul thread. Containerul apelează metoda service()pentru fiecare cerere. Această metodă determină tipul cererii primite și o distribuie metodei corespunzătoare acestui tip pentru procesarea cererii. Dezvoltatorul de servlet trebuie să furnizeze o implementare pentru aceste metode. Dacă se primește o cerere pentru care o metodă nu este implementată, metoda clasei părinte este apelată și de obicei se termină cu o eroare returnată solicitantului.
  3. În cazul în care containerul trebuie să elimine servletul, apelează metoda destroy(), care dezafectează servletul. La fel ca metoda init(), această metodă este, de asemenea, numită o dată în întregul ciclu servlet.

Exemplu

import java.io.IOException ; import java.io.PrintWriter ; import javax.servlet.ServletException ; import javax.servlet.http.HttpServlet ; import javax.servlet.http.HttpServletRequest ; import javax.servlet.http.HttpServletResponse ; import javax.servlet.http.HttpSession ; clasă publică NewServlet extinde HttpServlet { @Override protected void doGet ( solicitare HttpServletRequest , răspuns HttpServletResponse ) aruncă ServletException , IOException { // Parametru șir = cerere . getParameter ( "parametru" ); // Porniți sesiunea HTTP Sesiune HttpSession = cerere . getSession ( adevărat ); sesiune . setAttribute ( "parametru" , parametru ); răspuns . setContentType ( "text/html;charset=UTF-8" ); PrintWriter out = răspuns . getWriter (); încercați { out . println ( "<html>" ); afară . println ( "<head>" ); afară . println ( "<title>Titlu</title>" ); afară . println ( "</head>" ); afară . println ( "<corp>" ); afară . println ( "<h1>Exemplu de servlet" + parametru + "</h1>" ); afară . println ( "</body>" ); afară . println ( "</html>" ); } în cele din urmă { afară . închide (); } } @Override public String getServletInfo () { return "Exemplu de servlet)" ; } }

Vezi și

Link -uri