JSP életciklus

jsp életciklusa

Mi az a JSP LifeCycle?

A JSP-életciklus a JSP-oldal servletté való fordítása, mivel a JSP-oldalt először szervletté kell alakítani a szolgáltatáskérések feldolgozásához. Az életciklus a JSP létrehozásával kezdődik, és annak szétesésével ér véget.

A JSP életciklusának különböző fázisai

Amikor a böngésző JSP-t kér, a JSP-motor először ellenőrzi, hogy le kell-e fordítania az oldalt. Ha a JSP-t utoljára fordították le, vagy a legutóbbi módosítást a JSP-ben hajtották végre, akkor a JSP-motor fordítja le az oldalt.

A JSP oldal fordítási folyamata három lépésből áll:

  • A JSP elemzése
  • A JSP servletté alakítása
  • A szervlet összeállítása

JSP életciklus diagram

A JSP életciklusa az alábbi ábrán látható.

JSP életciklus

A következő lépések ismertetik a JSP életciklusát:

  1. A JSP oldal fordítása
  2. JSP-oldal fordítása (JSP-oldal fordítása _jsp.java-ba)
  3. Osztálybetöltés (a _jsp.java _jsp.class osztályfájllá alakul)
  4. Példányosítás (a generált szervlet objektuma létrejön)
  5. Inicializálás(_jspinit() a metódust a tároló hívja meg)
  6. Kérelem feldolgozása (_jspservice() metódust hívja meg a tároló)
  7. Elpusztítani (_jspDestroy() a tároló által meghívott módszer)

Adjunk részletesebb összefoglalót a fenti pontokról:

1) A JSP oldal fordítása:

A Java servlet fájl egy JSP forrásfájlból jön létre. Ez a JSP életciklusának első lépése. A fordítási fázisban a tároló ellenőrzi a JSP-oldal- és címkefájlok szintaktikai helyességét.

  • A JSP-tároló értelmezi az ezen a JSP-oldalon használt szabványos direktívákat és műveleteket, valamint a címkekönyvtárra hivatkozó egyéni műveleteket (mind a JSP oldal részét képezik, és a későbbi szakaszban lesz szó róla).
  • A fenti képi leírásban a demo.jsp első lépésben demo_jsp.java-ra van fordítva
  • Vegyünk egy példát a „demo.jsp”-re az alábbiak szerint:

Demo.jsp

<html>
<head>
<title>Demo JSP</title>
</head>
<%
int demvar=0;%>
<body>
Count is:
<% Out.println(demovar++); %>
<body>
</html>

A Demo.jsp kód magyarázata

1. kódsor: html start tag

2. kódsor: Fejcímke

Kódsor 3-4: Title Tag pl. Demo JSP és záró head tag

Kódsor 5-6: Scriptlet címke, ahol a változó demo inicializálása

Kódsor 7-8: A body címkében a kimenetben nyomtatandó szöveg (A szám: )

9. kódsor: Scriplet címke, ahol a demovar változót növekményes értékkel próbálja kinyomtatni

10–11. kódsor: Body és HTML címkék zárva

A demo JSP oldal az alábbi kódban demo_jsp servletté alakul.

JSP életciklus

A Demo_jsp.java kód magyarázata

1. kódsor: A demo_jsp szervlet osztály kiterjeszti a HttpServlet szülőosztályt

Kódsor 2-3: A jsp, azaz a _jspservice szolgáltatási metódusának felülbírálása, amelynek paraméterei a HttpServletRequest és a HttpServletResponse objektumok

4. kódsor: Nyitás módja

5. kódsor: A metódus meghívása getWriter() válaszobjektum a PrintWriterobject lekéréséhez (az objektumok formázott reprezentációját nyomtatja ki a szöveges kimeneti adatfolyamba)

6. kódsor: A válaszobjektum setContentType metódusának meghívása a tartalomtípus beállításához

7. kódsor: Használata write() A PrintWriter objektum módszere megpróbálja elemezni a html-t

8. kódsor: A demovar változó inicializálása 0-ra

9. kódsor: Hívás write() a PrintWriter objektum módszere a szöveg elemzéséhez

10. kódsor: Hívás print() a PrintWriter objektum metódusa a demovar változó növelésére 0+1=1 értékről. Így a kimenet 1 lesz

11. kódsor: Használata write() A PrintWriter objektum módszere megpróbálja elemezni a html-t

output:

JSP életciklus

  • Itt látható, hogy a képernyőképen az Output értéke 1, mert a demvar 0-ra inicializálva, majd 0+1=1-re nő.

A fenti példában

  • A demo.jsp egy JSP, amelyben egy változó inicializálása és növelése történik. Ezt a JSP-t a rendszer servletté alakítja (demo_jsp.class ), ahol a JSP-motor betölti a JSP-oldalt, és szervlet-tartalommá alakítja át.
  • Amikor az átalakítás megtörténik, az összes sablonszöveg erre konvertálódik println() nyilatkozatok és minden JSP elemek átalakítják Java kód.

Így fordítható le egy egyszerű JSP oldal servlet osztályba.

2) A JSP oldal összeállítása

  • Az előállított java servlet fájlt java szervlet osztályba fordítják
  • A Java-forrásoldal fordítása a megvalósítási osztályba bármikor megtörténhet a JSP-oldalnak a tárolóba való telepítése és a JSP-oldal feldolgozása között.
  • A fenti képi leírásban a demo_jsp.java egy demo_jsp.class osztályfájlba van fordítva

3) Osztálybetöltés

  • A JSP-forrásból betöltött szervlet osztály most betöltődik a tárolóba

4) Példányosítás

  • Ebben a lépésben létrejön az objektum, azaz az osztály példánya.
  • A tároló ennek az osztálynak egy vagy több példányát kezeli a kérésekre és egyéb eseményekre adott válaszokban. A JSP-tárolók általában egy szervlet-tároló használatával készülnek. A JSP-tároló a szervlet-tároló kiterjesztése, mivel a tároló egyaránt támogatja a JSP-t és a szervletet.
  • A konténer által biztosított JSPPage interfészt biztosít init() és a destroy() mód.
  • Van egy HttpJSPPage interfész, amely a HTTP kéréseket szolgálja ki, és ez tartalmazza a szolgáltatási metódust is.

5) Inicializálás

public void jspInit()
{
	//initializing the code
}
  • _jspinit() metódus elindítja a JSP-ből előállított szervlet példányt, és ebben a fázisban a tároló meghívja.
  • A példány létrehozása után az init metódus azonnal meghívásra kerül
  • A JSP életciklusa során csak egyszer hívják meg, az inicializálási módszert a fentiek szerint deklarálják

6) Kérelem feldolgozása

void _jspservice(HttpServletRequest request HttpServletResponse response)
{
	//handling all request and responses
}
  • _jspservice() metódust a tároló hívja meg a JSP-oldal által életciklusa során feltett összes kérésre
  • Ehhez a fázishoz az összes fenti fázison keresztül kell mennie, majd csak a szolgáltatási metódus hívható meg.
  • Kérés és válasz objektumokat ad át
  • Ez a módszer nem bírálható felül
  • A módszer fent látható: Felelős az összes HTTP metódus generálásáért, pl. GET, POST stb.

7) Pusztítsd el

public void _jspdestroy()
{
            //all clean up code
}
  • _jspdestroy() metódust is meghívja a tároló
  • Ez a metódus akkor hívódik meg, amikor a tároló úgy dönt, hogy már nincs szüksége a szervlet példányra a kérések kiszolgálásához.
  • Amikor a hívás megtörténik, a szervlet készen áll a szemétgyűjtésre
  • Ez az életciklus vége.
  • Felülírhatjuk jspdestroy() módszerrel, amikor bármilyen tisztítást végzünk, például felszabadítjuk az adatbázis-kapcsolatokat vagy bezárjuk a nyitott fájlokat.