7.1 web.xml ची सामान्य योजना

web.xml फाइल ऍप्लिकेशन कॉन्फिगरेशन माहिती संग्रहित करते. हा त्याचा अनिवार्य भाग नाही, परंतु वेब ऍप्लिकेशन कॉन्फिगर करण्यासाठी त्याचा मोठ्या प्रमाणावर वापर केला जातो.

ही फाईल WEB-INF फोल्डरमध्ये स्थित असणे आवश्यक आहे . जेव्हा टॉमकॅट सुरू होते, तेव्हा ते त्यातील सामग्री वाचते आणि त्यात असलेले कॉन्फिगरेशन वापरते. फाइलमध्ये त्रुटी असल्यास, टॉमकॅट देखील एक त्रुटी प्रदर्शित करते.

web.xml चे उदाहरण:

<?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 वर विनंत्या देऊ शकते, म्हणून वेब-xml मध्ये, सर्व्हलेट आणि URL वर त्याचे मॅपिंग स्वतंत्रपणे लिहिलेले आहे. प्रथम, आम्ही सर्व्हलेटचे वर्णन करतो, प्रत्येकाला एक अद्वितीय स्ट्रिंग नाव देतो आणि नंतर आम्ही निर्दिष्ट करतो की प्रत्येक सर्व्हलेट कोणत्या url वर कसे मॅप करते.

web.xml चे उदाहरण:

<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.xml चे उदाहरण:

<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:

  • applicationcom.codegym.App मूल्यासह
  • widgetsetcom.codegym.WidgetSet मूल्यासह
  • uicom.codegym.AppUI मूल्यासह

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

वेब अनुप्रयोगात विशेष देखील असू शकते utility servlets - filters. ते विविध सेवा कार्ये करतात: कॉल पुनर्निर्देशित करणे, अधिकृतता तपासणे इ.

web.xml चे उदाहरण:

<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. हे फिल्टर आमच्या वेब ऍप्लिकेशनवर जाणाऱ्या सर्व विनंत्या रोखण्यासाठी कॉन्फिगर केले आहे. हे ज्यावर मॅप केले आहे त्या url टेम्पलेटद्वारे हे स्पष्टपणे सूचित केले आहे: /*.

आपण खालील व्याख्यानांमध्ये सर्व्हलेट्स आणि फिल्टर्सबद्दल अधिक वाचू शकाल.