7.1 web.xml का सामान्य स्कीमा

Web.xml फ़ाइल एप्लिकेशन कॉन्फ़िगरेशन जानकारी संग्रहीत करती है। यह इसका अनिवार्य हिस्सा नहीं है, लेकिन वेब एप्लिकेशन को कॉन्फ़िगर करने के लिए इसका बहुत व्यापक रूप से उपयोग किया जाता है।

यह फ़ाइल WEB-INF फ़ोल्डर में होनी चाहिए । जब टॉमकैट शुरू होता है, तो यह इसकी सामग्री को पढ़ता है और इसमें मौजूद कॉन्फ़िगरेशन का उपयोग करता है। यदि फ़ाइल में त्रुटियाँ हैं, तो टॉमकैट भी एक त्रुटि प्रदर्शित करता है।

उदाहरण वेब.एक्सएमएल:



<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
  http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0">
  
  <servlet>
       <servlet-name>HelloWorld</servlet-name>
       <servlet-class>HelloServlet</servlet-class>
   </servlet>
    
  <servlet-mapping>
      <servlet-name>HelloWorld</servlet-name>
      <url-pattern>/welcome</url-pattern>
  </servlet-mapping>
 
  <welcome-file-list>
      <welcome-file>index.html</welcome-file>
  </welcome-file-list>
  
</web-app>

"HelloWorld"सर्वलेट नाम और सर्वलेट क्लास की मैपिंग यहां हरे रंग में लिखी गई है"HelloServlet"सर्वलेट नाम और URL चंक की मैपिंग नीले रंग में लिखी गई है"HelloWorld""http://localhost/welcome" । इस प्रकार, यह यहाँ कहता है कि / स्वागत पथ तक पहुँचने पर, आपको सर्वलेट को कॉल करने की आवश्यकता है HelloServlet.class

लाल रंग उस फ़ाइल को इंगित करता है जिसे अनुरोध पर देने की आवश्यकता होती है http://localhost/- यह तथाकथित स्वागत पृष्ठ है । यदि उपयोगकर्ता ब्राउज़र में केवल हमारे वेब एप्लिकेशन के रूट के अनुरूप नाम टाइप करता है, तो index.html.

7.2 सर्वलेट, सर्वलेट-मैपिंग

एक सर्वलेट अलग-अलग यूआरएल पर अनुरोध कर सकता है, इसलिए वेब-एक्सएमएल में सर्वलेट और यूआरएल के लिए मैपिंग को अलग-अलग लिखा जाता है। सबसे पहले, हम सर्वलेट्स का वर्णन करते हैं, प्रत्येक को एक अद्वितीय स्ट्रिंग नाम देते हैं, और फिर हम निर्दिष्ट करते हैं कि कैसे प्रत्येक सर्वलेट किस url को मैप करता है।

उदाहरण वेब.एक्सएमएल:



<web-app>
  
  <servlet>
    <servlet-name>remoting</servlet-name>
    <servlet-class>com.codegym.RemotingServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
 
  <servlet-mapping>
    <servlet-name>remoting</servlet-name>
    <url-pattern>/remoting/*</url-pattern>
  </servlet-mapping>
 
  <servlet>
    <servlet-name>restapi</servlet-name>
    <servlet-class>com.codegym.RestApiServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
  </servlet>
 
  <servlet-mapping>
    <servlet-name>restapi</servlet-name>
    <url-pattern>/api/*</url-pattern>
  </servlet-mapping>  
 
</web-app>

इस उदाहरण में, दो सर्वलेट घोषित किए गए हैं, और प्रत्येक को एक अलग url टेम्प्लेट में मैप किया गया है। सर्वलेट RemotingServletउन सभी अनुरोधों को पूरा करता है जो/remoting/* . सर्वलेट RestApiServletउन सभी अनुरोधों को पूरा करता है जो/api/* . सर्वलेट्स में लोड करने का क्रम भी होता है - लोड-ऑन-स्टार्टअप पैरामीटर।

7.3 सर्वलेट विकल्प

Web.xml की मदद से, सर्वलेट को इसके इनिशियलाइज़ेशन के दौरान पैरामीटर पास किए जा सकते हैं, वे इंटरफ़ेस के माध्यम से उपलब्ध होंगे ServletConfig। आप संपूर्ण वेब एप्लिकेशन के लिए पैरामीटर भी सेट कर सकते हैं, वे ServletContext.

उदाहरण वेब.एक्सएमएल:



<web-app>
  <context-param>
     <description>Server production mode</description>
     <param-name>productionMode</param-name>
     <param-value>false</param-value>
  </context-param>
 
  <context-param>
     <param-name>appPropertiesConfig</param-name>
     <param-value>
        classpath:local-app.properties
        classpath:web-app.properties
     </param-value>
  </context-param>
 
  <servlet>
     <servlet-name>mainservlet</servlet-name>
     <servlet-class>com.codegym.ApplicationServlet</servlet-class>
     <init-param>
        <param-name>application</param-name>
        <param-value>com.codegym.App</param-value>
     </init-param>
     <init-param>
        <param-name>widgetset</param-name>
        <param-value>com.codegym.WidgetSet</param-value>
     </init-param>
     <init-param>
        <param-name>ui</param-name>
        <param-value>com.codegym.AppUI</param-value>
     </init-param>
  </servlet>
</web-app>

हरे रंग में हाइलाइट किए गए कोड में हम के लिए पैरामीटर सेट करते हैंServletContext । उनमें से दो:

  • productionModeमूल्य असत्य के साथ
  • appPropertiesConfigदो तार की एक सरणी के साथ:
    • classpath:local-app.properties
    • classpath:web-app.properties

सर्वलेट के मापदंडों को नीले रंग में दर्शाया गया हैApplicationServlet , वे इसके माध्यम से उपलब्ध होंगे ServletConfig:

  • applicationमूल्य com.codegym.App के साथ
  • widgetsetमूल्य com.codegym.WidgetSet के साथ
  • uiमूल्य com.codegym.AppUI के साथ

7.4 फिल्टर, फिल्टर-मैपिंग

वेब एप्लिकेशन में विशेष utility servlets - filters. वे विभिन्न सेवा कार्य करते हैं: कॉल को पुनर्निर्देशित करना, प्राधिकरण की जांच करना आदि।

उदाहरण वेब.एक्सएमएल:



<web-app>
 
  <servlet>
      <servlet-name>remoting</servlet-name>
      <servlet-class>RemotingServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
  </servlet>
 
  <servlet-mapping>
      <servlet-name>remoting </servlet-name>
      <url-pattern>/remoting/*</url-pattern>
  </servlet-mapping>
 
  <filter>
      <filter-name>total_filter</filter-name>
      <filter-class>com.javrush.TotalFilter</filter-class>
  </filter>
 
  <filter-mapping>
      <filter-name>total_filter</filter-name>
      <url-pattern>/*</url-pattern>
  </filter-mapping>
 
</web-app>

अनुरोध सर्वलेट तक पहुंचने से पहले RemotingServlet, इसे फ़िल्टर द्वारा संसाधित किया जाएगा TotalFiler। यह फ़िल्टर हमारे वेब एप्लिकेशन पर जाने वाले सभी अनुरोधों को रोकने के लिए कॉन्फ़िगर किया गया है। यह स्पष्ट रूप से यूआरएल टेम्पलेट द्वारा इंगित किया गया है जिसे इसे मैप किया गया है: /*.

आप निम्नलिखित व्याख्यानों में सर्वलेट और फिल्टर के बारे में अधिक पढ़ेंगे।