CodeGym/Java Course/Module 3/web.xml-structuur

web.xml-structuur

Beschikbaar

7.1 Algemeen schema van web.xml

In het bestand web.xml wordt informatie over de toepassingsconfiguratie opgeslagen. Het is er geen verplicht onderdeel van, maar wordt wel heel veel gebruikt om een ​​webapplicatie te configureren.

Dit bestand moet zich in de map WEB-INF bevinden . Wanneer Tomcat opstart, leest het de inhoud en gebruikt het de configuratie die het bevat. Als het bestand fouten bevat, geeft Tomcat ook een fout weer.

Voorbeeld 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"De toewijzing van de servletnaam en de servletklasse wordt hier in het groen weergegeven"HelloServlet" . De mapping van de servletnaam en de URL - chunk is in blauw geschreven"HelloWorld""http://localhost/welcome" . Hier staat dus dat wanneer u het pad /welcome opent, u de servlet moet aanroepen HelloServlet.class.

De rode kleur geeft het bestand aan dat op verzoek moet worden verstrekt http://localhost/- dit is de zogenaamde welkomstpagina . Als de gebruiker gewoon in de browser de naam typt die overeenkomt met de root van onze webapplicatie, dan wordt de inhoud van het index.html.

7.2 servlet, servlet-mapping

Eén servlet kan verzoeken op verschillende URL's verwerken, dus in web-xml worden de servlet en de toewijzing ervan aan URL's afzonderlijk geschreven. Eerst beschrijven we de servlets, waarbij we elk een unieke tekenreeksnaam geven, en vervolgens specificeren we hoe elke servlet naar welke URL verwijst.

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

In dit voorbeeld worden twee servlets gedeclareerd en elk wordt toegewezen aan een ander URL-sjabloon. De servlet RemotingServletbedient alle verzoeken die naar/remoting/* . De servlet RestApiServletbedient alle verzoeken die naar/api/* . Servlets hebben ook de volgorde van laden - de load-on-startup-parameter.

7.3 Servlet-opties

Met behulp van web.xml kunnen tijdens de initialisatie parameters aan de servlet worden doorgegeven, ze zullen beschikbaar zijn via de interface ServletConfig. U kunt ook parameters instellen voor de gehele webapplicatie, deze zijn beschikbaar via de ServletContext.

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

De groen gemarkeerde code is waar we de parameters voor instellenServletContext . Er zijn er twee:

  • productionModemet waarde onwaar
  • appPropertiesConfigmet een array van twee strings:
    • classpath:local-app.properties
    • classpath:web-app.properties

De parameters voor de servlet zijn blauw aangegevenApplicationServlet en zijn beschikbaar via ServletConfig:

  • applicationmet waarde com.codegym.App
  • widgetsetmet waarde com.codegym.WidgetSet
  • uimet waarde com.codegym.AppUI

7.4 filter, filtermapping

De webapplicatie kan ook speciale utility servlets - filters. Ze voeren verschillende servicetaken uit: oproepen doorverbinden, autorisatie controleren, enz.

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

Voordat het verzoek de servlet bereikt RemotingServlet, wordt het door het filter verwerkt TotalFiler. Dit filter is geconfigureerd om alle verzoeken die naar onze webapplicatie gaan te onderscheppen. Dit wordt duidelijk aangegeven door de url-template waaraan het is toegewezen: /*.

In de volgende colleges leest u meer over servlets en filters.

Opmerkingen
  • Populair
  • Nieuw
  • Oud
Je moet ingelogd zijn om opmerkingen te kunnen maken
Deze pagina heeft nog geen opmerkingen