Szervlet (Java)

A szervlet egy Java interfész , amelynek megvalósítása kiterjeszti a szerver funkcionalitását . A szervlet a kérés-válasz elven keresztül kommunikál az ügyfelekkel.

Míg a szervletek bármilyen kérést ki tudnak szolgálni, általában a webszerverek kiterjesztésére használják őket . Az ilyen alkalmazásokhoz a Java Servlet technológia HTTP-specifikus szervlet osztályokat határoz meg.

Csomagok javax.servletés javax.servlet.httpfelületeket és osztályokat biztosítanak a servletek építéséhez.

Az első szervlet specifikációt a Sun Microsystems készítette (az 1.0-s verzió 1997 júniusában készült el ). A 2.3-as verzió óta a servlet specifikációt a Java Community Process irányítása alatt fejlesztették ki . A JSR 53 szabvány meghatározta a Servlet 2.3 és a JavaServer Page 1.2 specifikációt is. A JSR 154 tartalmazza a Servlet 2.4 és 2.5 specifikációit. A jelenlegi specifikáció 2021. március 2-án a Servlet 4.0 (leírása a JSR-369- ben ).

A Servlet API idővonala

Servlet API idővonal
Servlet API verzió Kiadás Felület Nagy változások
Szerver 4.0 2017. szeptember JavaEE 8 HTTP/2 Server Push
Szervlet 3.1 2013. május  (angol) JavaEE7 JavaSE7 Nem blokkoló I/O, nem szabványos protokollok támogatása HTTP-n keresztül
Szerver 3.0 2009. december Archiválva : 2011. augusztus 6. a Wayback Machine -nél JavaEE6, JavaSE6 Csatlakoztathatóság, egyszerű fejlesztés, aszinkron szervletek, biztonság, fájlfeltöltés
Szerver 2.5 2005. szeptember Archiválva : 2008. június 9. a Wayback Machine -nél JavaEE 5, J2SE 5.0 J2SE 5.0, megjegyzések támogatása szükséges
Szerver 2.4 2003. november Archiválva : 2008. június 9. a Wayback Machine -nél J2EE 1.4, J2SE 1.3 A web.xml XML-sémát használ
Szerver 2.3 2001. augusztus Archiválva : 2008. május 16. a Wayback Machine -nél J2EE 1.3, J2SE 1.2 MegjelenésFilter
Szerver 2.2 1999. augusztus Archiválva : 2008. június 11. a Wayback Machine -nél J2EE 1.2, J2SE 1.2 A J2EE részévé válik , független webalkalmazásokat kínál .war fájlokban
Szerver 2.1 1998. november Archiválva : 2008. június 11. a Wayback Machine -nél nem meghatározott Az első hivatalos specifikáció hozzáadva RequestDispatcher.ServletContext
Szerver 2.0 JDK 1.1 A Java Servlet Development Kit 2.0 része
Szerver 1.0 1997. június

Szervlet életciklusa

A szervlet életciklusa a következő lépésekből áll:

  1. Abban az esetben, ha nincs servlet a tárolóban.
    1. A servlet osztályt a tároló tölti be.
    2. A tároló létrehozza a szervlet osztály példányát.
    3. A konténer a init(). Ez a metódus inicializálja a szervletet, és először meghívásra kerül, mielőtt a szervlet kiszolgálhatná a kéréseket. A teljes életciklus során a módszert init()csak egyszer hívják meg.
  2. Ügyfél kérésének kiszolgálása. Minden kérés feldolgozása saját szálban történik. service()A tároló minden kérésnél meghívja a metódust . Ez a metódus meghatározza a bejövő kérés típusát, és elosztja az ennek a típusnak megfelelő metódushoz a kérés feldolgozásához. A szervlet fejlesztőjének biztosítania kell ezeknek a módszereknek a megvalósítását. Ha olyan kérés érkezik, amelyhez nincs metódus implementálva, akkor a szülőosztály metódusa kerül meghívásra, és általában egy hibaüzenettel végződik a kérelmezőnek.
  3. Abban az esetben, ha a tárolónak el kell távolítania a szervletet, meghívja a metódust destroy(), amely leállítja a szervletet. A metódushoz init()hasonlóan ezt a metódust is egyszer hívják meg a teljes szervletciklusban.

Példa

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 ; public class NewServlet kiterjeszti a HttpServlet { @Override protected void doGet ( HttpServletRequest request , HttpServletResponse válasz ) a ServletException , IOException { // Karakterlánc paraméter = kérés . getParameter ( "paraméter" ); // HTTP munkamenet indítása HttpSession session = request . getSession ( igaz ); munkamenet . setAttribute ( "paraméter" , paraméter ); válasz . setContentType ( "szöveg/html;karakterkészlet=UTF-8" ); PrintWriter out = válasz . getWriter (); próbáld ki . _ println ( "<html>" ); ki . println ( "<fej>" ); ki . println ( "<title>Cím</title>" ); ki . println ( "</head>" ); ki . println ( "<test>" ); ki . println ( "<h1>Szervlet példa" + paraméter + "</h1>" ); ki . println ( "</body>" ); ki . println ( "</html>" ); } végre { ki . bezár (); } } @Override public String getServletInfo () { return "Servlet example)" ; } }

Lásd még

Linkek