Cómo asignar un servlet para obtener información de ruta adicional con getPathInfo()

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

  •  02-07-2019
  •  | 
  •  

Pregunta

Tengo un problema en el que Tomcat trata información de ruta adicional como parte del nombre del servlet.Esto está rompiendo un montón de funciones RESTFul en nuestra aplicación web (usamos información de ruta adicional en lugar de pares ?nombre=valor para enlaces amigables para rastreadores).

Funcionaba correctamente antes, pero se rompió después de agregar asignaciones explícitas y eliminar el Invoker servlet que usamos anteriormente para servir nuestros servlets.Por ejemplo, considere el siguiente enlace:

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

MyServlet solía ser llamado correctamente, y "/param1/param2/param3" fue devuelto por getPathInfo() sobre el HttpServletRequest.

Ahora, parece que Tomcat está intentando cargar MyServlet/param1/param2/param3 como servlet:

23/sep/2008: 16: 44: 23 -0700] "get/servlet/myservlet/param1/param2/param3 http/1.0" 404

Aquí está la forma en que se definen y se mapean en el Web.xml, y solo golpean "http://midominio.com/servlet/MyServlet" funciona bien.

<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>
¿Fue útil?

Solución

Necesita asignarlo a /servlet/MyServlet/*

Te falta el "/*" final.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top