JSP:n elinkaari

jsp elinkaari

Mikä on JSP LifeCycle?

JSP-elinkaari määritellään JSP-sivun kääntämiseksi servletiksi, koska JSP-sivu on ensin muutettava servletiksi, jotta palvelupyynnöt voidaan käsitellä. Elinkaari alkaa JSP:n luomisesta ja päättyy sen hajoamiseen.

JSP:n elinkaaren eri vaiheet

Kun selain pyytää JSP:tä, JSP-moottori tarkistaa ensin, tarvitseeko sen kääntää sivu. Jos JSP on viimeksi käännetty tai viimeisin muutos on tehty JSP:ssä, JSP-moottori kääntää sivun.

JSP-sivun käännösprosessi sisältää kolme vaihetta:

  • JSP:n jäsentäminen
  • JSP:n muuttaminen servletiksi
  • Serletin kääntäminen

JSP:n elinkaarikaavio

JSP:n elinkaari on kuvattu alla olevassa kaaviossa.

JSP:n elinkaari

Seuraavat vaiheet selittävät JSP:n elinkaaren:

  1. Käännös JSP-sivulta
  2. JSP-sivun kääntäminen (JSP-sivun kokoaminen tiedostoon _jsp.java)
  3. Classloading (_jsp.java muunnetaan luokkatiedostoksi _jsp.class)
  4. Instanssi (luodun servletin objekti luodaan)
  5. Alustus(_jspinit() säilön kutsuma menetelmä)
  6. Pyynnön käsittely (_jspservice() säilön kutsuma menetelmä)
  7. Tuhoa (_jspDestroy() säilön kutsuma menetelmä)

Tehdään yksityiskohtaisempi yhteenveto yllä olevista kohdista:

1) JSP-sivun käännös:

A Java servlet-tiedosto luodaan JSP-lähdetiedostosta. Tämä on JSP:n elinkaaren ensimmäinen askel. Käännösvaiheessa säilö vahvistaa JSP-sivu- ja tagitiedostojen syntaktisen oikeellisuuden.

  • JSP-säilö tulkitsee tällä JSP-sivulla käytetyt vakiomääräykset ja -toiminnot sekä tunnistekirjastoihin viittaavat mukautetut toiminnot (ne ovat kaikki osa JSP-sivua ja niitä käsitellään myöhemmässä osiossa).
  • Yllä olevassa kuvallisessa kuvauksessa demo.jsp on käännetty demo_jsp.javaksi ensimmäisessä vaiheessa
  • Otetaan esimerkki "demo.jsp":stä alla olevan kuvan mukaisesti:

Demo.jsp

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

Demo.jsp-koodin selitys

Koodirivi 1: html-aloitustunniste

Koodirivi 2: Head tag

Koodirivit 3-4: Title Tag eli Demo JSP ja sulkeva head tag

Koodirivit 5-6: Scriptlet-tunniste, jossa alustetaan muuttujan esittely

Koodirivit 7-8: body tagissa tulosteeseen tulostettava teksti (määrä on: )

Koodirivi 9: Scriplet-tunniste, johon yritetään tulostaa muuttuja demovar lisätyllä arvolla

Koodirivit 10–11: Body- ja HTML-tagit suljettu

Demo JSP -sivu muunnetaan demo_jsp-servletiksi alla olevassa koodissa.

JSP:n elinkaari

Koodin selitys tiedostolle Demo_jsp.java

Koodirivi 1: Servlet-luokka demo_jsp laajentaa yläluokkaa HttpServlet

Koodirivit 2-3: jsp:n palvelumenetelmän ohittaminen eli _jspservice, jonka parametreina on HttpServletRequest- ja HttpServletResponse-objektit

Koodirivi 4: Avaustapa

Koodirivi 5: Menetelmän kutsuminen getWriter() vastausobjektista PrintWriterobjectin saamiseksi (tulostaa objektien muotoillun esityksen tekstin tulostusvirtaan)

Koodirivi 6: Vastausobjektin setContentType-menetelmän kutsuminen sisältötyypin määrittämiseksi

Koodirivi 7: Käytössä write() menetelmä, jossa PrintWriter-objekti yrittää jäsentää html:ää

Koodirivi 8: Alustetaan demovar-muuttuja nollaan

Koodirivi 9: Kutsumus write() PrintWriter-objektin menetelmä tekstin jäsentämiseksi

Koodirivi 10: Kutsumus print() PrintWriter-objektin menetelmä suurentaa muuttujan demovar arvosta 0+1=1. Näin ollen tulos on 1

Koodirivi 11: Käytössä write() menetelmä, jossa PrintWriter-objekti yrittää jäsentää html:ää

lähtö:

JSP:n elinkaari

  • Tästä näet, että kuvakaappauksessa Output on 1, koska demvar alustetaan 0:ksi ja kasvatetaan sitten arvoon 0+1=1

Yllä olevassa esimerkissä

  • demo.jsp on JSP, jossa yksi muuttuja alustetaan ja sitä lisätään. Tämä JSP muunnetaan servletiksi (demo_jsp.class), jossa JSP-moottori lataa JSP-sivun ja muuntaa servlet-sisällöksi.
  • Kun muunnos tapahtuu, kaikki mallin teksti muunnetaan println() lausunnot ja kaikki JSP-elementtejä muunnetaan Java koodi.

Näin yksinkertainen JSP-sivu käännetään servlet-luokalle.

2) JSP-sivun kokoaminen

  • Luotu java-servlet-tiedosto käännetään java-servlet-luokkaan
  • Java-lähdesivun käännös toteutusluokkaansa voi tapahtua milloin tahansa JSP-sivun säilöön käyttöönoton ja JSP-sivun käsittelyn välillä.
  • Yllä olevassa kuvallisessa kuvauksessa demo_jsp.java on käännetty luokkatiedostoon demo_jsp.class

3) Luokkatäyttö

  • JSP-lähteestä ladattu servlet-luokka ladataan nyt säilöön

4) Instantiaatio

  • Tässä vaiheessa luodaan objekti eli luokan ilmentymä.
  • Säilö hallitsee yhtä tai useampaa tämän luokan esiintymää vastauksena pyyntöihin ja muihin tapahtumiin. Tyypillisesti JSP-säilö rakennetaan servlet-säilön avulla. JSP-säilö on servlet-säilön laajennus, koska sekä säilö tukee JSP:tä että servletiä.
  • Säilön tarjoama JSPPage-liittymä tarjoaa init() ja destroy() menetelmiä.
  • On olemassa käyttöliittymä HttpJSPPage, joka palvelee HTTP-pyyntöjä, ja se sisältää myös palvelumenetelmän.

5) Alustus

public void jspInit()
{
	//initializing the code
}
  • _jspinit() -menetelmä käynnistää servlet-esiintymän, joka luotiin JSP:stä, ja säilö kutsuu sen tässä vaiheessa.
  • Kun ilmentymä on luotu, init-metodi kutsutaan välittömästi sen jälkeen
  • Sitä kutsutaan vain kerran JSP:n elinkaaren aikana, alustusmenetelmä on ilmoitettu edellä esitetyllä tavalla

6) Pyynnön käsittely

void _jspservice(HttpServletRequest request HttpServletResponse response)
{
	//handling all request and responses
}
  • _jspservice() säilö kutsuu menetelmää kaikille JSP-sivun elinkaarensa aikana esittämille pyynnöille
  • Tässä vaiheessa sen on käytävä läpi kaikki yllä mainitut vaiheet ja sitten voidaan kutsua vain palvelumenetelmää.
  • Se välittää pyyntö- ja vastausobjekteja
  • Tätä menetelmää ei voi ohittaa
  • Menetelmä on esitetty yllä: Se vastaa kaikkien HTTP-menetelmien eli GET, POST jne. luomisesta.

7) Tuhoa

public void _jspdestroy()
{
            //all clean up code
}
  • _jspdestroy() Säiliö kutsuu myös menetelmän
  • Tätä menetelmää kutsutaan, kun säilö päättää, ettei se enää tarvitse servlet-ilmentymää palvelemaan pyyntöjä.
  • Kun tuhoamismenetelmää kutsutaan, servlet on valmis roskien keräämiseen
  • Tämä on elinkaaren loppu.
  • Voimme ohittaa jspdestroy() menetelmää, kun suoritamme siivouksen, kuten tietokantayhteyksien vapauttamisen tai avoimien tiedostojen sulkemisen.