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 టెంప్లేట్ ద్వారా ఇది స్పష్టంగా సూచించబడింది: /*.

మీరు క్రింది ఉపన్యాసాలలో సర్వ్‌లెట్‌లు మరియు ఫిల్టర్‌ల గురించి మరింత చదువుతారు.