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>

Code Selitys tiedostolle Demo.jsp

Code line 1: html-aloitustunniste

Code line 2: Head tag

Code Rivi 3โ€“4: Title Tag eli Demo JSP ja sulkeva head tag

Code Rivi 5โ€“6: Scriptlet-tunniste, jossa alustetaan muuttujan esittely

Code Rivi 7โ€“8: body tagissa tulosteeseen tulostettava teksti (mรครคrรค on: )

Code Rivi 9: Scriplet-tunniste, johon yritetรครคn tulostaa muuttuja demovar lisรคtyllรค arvolla

Code Rivi 10โ€“11: Body- ja HTML-tagit suljettu

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

JSP:n elinkaari

Code Demo_jsp.java-tiedoston selitys

Code line 1: Servlet-luokka demo_jsp laajentaa ylรคluokkaa HttpServlet

Code Rivi 2โ€“3: jsp:n palvelumenetelmรคn ohittaminen eli _jspservice, jonka parametreina on HttpServletRequest- ja HttpServletResponse-objektit

Code line 4: Avaustapa

Code line 5: Menetelmรคn kutsuminen getWriter() vastausobjektista, josta saat tulosteenWriterobjekti (tulostaa objektien muotoillun esityksen tekstimuotoon)

Code line 6: Vastausobjektin setContentType-menetelmรคn kutsuminen sisรคltรถtyypin mรครคrittรคmiseksi

Code line 7: Kรคytรถssรค write() tulostusmenetelmรคWriter objekti yrittรครค jรคsentรครค html:รครค

Code line 8: Alustetaan demovar-muuttuja nollaan

Code line 9: Kutsumus write() tulostusmenetelmรคWriter objekti tekstin jรคsentรคmiseksi

Code line 10: Kutsumus print() tulostusmenetelmรคWriter objektia, joka kasvattaa demovar-muuttujaa arvosta 0+1=1. Nรคin ollen tuloste on 1

Code line 11: Kรคytรถssรค write() tulostusmenetelmรคWriter 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.

Tiivistรค tรคmรค viesti seuraavasti: