JSP:n 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.
Seuraavat vaiheet selittรคvรคt JSP:n elinkaaren:
- Kรครคnnรถs JSP-sivulta
- JSP-sivun kรครคntรคminen (JSP-sivun kokoaminen tiedostoon _jsp.java)
- Classloading (_jsp.java muunnetaan luokkatiedostoksi _jsp.class)
- Instanssi (luodun servletin objekti luodaan)
- Alustus(
_jspinit()sรคilรถn kutsuma menetelmรค) - Pyynnรถn kรคsittely (
_jspservice()sรคilรถn kutsuma menetelmรค) - 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.
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รถ:
- 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()jadestroy()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.



