Cykl życia JSP

Co to jest cykl życia JSP?
Cykl życia JSP definiuje się jako translację strony JSP na serwlet, ponieważ strona JSP musi zostać najpierw przekonwertowana na serwlet, aby móc przetworzyć żądania usług. Cykl życia rozpoczyna się wraz z utworzeniem JSP i kończy się jej rozpadem.
Różne fazy cyklu życia JSP
Kiedy przeglądarka pyta o stronę JSP, silnik JSP najpierw sprawdza, czy konieczne jest skompilowanie strony. Jeśli strona JSP została skompilowana jako ostatnia lub ostatnia modyfikacja została dokonana w JSP, silnik JSP kompiluje stronę.
Proces kompilacji strony JSP składa się z trzech kroków:
- Parsowanie JSP
- Przekształcanie JSP w serwlet
- Kompilacja serwletu
Diagram cyklu życia JSP
Cykl życia JSP przedstawiono na poniższym diagramie.
Poniższe kroki wyjaśniają cykl życia JSP:
- Tłumaczenie strony JSP
- Kompilacja strony JSP (Kompilacja strony JSP do _jsp.java)
- Ładowanie klas (_jsp.java jest konwertowany do pliku klasy _jsp.class)
- Tworzenie instancji (tworzony jest obiekt wygenerowanego serwletu)
- Inicjalizacja(
_jspinit()metoda jest wywoływana przez kontener) - Przetworzenie żądania (
_jspservice()metoda jest wywoływana przez kontener) - Zniszcz (
_jspDestroy()metoda wywoływana przez kontener)
Przyjrzyjmy się bardziej szczegółowemu podsumowaniu powyższych punktów:
1) Tłumaczenie strony JSP:
A Java plik serwletu jest generowany z pliku źródłowego JSP. Jest to pierwszy etap cyklu życia JSP. W fazie tłumaczenia kontener sprawdza poprawność składniową stron JSP i plików znaczników.
- Kontener JSP interpretuje standardowe dyrektywy i akcje oraz akcje niestandardowe odwołujące się do bibliotek tagów (wszystkie są częścią strony JSP i zostaną omówione w dalszej części) używane na tej stronie JSP.
- W powyższym obrazkowym opisie w pierwszym kroku plik demo.jsp jest tłumaczony na demo_jsp.java
- Weźmy przykład „demo.jsp”, jak pokazano poniżej:
Demo.jsp
<html> <head> <title>Demo JSP</title> </head> <% int demvar=0;%> <body> Count is: <% Out.println(demovar++); %> <body> </html>
Code Wyjaśnienie dla Demo.jsp
Code linia 1: znacznik początkowy HTML
Code linia 2: Etykieta na głowę
Code Linia 3 – 4: Tag tytułu, tj. Demo JSP i tag zamykający
Code Linia 5 – 6: Znacznik skryptletu, w którym inicjuje się demo zmiennej
Code Linia 7 – 8: W znaczniku treści tekst, który ma zostać wydrukowany na wyjściu (liczba to: )
Code Linia 9: Znacznik skryptowy, w którym próbuje się wydrukować zmienną demovar ze zwiększoną wartością
Code Linia 10 – 11: Treść i tagi HTML zostały zamknięte
W poniższym kodzie strona demonstracyjna JSP została przekonwertowana na serwlet demo_jsp.
Code wyjaśnienie dla Demo_jsp.java
Code linia 1: Klasa serwletu demo_jsp rozszerza klasę nadrzędną HttpServlet
Code Linia 2 – 3: Zastąpienie metody usługi jsp, tj. _jspservice, której parametrami są obiekty HttpServletRequest i HttpServletResponse
Code linia 4: Metoda otwierania
Code linia 5: Wywołanie metody getWriter() obiektu odpowiedzi, aby uzyskać wydrukWriterobiekt (drukuje sformatowaną reprezentację obiektów do strumienia wyjściowego tekstu)
Code linia 6: Wywołanie metody setContentType obiektu odpowiedzi w celu ustawienia typu zawartości
Code linia 7: Za pomocą write() metoda drukuWriter obiekt próbujący przeanalizować kod HTML
Code linia 8: Inicjowanie zmiennej demovar na 0
Code linia 9: Dzwonię write() metoda drukuWriter obiekt do analizy tekstu
Code linia 10: Dzwonię print() metoda drukuWriter obiekt, aby zwiększyć zmienną demovar od 0+1=1. W związku z tym wyjście będzie wynosić 1
Code linia 11: Za pomocą write() metoda drukuWriter obiekt próbujący przeanalizować kod HTML
Wyjście:
- Tutaj możesz zobaczyć, że na zrzucie ekranu wartość wyjściowa wynosi 1, ponieważ demvar jest inicjowany na 0, a następnie zwiększany do 0+1=1
W powyższym przykładzie
- demo.jsp to strona JSP, w której inicjowana jest i zwiększana jedna zmienna. Ta strona JSP jest konwertowana na serwlet (demo_jsp.class ), podczas którego silnik JSP ładuje stronę JSP i konwertuje ją na zawartość serwletu.
- Po konwersji cały tekst szablonu jest konwertowany na
println()wypowiedzi i tyle Elementy JSP są konwertowane na Java kod.
W ten sposób prosta strona JSP jest tłumaczona na klasę serwletu.
2) Kompilacja strony JSP
- Wygenerowany plik serwletu Java jest kompilowany do klasy serwletu Java
- Tłumaczenie strony źródłowej Java na jej klasę implementacji może nastąpić w dowolnym momencie pomiędzy wdrożeniem strony JSP w kontenerze a przetworzeniem strony JSP.
- W powyższym obrazkowym opisie demo_jsp.java jest skompilowany do pliku klasy demo_jsp.class
3) Ładowanie klas
- Klasa serwletu, która została załadowana ze źródła JSP, jest teraz ładowana do kontenera
4) Instancja
- W tym kroku generowany jest obiekt, czyli instancja klasy.
- Kontener zarządza jedną lub większą liczbą instancji tej klasy w odpowiedzi na żądania i inne zdarzenia. Zazwyczaj kontener JSP jest budowany przy użyciu kontenera serwletów. Kontener JSP jest rozszerzeniem kontenera serwletów, ponieważ zarówno kontener obsługuje JSP, jak i serwlet.
- Interfejs JSPPage udostępniany przez kontener
init()orazdestroy()Metody. - Istnieje interfejs HttpJSPPage, który obsługuje żądania HTTP i zawiera także metodę usługi.
5) Inicjalizacja
public void jspInit()
{
//initializing the code
}
_jspinit()metoda zainicjuje instancję serwletu, która została wygenerowana z JSP i zostanie wywołana przez kontener w tej fazie.- Po utworzeniu instancji metoda init zostanie wywołana natychmiast po tym
- Jest wywoływana tylko raz w cyklu życia strony JSP, a metoda inicjalizacji jest deklarowana w sposób pokazany powyżej
6) Przetworzenie żądania
void _jspservice(HttpServletRequest request HttpServletResponse response)
{
//handling all request and responses
}
_jspservice()metoda jest wywoływana przez kontener dla wszystkich żądań zgłaszanych przez stronę JSP w jej cyklu życia- W tej fazie musi przejść przez wszystkie powyższe fazy, a następnie można wywołać tylko metodę usługi.
- Przekazuje obiekty żądań i odpowiedzi
- Tej metody nie można zastąpić
- Metodę pokazano powyżej: Odpowiada za generowanie wszystkich metod HTTP tj. GET, POST itp.
7) Zniszcz
public void _jspdestroy()
{
//all clean up code
}
_jspdestroy()metoda jest również wywoływana przez kontener- Ta metoda jest wywoływana, gdy kontener zdecyduje, że nie potrzebuje już instancji serwletu do obsługi żądań.
- Kiedy zostanie wykonane wywołanie metodyzniszczenia, serwlet jest gotowy do wyczyszczenia pamięci
- To koniec cyklu życia.
- Możemy zastąpić
jspdestroy()metoda, gdy wykonujemy jakiekolwiek czyszczenie, takie jak zwalnianie połączeń z bazą danych lub zamykanie otwartych plików.



