Feedback Form

init() Method: One-Time Initialization and ServletConfig Usage

init() Method: One-Time Initialization and ServletConfig Usage

Introduction

जब हम Java Servlets के बारे में पढ़ते हैं, तो init() method एक बहुत ही important role निभाता है। यह method servlet lifecycle का पहला major phase होता है जहाँ servlet class को initialize किया जाता है। इसका main purpose होता है servlet को load होते समय initial setup करना — जैसे database connection, configuration reading, या कोई startup task perform करना।

साधारण शब्दों में कहें तो init() method वो जगह है जहाँ servlet अपना “one-time initialization” काम करता है ताकि बाद में आने वाले हर request को efficiently handle कर सके।

Servlet Lifecycle Overview

Servlet lifecycle चार main steps में divide होता है — Loading, Initialization, Request Handling, और Destruction। जब server servlet को पहली बार load करता है, तो वो servlet class का object बनाता है और फिर init() method call करता है।

Lifecycle इस प्रकार चलता है:

  • Loading and Instantiation: Servlet class को memory में load किया जाता है।
  • Initialization (init()): Servlet को initial setup tasks करने के लिए कहा जाता है।
  • Request Handling (service()): हर client request के लिए service() method execute होता है।
  • Destruction (destroy()): Servlet बंद होने से पहले resources free करता है।

Definition of init() Method

init() method servlet initialization के लिए responsible होता है। यह method servlet container (जैसे Tomcat) द्वारा automatically call किया जाता है जब servlet पहली बार load होता है। यह सिर्फ एक बार execute होता है, चाहे कितनी भी requests आएँ।

इसका basic syntax कुछ इस प्रकार होता है:

public void init() throws ServletException { // initialization code }

यह method javax.servlet.Servlet interface का हिस्सा है और GenericServlet या HttpServlet classes में override किया जा सकता है।

Why init() Method is Used?

init() method का उपयोग mainत: servlet के start होने पर initial tasks करने के लिए किया जाता है। हर बार जब servlet को call किया जाता है, तो उसे बार-बार initialize करने की जरूरत नहीं होती। इसलिए init() method one-time setup के लिए ideal होता है।

कुछ common uses:

  • Database connection establish करना
  • Configuration parameters read करना
  • File resources load करना
  • Logging या monitoring system setup करना

Example: Simple init() Method Implementation

नीचे एक basic example दिया गया है जहाँ servlet initialization के दौरान कुछ configuration parameters load किए जा रहे हैं।

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyInitServlet extends HttpServlet { private String message; public void init() throws ServletException { message = "Welcome to Servlet Initialization!"; System.out.println("Servlet is initialized"); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<h2>" + message + "</h2>"); } }

ऊपर दिए गए code में, init() method सिर्फ एक बार call होता है जब servlet load होता है। उसके बाद जब भी browser request भेजता है, तो doGet() method execute होता है।

ServletConfig Usage

अब बात करते हैं ServletConfig की — यह एक special interface है जो servlet को initialization parameters provide करता है। हर servlet का अपना ServletConfig object होता है, जिसके ज़रिए web.xml file में defined parameters को access किया जा सकता है।

ServletConfig का Purpose

जब किसी servlet को run-time पर dynamic data चाहिए (जैसे database credentials या file path), तो उसे hard-code करने की बजाय web.xml file में define किया जा सकता है। ServletConfig object इन parameters को servlet तक पहुँचाने का काम करता है।

ServletConfig Methods

ServletConfig interface में कुछ useful methods होते हैं:

Method Description
getInitParameter(String name) दिए गए parameter name का value return करता है।
getInitParameterNames() सभी parameter names की list return करता है।
getServletName() Servlet का logical name return करता है।
getServletContext() ServletContext object return करता है जिससे application-level info मिलती है।

Example: ServletConfig का Practical Use

मान लीजिए आपको database connection details web.xml file से servlet में लानी हैं। नीचे उसका example दिया गया है:

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class DBConfigServlet extends HttpServlet { String driver, url, username, password; public void init(ServletConfig config) throws ServletException { driver = config.getInitParameter("dbDriver"); url = config.getInitParameter("dbURL"); username = config.getInitParameter("dbUser"); password = config.getInitParameter("dbPassword"); } public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { res.setContentType("text/html"); PrintWriter out = res.getWriter(); out.println("<h3>Database Configuration Details</h3>"); out.println("Driver: " + driver + "<br>"); out.println("URL: " + url + "<br>"); out.println("Username: " + username + "<br>"); } }

इस servlet में, web.xml में दिए गए initialization parameters को config.getInitParameter() के माध्यम से access किया गया है।

web.xml Configuration

उपरोक्त servlet को configure करने के लिए web.xml इस प्रकार होगा:

<web-app> <servlet> <servlet-name>DBConfigServlet</servlet-name> <servlet-class>DBConfigServlet</servlet-class> <init-param> <param-name>dbDriver</param-name> <param-value>com.mysql.jdbc.Driver</param-value> </init-param> <init-param> <param-name>dbURL</param-name> <param-value>jdbc:mysql://localhost:3306/mydb</param-value> </init-param> <init-param> <param-name>dbUser</param-name> <param-value>root</param-value> </init-param> <init-param> <param-name>dbPassword</param-name> <param-value>12345</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>DBConfigServlet</servlet-name> <url-pattern>/dbconfig</url-pattern> </servlet-mapping> </web-app>

Relation Between init() and ServletConfig

ServletConfig object हमेशा servlet के साथ associate रहता है और servlet के init(ServletConfig config) method के माध्यम से pass किया जाता है। इसका मतलब है कि जब servlet initialize होता है, तो उसे तुरंत ही configuration parameters access करने की सुविधा मिल जाती है।

Servlet container internally ऐसा करता है:

Servlet myServlet = new DBConfigServlet(); ServletConfig config = new ServletConfigImpl(); myServlet.init(config);

इससे servlet अपने configuration data को use करके initial setup कर लेता है — जैसे database connection या resource allocation।

Advantages of init() and ServletConfig

  • Efficiency: Initialization केवल एक बार होती है, जिससे performance improve होती है।
  • Configurability: Parameters को बिना code बदले web.xml में edit किया जा सकता है।
  • Maintainability: Hard-coded data हट जाता है, जिससे code maintain करना आसान होता है।
  • Flexibility: अलग-अलग servlets को अलग initialization data दिया जा सकता है।

Key Points to Remember

  • init() method केवल एक बार call होता है जब servlet पहली बार load होता है।
  • ServletConfig का use configuration parameters access करने के लिए किया जाता है।
  • ServletConfig object servlet container द्वारा automatically provide किया जाता है।
  • Performance बढ़ाने के लिए initialization tasks init() में ही करने चाहिए।

Exam Notes (Quick Revision Points)

  • init() method: Servlet initialization के लिए use होता है (one-time execution)।
  • ServletConfig: Initialization parameters को servlet तक पहुँचाने का काम करता है।
  • Call Timing: init() method servlet load होते ही call होता है।
  • Important Methods: getInitParameter(), getServletName(), getServletContext()
  • web.xml role: Initialization parameters define करता है।
  • Lifecycle Order: init() → service() → destroy()