CodeGym/Java Course/मॉड्यूल 3/सर्व्हलेट सेटअप

सर्व्हलेट सेटअप

उपलब्ध

init() पद्धत

आणि इतर काही उपयुक्त छोट्या गोष्टी. अर्थात, मी सर्वलेट इनिशिएलायझेशनबद्दल बोलत आहे. तुम्हाला आधीच माहित आहे की, वेब सर्व्हरने सर्व्हलेट ऑब्जेक्ट तयार केल्यानंतर आणि कंटेनरमध्ये ठेवल्यानंतर, ते सर्व्हलेटच्या init() पद्धतीला कॉल करते . तुम्ही ही पद्धत ओव्हरराइड करू शकता आणि तुम्हाला त्यामध्ये जे आवश्यक आहे ते सुरू करू शकता.

कन्स्ट्रक्टर का वापरत नाही?

कारण सर्व्हलेट तयार करण्याची प्रक्रिया असे काहीतरी होते:

  • आम्ही वारशाने मिळालेली वस्तू तयार करतोHttpServlet
  • एक ऑब्जेक्ट तयार करासर्व्हलेट कॉन्टेक्स्ट, त्याचे सर्वलेट व्हेरिएबल जोडा
  • एक ऑब्जेक्ट तयार करासर्व्हलेट कॉन्फिग, त्याचे सर्वलेट व्हेरिएबल जोडा
  • वेब सर्व्हर कंटेनरला सर्व्हलेट संलग्न करतो
  • init() पद्धतीला कॉल करत आहे

तुमच्या सर्व्हलेटच्या कन्स्ट्रक्टरमध्ये, त्याचे बरेच अंतर्गत व्हेरिएबल्स अद्याप सुरू झालेले नाहीत. कंटेनरला तुमच्या सर्व्हलेटबद्दल काहीही माहिती नसते, तुमच्या सर्व्हलेटला त्याच्या संदर्भाबद्दल काहीही माहिती नसते. मला वाटते की येथे सर्वकाही स्पष्ट आहे.

चला एक सर्व्हलेट लिहूया, जे प्रारंभ केल्यावर, सेटिंग्जसह गुणधर्म फाइल शोधते:

public class PropertiesServlet extends HttpServlet {
    public init() {
         try (InputStream input = new FileInputStream("c:/path/to/config.properties")) {

             Properties prop = new Properties();
             prop.load(input);

             String databaseURL = prop.getProperty("db.url");
             String databaseUser = prop.getProperty("db.user ");
             String databasePassword = prop.getProperty("db.password");
	 }
  }
}

येथे आपण एक ऑब्जेक्ट तयार करतोगुणधर्मआणि त्यात config.properties फाईलमधील डेटा लोड करा . बरं, भविष्यात आपण ऑब्जेक्टमधून बाहेर पडू शकतागुणधर्मडेटाबेसमध्ये प्रवेश करण्यासाठी डेटासारखे विविध पर्याय, उदा.

गुणधर्म फाइल योग्यरित्या कशी लोड करावी

तसे, जर तुमचा सर्व्हलेट तुमच्या कॉम्प्युटरवर चालू नसेल तर?

समजा त्यांनी ते इथे लिहिले आहे आणि ते जगाच्या दुसऱ्या भागात कुठेतरी सर्व्हरवर चालते. किंवा एकाधिक सर्व्हर. या प्रकरणात गुणधर्म फाइल योग्यरित्या कशी लोड करावी?

चांगला प्रश्न. साधारणपणे, चालत असताना, सर्व्हलेटला फक्त त्याच्या गुणधर्म फाइल्सचा सापेक्ष मार्ग माहित असतो, त्याचा परिपूर्ण मार्ग नाही, कारण सर्व्हलेट वॉर फाइल्स कुठेही संग्रहित केल्या जाऊ शकतात.

म्हणून, आम्हाला आमचा सर्व्हलेट कुठे संग्रहित केला आहे ते शोधून काढणे आवश्यक आहे (सर्व्हलेट आधीच सुरू केलेले आहे) आणि त्यात एक सापेक्ष मार्ग जोडला पाहिजे :)

हे असे काहीतरी दिसते:

String path = absoluteServletParh + "relative path";

आणि, नेहमीप्रमाणे, अशा प्राथमिक कार्याचे स्वतःचे थोडेसे "पण" असते. तुमची सर्व्हलेट आणि त्याची गुणधर्म फाइल संग्रहणात साठवली जातात :) आवश्यक नाही, अर्थातच, परंतु असे घडते. गुणधर्म फाइल बर्‍याचदा जार किंवा युद्ध फायलींमध्ये संग्रहित केली जाते.

म्हणजेच, डिस्कवर तुमच्या फाइलचा भौतिक मार्ग नसू शकतो. परंतु कंटेनर तुमची सर्व्हलेट लोड करण्यास सक्षम असल्याने, ते बहुधा तुमची गुणधर्म फाइल देखील लोड करण्यास सक्षम असेल.

हे करण्यासाठी, तुम्हाला क्लास लोडर ऑब्जेक्ट (क्लासलोडर) आणि त्याला तुमची फाइल अपलोड करण्यास सांगा. ते कसे दिसेल ते येथे आहे:

ClassLoader loader = Thread.currentThread().getContextClassLoader();
InputStream stream = loader.getResourceAsStream("/config.properties");

Properties prop = new Properties();
prop.load(stream);

getConfig() पद्धत

तसे, गुणधर्म फाइल्समधील सर्व पॅरामीटर्स सर्व्हलेटमध्ये पास केले जाऊ शकत नाहीत. उदाहरणार्थ, तुमचे सर्व्हलेट वितरित वेब ऍप्लिकेशनमधील इतर सर्वलेटशी संवाद साधते.

नंतर जेव्हा कंटेनर त्याची init() पद्धत कॉल करते तेव्हा सर्व आवश्यक माहिती तुमच्या सर्वलेटला पुरवते याची खात्री करणे आवश्यक आहे . शिवाय, तो तेच करतो.

तुमच्या सर्व्हलेटमध्ये (लक्षात ठेवा की ते HttpServlet वर्गाकडून वारशाने मिळालेले आहे ) मध्ये getServletConfig() पद्धत आहे . जे ऑब्जेक्ट परत करतेसर्व्हलेट कॉन्फिग, कंटेनरद्वारे तयार केले आणि आरंभ केले. या ऑब्जेक्टमध्ये खालील पद्धती आहेत:

getInitParameterNames() सर्व्हलेट पॅरामीटर नावांची सूची मिळवते
getInitParameter(स्ट्रिंग नाव) सर्व्हलेट पॅरामीटर त्याच्या नावाने मिळवते
getServletName() सर्व्हलेटचे स्वतःचे नाव परत करते
getServletContext() वस्तू परत करतेसर्व्हलेट कॉन्टेक्स्ट

चला एक सर्व्हलेट लिहू जे त्याच्या पॅरामीटर्सची यादी देतेसर्व्हलेट कॉन्फिग'ए. त्यांना तेथे ठेवणे web.xml फाइलद्वारे असेल:

	<web-app> 
 	
        <servlet> 
            <servlet-name>Print-Servlet</servlet-name> 
            <servlet-class>PrintServlet</servlet-class> 
            <init-param> 
                <param-name>jdbc-driver</param-name> 
    	        <param-value>sun.jdbc.odbc.JdbcOdbcDriver</param-value> 
	        </init-param> 
        </servlet> 
  	
        <servlet-mapping> 
            <servlet-name>Print-Servlet</servlet-name> 
            <url-pattern>/print</url-pattern> 
        </servlet-mapping> 
  	
    </web-app>

सर्व्हलेट कोड वापरून त्याचे पॅरामीटर्स मिळवू शकते:

public class PrintServlet extends HttpServlet {
    public void init() {
        ServletConfig config = this.getServletConfig();
        Enumeration<String> initParameterNames = config.getInitParameterNames();

        while (initParameterNames.hasMoreElements()){
       	     String key = initParameterNames.nextElement();
             System.out.println("%s: %s\n", key, config.getInitParameter(key));
    	}
  }
}
टिप्पण्या
  • लोकप्रिय
  • नवीन
  • जुने
टिप्पणी करण्यासाठी तुम्ही साईन इन केलेले असणे आवश्यक आहे
या पानावर अजून कोणत्याही टिप्पण्या नाहीत