Životní cyklus JSP

jsp životní cyklus

Co je JSP LifeCycle?

Životní cyklus JSP je definován jako překlad stránky JSP na servlet, protože stránka JSP musí být nejprve převedena na servlet, aby bylo možné zpracovat požadavky na službu. Životní cyklus začíná vytvořením JSP a končí jeho rozpadem.

Různé fáze životního cyklu JSP

Když prohlížeč požádá o JSP, JSP engine nejprve zkontroluje, zda potřebuje stránku zkompilovat. Pokud je JSP naposledy zkompilován nebo je poslední úprava provedena v JSP, pak JSP engine zkompiluje stránku.

Proces kompilace stránky JSP zahrnuje tři kroky:

  • Analýza JSP
  • Přeměna JSP na servlet
  • Kompilace servletu

Diagram životního cyklu JSP

Životní cyklus JSP je znázorněn na níže uvedeném diagramu.

Životní cyklus JSP

Následující kroky vysvětlují životní cyklus JSP:

  1. Překlad stránky JSP
  2. Kompilace stránky JSP (Kompilace stránky JSP do _jsp.java)
  3. Načítání třídy (_jsp.java je převedena na soubor třídy _jsp.class)
  4. Instanciace (vytvoří se objekt generovaného servletu)
  5. Inicializace (_jspinit() metoda je vyvolána kontejnerem)
  6. Zpracování požadavku (_jspservice() metoda je vyvolána kontejnerem)
  7. zničit (_jspDestroy() metoda vyvolaná kontejnerem)

Pojďme si podrobněji shrnout výše uvedené body:

1) Překlad stránky JSP:

A Java servlet je generován ze zdrojového souboru JSP. Toto je první krok životního cyklu JSP. Ve fázi překladu kontejner ověřuje syntaktickou správnost souborů stránek a značek JSP.

  • Kontejner JSP interpretuje standardní direktivy a akce a vlastní akce odkazující na knihovny značek (všechny jsou součástí stránky JSP a bude o nich pojednáno v pozdější části) použité na této stránce JSP.
  • Ve výše uvedeném obrázkovém popisu je v prvním kroku demo.jsp přeložen do demo_jsp.java
  • Vezměme si příklad „demo.jsp“, jak je uvedeno níže:

Demo.jsp

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

Vysvětlení kódu pro Demo.jsp

1. řádek kódu: počáteční značka html

2. řádek kódu: Značka hlavy

Řádek 3 – 4 kódu: Title Tag tj. Demo JSP a závěrečný tag head

Řádek 5 – 6 kódu: Značka Scriptlet, kde se inicializuje ukázka proměnné

Řádek 7 – 8 kódu: Ve značce body text, který se má vytisknout na výstupu (Počet je: )

9. řádek kódu: Značka Scriplet, kde se pokouší vytisknout proměnnou demovar s inkrementovanou hodnotou

Řádek 10 – 11 kódu: Body a značky HTML jsou uzavřeny

Demo JSP stránka je převedena na demo_jsp servlet v níže uvedeném kódu.

Životní cyklus JSP

Vysvětlení kódu pro Demo_jsp.java

1. řádek kódu: Třída servletu demo_jsp rozšiřuje nadřazenou třídu HttpServlet

Řádek 2 – 3 kódu: Přepsání servisní metody jsp, tj. _jspservice, který má jako parametry objekty HttpServletRequest a HttpServletResponse

4. řádek kódu: Způsob otevírání

5. řádek kódu: Volání metody getWriter() objektu odpovědi pro získání PrintWriterobject (vytiskne formátovanou reprezentaci objektů do textového výstupního proudu)

6. řádek kódu: Volání metody setContentType objektu odpovědi pro nastavení typu obsahu

7. řádek kódu: Použitím write() metoda objektu PrintWriter, který se pokouší analyzovat html

8. řádek kódu: Inicializace proměnné demovar na 0

9. řádek kódu: Volání write() metoda objektu PrintWriter k analýze textu

10. řádek kódu: Volání print() metoda objektu PrintWriter pro zvýšení proměnné demovar z 0+1=1. Výstup bude tedy 1

11. řádek kódu: Použitím write() metoda objektu PrintWriter, který se pokouší analyzovat html

Výstup:

Životní cyklus JSP

  • Zde můžete vidět, že na snímku obrazovky je výstup 1, protože demvar je inicializován na 0 a poté zvýšen na 0+1=1

Ve výše uvedeném příkladu

  • demo.jsp, je JSP, kde je inicializována a inkrementována jedna proměnná. Tento JSP se převede na servlet (demo_jsp.class ), kde jádro JSP načte stránku JSP a převede na obsah servletu.
  • Když dojde ke konverzi, veškerý text šablony se převede na println() prohlášení a vše prvky JSP jsou převedeny na Java kód.

Takto je jednoduchá stránka JSP přeložena do třídy servletů.

2) Sestavení stránky JSP

  • Vygenerovaný soubor servletu java je zkompilován do třídy servletu java
  • K překladu zdrojové stránky Java do její implementační třídy může dojít kdykoli mezi nasazením stránky JSP do kontejneru a zpracováním stránky JSP.
  • Ve výše uvedeném obrázkovém popisu je demo_jsp.java zkompilována do souboru třídy demo_jsp.class

3) Načítání třídy

  • Třída servletu, která byla načtena ze zdroje JSP, je nyní načtena do kontejneru

4) Instanciace

  • V tomto kroku je vygenerován objekt, tj. instance třídy.
  • Kontejner spravuje jednu nebo více instancí této třídy v reakci na požadavky a další události. Typicky je kontejner JSP vytvořen pomocí kontejneru servletu. Kontejner JSP je rozšířením kontejneru servletu, protože kontejner podporuje JSP i servlet.
  • Poskytuje rozhraní JSPPage, které poskytuje kontejner init() si destroy() metody.
  • Existuje rozhraní HttpJSPPage, které obsluhuje HTTP požadavky a obsahuje také servisní metodu.

5) Inicializace

public void jspInit()
{
	//initializing the code
}
  • _jspinit() metoda zahájí instanci servletu, která byla vygenerována z JSP a bude v této fázi vyvolána kontejnerem.
  • Jakmile je instance vytvořena, okamžitě poté bude vyvolána metoda init
  • Zavolá se pouze jednou během životního cyklu JSP, metoda inicializace je deklarována výše

6) Zpracování žádosti

void _jspservice(HttpServletRequest request HttpServletResponse response)
{
	//handling all request and responses
}
  • _jspservice() metoda je vyvolána kontejnerem pro všechny požadavky vyvolané stránkou JSP během jejího životního cyklu
  • Pro tuto fázi musí projít všemi výše uvedenými fázemi a poté lze vyvolat pouze servisní metodu.
  • Předává objekty požadavků a odpovědí
  • Tuto metodu nelze přepsat
  • Metoda je zobrazena výše: Je zodpovědná za generování všech HTTP metod, tj. GET, POST atd.

7) Zničit

public void _jspdestroy()
{
            //all clean up code
}
  • _jspdestroy() metoda je také vyvolána kontejnerem
  • Tato metoda je volána, když se kontejner rozhodne, že již nepotřebuje instanci servletu ke zpracování požadavků.
  • Když je potom provedeno volání metody zničení, servlet je připraven na úklid
  • Toto je konec životního cyklu.
  • Můžeme přepsat jspdestroy() když provádíme jakékoli čištění, jako je uvolnění připojení k databázi nebo zavírání otevřených souborů.