Frage

   <servlet-mapping>
      <servlet-name>myName</servlet-name>
      <url-pattern>/aName</url-pattern>
   </servlet-mapping>

    <security-constraint>

            <web-resource-collection>

                    ...

                    <url-pattern>
                            /*
                    </url-pattern>

            </web-resource-collection>

             ...

    </security-constraint>

Dies ist ein Auszug aus web.xml (Verwendung zu konfigurieren eine Jboss / tomcat webservice). Nur frage mich, ob die url-pattern in web-resource-collection zum url-pattern in servlet-mapping relativ ist.

War es hilfreich?

Lösung

Die url-pattern verwenden, um die Einschränkungen für eine bestimmte Anforderung wählen ist, um irgendetwas nicht relativ. Die interessanten Teile des Servlets spec befinden sich hier:

SRV.12.8.3 Verarbeitungsanforderungen

Wenn ein Servlet-Container erhält ein Antrag stellt sie den Algorithmus verwenden in SRV.11.1 beschriebenen auszuwählen Bedingungen (falls vorhanden), definiert auf der url-pattern, die die beste Übereinstimmung zu die Anforderungs-URI. , wenn keine Einschränkungen sind ausgewählt, muss der Behälter akzeptieren die Anfrage. Andernfalls wird der Behälter ist festzustellen, ob die HTTP-Methode von wird die Anforderung an die Zwangs ausgewählte Muster. Wenn es nicht, die Antrag wird angenommen. Andernfalls, die Anforderung erfüllen müssen, die Einschränkungen, die auf die http-method gelten am url-pattern. Beide der Folgende Regeln müssen erfüllt sein für wird die Anforderung angenommen und an den zugehörigen Servlet geschickt.

Und:

SRV.11.1 Verwendung von URL-Pfade

Nach dem Empfang einer Client-Anfrage bestimmen die Web-Container die Webanwendung zu dem sie zu übermitteln. Die Web-Anwendung ausgewählt muss die längste Kontextpfad, der den Beginn des Anforderungs-URL übereinstimmt. Der angepaßte Teil der URL Pfad ist der Kontext, wenn Zuordnung zu Servlets.

Die Web-Container neben muss das Servlet suchen Sie die Anfrage bearbeiten unter Verwendung von der Weg Kartierungsverfahren beschrieben unter .

Der Pfad für die Zuordnung zu einem Servlet verwendet wird, ist die Anforderungs-URL vom Anfrage Objekt minus den Kontextpfad und der Pfad-Parameter. Das URL-Pfad-Mapping Regeln unten werden verwendet, um. Das erste erfolgreiche Spiel wird ohne weiteres verwendet Streichhölzer versucht:

  1. Der Behälter wird versuchen, eine exakte Übereinstimmung des Wegs des Antrags auf die finden Pfad des Servlets. Ein erfolgreiches Spiel wählt das Servlet.
  2. Der Container wird versuchen rekursiv den längsten Weg-Präfix übereinstimmen. Das ist fertig durch die Intensivierung der Pfad Baum ein Verzeichnis zu einem Zeitpunkt nach unten, mit dem Zeichen ‚/‘ als Pfadtrenn. Die längste Übereinstimmung bestimmt die Servlet ausgewählt.
  3. Wenn das letzte Segment im URL-Pfad eine Erweiterung enthält (z .jsp), die Servlet-Container werden versuchen, eine Servlet-Anfragen, dass Griffe zur Erweiterung anzupassen. Eine Erweiterung wird als Teil des letzten Segments nach dem letzten definierten‘.‘ Char- acter.
  4. Wenn keine der vorherigen drei Regeln in einem Servlet Spiel führen, wird der Behälter versuchen, geeignete Inhalte für die angeforderte Ressource zu dienen. Wenn ein „default“ Servlet ist für die Anwendung definiert, wird sie verwendet werden.

SRV.11.2 Spezifikation von Mappings

In der Web Application Deployment Descriptor wird die folgende Syntax verwendet, um zu definieren Zuordnungen:

  • Ein String beginnend mit einem Zeichen ‚/‘ und endete mit einer ‚/ *‘ Suffix verwendet wird, für Pfadzuordnung.
  • Ein String, beginnend mit einem ‚*.‘ Prefix wird als Erweiterung Mapping verwendet.
  • Eine Zeichenkette, die nur das Zeichen ‚/‘ zeigt das „default“ Servlet von die Anwendung. In diesem Fall ist der Servlet-Pfad des Anforderungs-URI minus der Kontextpfad und die Pfadinformationen ist null.
  • Alle anderen Saiten sind für die exakte Übereinstimmungen nur verwendet.

Andere Tipps

Es wäre mir sinnvoll, dass das security-constraint / Web-Ressource-Sammlung / url-Muster ist nicht in Bezug auf das Servlet-Mapping / url-Muster , aus dem folgenden Grund: es mehrere sein können Servlet-Mapping -Elemente in web.xml, wobei in diesem Fall wäre es nicht klar sein, die Servlet-Mapping / url -pattern nehmen sie die relative URI aufzulösen, waren sie ein. (Nur eine Vermutung - ich habe noch nicht Sicherheitseinschränkungen in tomcat verwendet wird).

Nein, sind sie nicht relativ zueinander; gibt es keine Möglichkeit, ein bestimmten Servlet-Mapping zu einem security-constraint zu binden. Beide zu einem bestimmten URL-Muster angewendet werden, Sicherheitsbeschränkung kann auch nur auf bestimmte HTTP-Methoden (GET, POST, ...) angewendet werden, so dass sie ganz unabhängig sind.

Beide Elemente werden definiert und beschrieben in der Servlet-Spezifikation . Vielleicht möchten Abschnitte SRV.12.8 um die Sicherheit zu lesen, und Details über das URL-Musterelement.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top