Java >> Java tutorial >  >> Java

Java Servlet livscyklus

Servlet-beholder, som også kaldes som webcontainer eller servlet-motor, er ansvarlig for at håndtere en servlets levetid. Den opretter servlet'en, initialiserer servlet'en og gør den klar til at betjene klientens anmodninger og ødelægger til sidst servlet'en, når den ikke længere er påkrævet. Servlet-beholderen er inde i webserveren. I dette indlæg vil vi se Java Servlets livscyklus i detaljer.

Java Servlet livscyklus:

En servlets liv går gennem fem faser. Det er de,

  1. Indlæsning af Servlet
  2. Instantiering af Servlet
  3. Ringer til init() metode
  4. Ringer til service() metode
  5. Ringer til destroy() metode

Lad os se disse stadier én efter én.

1) Indlæsning af Servlet

Da servlet ikke er andet end en Java-klasse, som alle andre Java-klasser, indlæses servlets også i hukommelsen først. Som standard indlæses en servlet, når den modtager den første anmodning fra klienten. Du kan lave en servlet til at indlæse, så snart servlet-beholderen starter ved at nævne <load-on-startup> parameter i web.xml servlet-konfigurationsfil. Det tager et tal som en værdi. En servlet med det laveste nummer indlæses først.

Nedenfor er web.xml fileksempel hvor MyServlet vil blive indlæst, så snart servlet-beholderen startes. Den vil være den første til at indlæse, da den har det lavest mulige antal. Hvis du ikke nævner <load-on-startup> parameter, så indlæses servlet'en, når den modtager den første anmodning fra klienten.

<web-app>
 
  <servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>javaconceptoftheday.servletExamples.MyServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/callMyServlet</url-pattern>
  </servlet-mapping>

</web-app>

En servlet indlæses kun én gang i sin levetid.

2) Instantiering af Servlet

Når servlet'en er indlæst i hukommelsen, opretter servletbeholderen en forekomst af den servlet. I det meste af tiden oprettes kun én instans af servlet'en, og flere anmodninger til servlet'en håndteres kun af denne instans. Servlet-container kalder no-arg-konstruktøren for at oprette en instans af servlet'en. Kun servletcontainer kan oprette instans til servlet'en. Det er ikke muligt at instansiere servlet'en af ​​andre klasser.

3) Kalder init()-metoden

Efter en instans er oprettet til servlet'en, kalder servletcontainer init() metode i det tilfælde. Denne metode udføres kun én gang i en servlets livscyklus. Servlet-beholder initialiserer servlet'en gennem denne metode, før en servlet begynder at betjene klientens anmodninger. Det er obligatorisk at udføre denne metode korrekt, før klientens anmodninger betjenes.

Da denne metode kaldes i begyndelsen af ​​servlet'ens livscyklus, og det også kun én gang i dens levetid, kan du bruge denne metode til at udføre nogle tidlige engangs-udførelsesopgaver som databaseforbindelse eller initialisering af andre parametre, før servlet faktisk begynder at tjene klienten anmoder.

4) Opkaldstjeneste()-metode

Efter init()-metoden er udført korrekt, er servlet nu klar til at betjene klientens anmodninger. Servlet container kalder denne metode, hver gang der sendes en anmodning til en servlet. Så denne metode udføres flere gange i en servlets livscyklus. For Http-anmodninger, tilsvarende doGet() , doPost() osv. metoder kaldes. En servlet er klar til at betjene klientens anmodninger, indtil den er aktiv i servletbeholderen.

Da denne metodes hovedformål er at betjene klientens anmodning, skal du beholde kernefunktionerne i servlet'en i denne metode.

5) Kalder destroy()-metoden

Når alle klientens anmodninger er betjent af servlet'en, og servlet ikke længere er påkrævet, kalder servletcontainer destroy() metode på den servlet. destroy()-metoden giver mulighed for at frigøre de ressourcer, som servlet'en har.

Denne metode kaldes kun én gang i en servlets livscyklus. Når først den er kaldt, er en servlet ikke mere aktiv og vil ikke være i stand til at betjene kundens anmodninger. Når denne metode er udført, bliver en servlet berettiget til affaldsopsamling.


Java tag