Come mappare un Servlet per ottenere ulteriori informazioni sul percorso con getPathInfo ()

StackOverflow https://stackoverflow.com/questions/124685

  •  02-07-2019
  •  | 
  •  

Domanda

Sto riscontrando un problema in cui Tomcat sta trattando le informazioni sul percorso extra come parte del nome del servlet. Questo sta rompendo un sacco di funzionalità RESTFul nella nostra webapp (usiamo informazioni extra sul percorso piuttosto che? Coppie nome = valore per i collegamenti di tipo crawler).

In precedenza funzionava correttamente, ma si è rotto dopo l'aggiunta di mapping espliciti e la rimozione del servlet Invoker che in precedenza utilizzavamo per servire i nostri servlet. Ad esempio, considera il seguente link:

  

http://mydomain.com/servlet/MyServlet/param1/param2/param3

MyServlet veniva chiamato correttamente e " / param1 / param2 / param3 " è stato restituito da getPathInfo () su HttpServletRequest .

Ora, sembra che Tomcat stia tentando di caricare MyServlet / param1 / param2 / param3 come servlet:

  

[23 / set / 2008: 16: 44: 23 -0700] " OTTIENI   / Servlet / MyServlet / param1 / param2 / param3   HTTP / 1.0 " 404

Ecco come sono definiti e mappati in web.xml e solo colpendo " http://mydomain.com/servlet/MyServlet " funziona bene.

<servlet>
  <servlet-name>MyServlet</servlet-name>
  <servlet-class>com.myclass.etcetera.MyServlet</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>MyServlet</servlet-name>
  <url-pattern>/servlet/MyServlet</url-pattern>
</servlet-mapping>
È stato utile?

Soluzione

Devi mapparlo su / servlet / MyServlet / *

Ti manca il finale " / * " ;.

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