JSP (Java Server Pages) Page Life Cycle

Introduction to JSP Page Life Cycle

एक JSP page किसी normal web page की तरह process नहीं किया जाता है। एक JSP page client को show होने से पहले important phases से गुजरता है। इन phases को JSP page life cycle कहते है। JSP page life cycle एक JSP page के create होने से लेकर उसके destroy होने तक की process होती है।

जब भी client कोई request करता है तो web server file के .jsp extension के माध्यम से पहचान लेता है की ये एक JSP page के लिए request है। Client की request को process करने के लिए एक JSP page को servlet में convert करना अनिवार्य होता है।

JSP page की request प्राप्त होते ही page JSP engine को pass कर दिया जाता है। JSP engine इसे पहले एक servlet class में convert करता है और उसके बाद byte code में convert करता है। इसके बाद file को memory में load कर दिया जाता है और फिर क्रमशः jspInit(), jspService() और jspDestroy() methods call किये जाते है।

अपनी life cycle में एक JSP page निचे दी गयी 6 phases से गुजरता है।

  1. Translation - Translated into servlet class
  2. Compilation - Compiled into byte code
  3. Instantiation - Loaded into memory
  4. Initialization - jspInit() method called
  5. Servicing - jspService() method called
  6. Destruction - jspDestroy() method called

हर phase में JSP page के साथ कुछ processing की जाती है। आइये अब इन phases के बारे में detail से जानने का प्रयास करते है।

Translation Phase

Translation JSP life cycle का first phase है। जैसा की आपको पता है JSP page की request आने पर ये request JSP engine को pass की जाती है। JSP engine पहले file में JSP syntax को check करता है यदि file correct है तो इसे servlet class में translate कर दिया जाता है।

उदाहरण के लिए निचे एक JSP page और translate होने के बाद उसकी servlet class को दिया जा रहा है।

JSP Page:

<html>
<head>
<title>JSP_Demo</title>
</head>

<body>
<% out.println("Hello World") %>;
</body>

</html>

(Converted Into) Servlet Class:

public class JSP_Demo extends HttpServlet
{
   public void _jspService(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
   {
      PrintWriter out = response.getWriter();
      response.setContentType("text/html");
      out.write("<html><body>");
      out.write("Hello World");
      out.write("</body></html>");
   }

}

JSP page को translate करने से पहले JSP engine check करता है की JSP page में कोई changes हुए है या नहीं। यदि कोई changes नहीं हुए है तो JSP engine इस phase को skip कर देता है।

Changes को detect करने के लिए JSP engine check करता है क्या की servlet class JSP page से पुरानी है। क्योंकि यदि कोई changes किये गए होंगे तो JSP page को नयी date के साथ save किया गया होगा। इससे JSP engine को पता चल जाता है की servlet class outdated है और इस page को वापस translate करना होगा।

Compilation Phase

JSP page life cycle का दूसरा phase compilation है। इस phase में translation phase द्वारा translate की गयी servlet class को compile किया जाता है। Compile किये जाने पर एक .class file generate होती है। ये byte code होता है।

Instantiation Phase

Byte code generate hone के बाद एक JSP page instantiation phase में आ जाता है। इस phase में .class file को memory में load किया जाता है। आप ऐसा भी कह सकते है की इस phase में .class file का object (instance) create होता है।

Initialization Phase

Class के memory में load होने के बाद एक JSP page initialization phase में enter करता है। इस phase में JSP engine द्वारा jspInit() method call किया जाता है। यह method page life cycle में सिर्फ एक ही बार call होता है।

इस method में आप वह code लिखते है जिसे JSP page के show होने से पहले execute होना है। उदाहरण के लिए JSP page के show होने से पहले आप database से connection establish कर सकते है। इस method के call होने के बाद ही एक web server response देना प्रारम्भ करता है।

इस method को programmers override भी कर सकते है। इसे override करके आप networks और database से related resources को program में initialize कर सकते है। इस method का general syntax निचे दिया जा रहा है।

public void jspInit()
{
     //code to be executed    
}

Servicing

Request को response देने के लिए JSP engine द्वारा jspService() method call किया जाता है। ये method JSP engine के container component द्वारा generate किया जाता है। इस method में शुरआती underscore () का मतलब होता है की आप इस method को override नहीं कर सकते है। आपके द्वारा लिखा गया JSP code इसी method में जाता है। इस method का general syntax निचे दिया जा रहा है।

public void _jspService(HttpServlet request, HttpServlet response) throws IOException, ServletException
{
    // JSP code that you write with some other code
}

Destruction

JSP page life cycle की आखरी phase destruction है। इस phase में JSP engine द्वारा jspDestroy method call किया जाता है। यदि JSP page यूज़ नहीं हो रहा है तो ये method call किया जाता है। इस method के द्वारा सभी network और databases resources free किये जाते है।

इस method के call होने के साथ ही एक JSP page की life cycle ख़त्म हो जाती है और page garbage collect हो जाता है। इस method को आप किसी दूसरी phase में भी call कर सकते है लेकिन इससे पहले _jspService() method जरूर call होता है। इस method का general syntax निचे दिया जा रहा है।

public void jspDestroy()
{
       //code to be executed
}