Serwlety - cykl życia

Cykl życia serwletu można zdefiniować jako cały proces od jego utworzenia do zniszczenia. Poniżej przedstawiono ścieżki, którymi podąża serwlet.

  • Aplet jest inicjowany przez wywołanie init() metoda.

  • Serwlet woła service() metoda przetwarzania żądania klienta.

  • Aplet jest przerywany przez wywołanie destroy() metoda.

  • Na koniec serwlet jest zbierany przez moduł odśmiecania pamięci maszyny JVM.

Omówmy teraz szczegółowo metody cyklu życia.

Metoda init ()

Metoda init jest wywoływana tylko raz. Jest wywoływana tylko podczas tworzenia serwletu i nie jest wywoływana później w przypadku żądań użytkownika. Jest więc używany do jednorazowych inicjalizacji, tak jak w przypadku metody init apletów.

Aplet jest zwykle tworzony, gdy użytkownik po raz pierwszy wywołuje adres URL odpowiadający serwletowi, ale można również określić, że serwlet ma być ładowany przy pierwszym uruchomieniu serwera.

Kiedy użytkownik wywołuje serwlet, tworzona jest pojedyncza instancja każdego serwletu, a każde żądanie użytkownika skutkuje nowym wątkiem, który jest przekazywany odpowiednio do funkcji doGet lub doPost. Metoda init () po prostu tworzy lub ładuje pewne dane, które będą używane przez cały okres istnienia serwletu.

Definicja metody init wygląda następująco -

public void init() throws ServletException {
   // Initialization code...
}

Metoda service ()

Metoda service () jest główną metodą wykonywania rzeczywistego zadania. Kontener serwletów (tj. Serwer WWW) wywołuje metodę service () w celu obsługi żądań przychodzących od klienta (przeglądarek) i zapisania sformatowanej odpowiedzi z powrotem do klienta.

Za każdym razem, gdy serwer otrzymuje żądanie dotyczące serwletu, tworzy nowy wątek i wywołuje usługę. Metoda service () sprawdza typ żądania HTTP (GET, POST, PUT, DELETE itp.) I odpowiednio wywołuje metody doGet, doPost, doPut, doDelete itp.

Oto podpis tej metody -

public void service(ServletRequest request, ServletResponse response) 
   throws ServletException, IOException {
}

Metoda service () jest wywoływana przez kontener, a metoda service wywołuje odpowiednie metody doGet, doPost, doPut, doDelete itp. Nie masz więc nic wspólnego z metodą service (), ale nadpisujesz metodę doGet () lub doPost () w zależności od typu żądania, które otrzymujesz od klienta.

DoGet () i doPost () to najczęściej używane metody w każdym żądaniu usługi. Oto podpis tych dwóch metod.

Metoda doGet ()

Żądanie GET wynika ze zwykłego żądania adresu URL lub z formularza HTML, dla którego nie określono METODY i powinno być obsługiwane przez metodę doGet ().

public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
   // Servlet code
}

Metoda doPost ()

Żądanie POST wynika z formularza HTML, który konkretnie wymienia POST jako METODĘ i powinno być obsługiwane przez metodę doPost ().

public void doPost(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
   // Servlet code
}

Metoda niszczenia ()

Metoda zniszcz () jest wywoływana tylko raz na koniec cyklu życia serwletu. Ta metoda daje serwletowi szansę na zamknięcie połączeń z bazą danych, zatrzymanie wątków w tle, zapisanie list plików cookie lub liczby trafień na dysk oraz wykonanie innych czynności związanych z czyszczeniem.

Po wywołaniu metody zniszcz () obiekt serwletu jest oznaczany do czyszczenia. Definicja metody Destroy wygląda następująco -

public void destroy() {
   // Finalization code...
}

Schemat architektury

Poniższy rysunek przedstawia typowy scenariusz cyklu życia serwletu.

  • Najpierw żądania HTTP przychodzące do serwera są delegowane do kontenera serwletów.

  • Kontener serwletów ładuje serwlet przed wywołaniem metody service ().

  • Następnie kontener serwletów obsługuje wiele żądań, tworząc wiele wątków, przy czym każdy wątek wykonuje metodę service () pojedynczej instancji serwletu.