Domanda

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

Questo è un estratto da web.xml (usarlo per configurare un jboss / tomcat webservice). Chiedo solo se il url-pattern in web-resource-collection è relativo al url-pattern in servlet-mapping.

È stato utile?

Soluzione

Il url-pattern utilizzato per selezionare i vincoli per una data richiesta non sono relative a nulla. Le parti interessanti della Servlet spec qui sono:

  

SRV.12.8.3 elaborazione delle richieste

     

Quando un contenitore Servlet riceve un   richiesta, essa utilizza l'algoritmo   descritto in SRV.11.1 per selezionare la   vincoli (se presenti) definite sulla   url-pattern che è la migliore corrispondenza per   l'URI della richiesta. Se vincoli sono   selezionato, il contenitore accetta   la richiesta. Altrimenti il ??contenitore   determina se il metodo HTTP   la richiesta è vincolato al   disegno selezionato. Se non lo è, il   richiesta deve essere accettata. Altrimenti,   la richiesta deve soddisfare il   vincoli che si applicano al http-method   al url-pattern. Entrambi i   seguenti regole devono essere soddisfatti per   la richiesta di essere accettata e   spediti verso il servlet associato.

E

  

SRV.11.1 L'utilizzo di URL Percorsi

     

Al ricevimento di una richiesta del cliente, il contenitore Web determina l'applicazione Web   a cui di trasmetterla. L'applicazione Web selezionato deve avere la più lunga   percorso del contesto che corrisponde l'inizio della URL richiesta. La parte corrispondenti dell'URL   è il percorso del contesto in cui la mappatura di servlet.

     

Il contenitore Web prossima deve individuare il servlet per elaborare la richiesta utilizzando   la procedura di mappatura percorso descritta di seguito .

     

Il percorso utilizzato per la mappatura di un servlet è l'URL della richiesta dalla richiesta   oggetto meno il percorso di contesto ei parametri di percorso. La mappatura sentiero URL   regole di seguito sono utilizzati allo scopo. Il primo successo di abbinamento viene utilizzato senza ulteriori   partite tentato:

     
      
  1. Il contenitore cercherà di trovare una corrispondenza esatta del percorso della richiesta al   percorso del servlet. Un successo di abbinamento seleziona il servlet.
  2.   
  3. Il contenitore in modo ricorsivo cercare di far corrispondere il più lungo percorso-prefix. Questo è fatto   facendo un passo verso il basso l'albero percorso di una directory alla volta, utilizzando il carattere ‘/’ come   un separatore di percorso. La partita più lunga determina la servlet selezionato.
  4.   
  5. Se l'ultimo segmento nel percorso URL contiene un'estensione (per esempio .jsp), il contenitore di servlet cercherà di abbinare un servlet che gestisce le richieste per l'estensione.   Un'estensione è definita come la parte dell'ultimo segmento dopo l'ultimo’.’ Carat-   acter.
  6.   
  7. Se nessuna delle precedenti tre regole si traducono in un match servlet, il contenitore   tentare di servire contenuti adeguati per la risorsa richiesta. Se un "default"   servlet è definito per l'applicazione, verrà utilizzato.
  8.   
     

SRV.11.2 specificazione di Mapping

     

Nel descrittore di deployment delle applicazioni Web, la seguente sintassi viene utilizzata per definire   mappature:

     
      
  • Una stringa che inizia con un carattere ‘/’ e termina con un suffisso ‘/ *’ è usato    per la mappatura percorso.
  •   
  • Una stringa che inizia con un ‘*.’ Prefisso è usato come una mappatura estensione.
  •   
  • Una stringa contenente solo il carattere ‘/’ indica il servlet "default" di    l'applicazione. In questo caso il percorso servlet è la richiesta URI meno il percorso del contesto e le informazioni percorso è nullo.
  •   
  • Tutte le altre stringhe sono usati per corrispondenze esatte solo.
  •   

Altri suggerimenti

Non avrebbe senso per me che il security-constraint / web-resource-raccolta / url-pattern è non relativo al servlet-mapping / url-pattern , per il seguente motivo: ci possono essere diverse servlet-mapping elementi in web.xml, nel qual caso non sarebbe chiaro quale servlet-mapping / url -pattern a prendere per risolvere l'URI relativo, erano uno. (Solo una supposizione - non ho ancora usato vincoli di sicurezza in Tomcat).

No, non sono l'uno rispetto all'altro; non v'è alcun modo per associare un determinato servlet-mapping per un security-constraint . Entrambi sono applicati a un determinato modello di URL, vincolo di sicurezza può anche essere applicato solo a specifici metodi HTTP (GET, POST, ...) in modo che siano del tutto indipendenti.

Entrambi gli elementi sono definiti e descritti nella servlet specifica . Si potrebbe desiderare di leggere le sezioni SRV.12.8 sulla sicurezza, e dettagli circa l'elemento url-pattern.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top