Patrón de URL de servlet para que coincida con una URL que termina con una barra diagonal (& # 8220; / & # 8221;)

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

Pregunta

Me gustaría especificar un patrón de URL de Servlet para que coincida con una URL que termina con una barra diagonal (" / ") y solo una barra diagonal.

Entiendo que el patrón

    /example/path/*

coincidirá con una URL de

    http://example.com/example/path/

y que esto parece funcionar. Sin embargo, ese mismo patrón también coincidiría con las URL de

    http://example.com/example/path/a/
    http://example.com/example/path/b/
    http://example.com/example/path/c/

Simplemente estoy buscando un patrón de URL que coincida con http://example.com / example / path / solo sin coincidir también con http: / /example.com/example/path/a/ y así sucesivamente.

Aclaración: no se permite un patrón de URL que termine con una barra diagonal.

¿Fue útil?

Solución

Es muy posible que no pueda hacer esto mapeando en web.xml.

Lo que puede hacer es asignar el servlet a / mypath / * y luego verificar la parte después de / mypath / a través de request.getPathInto (). Si es " / " ;, ejecute su código. Si no es así, devuelve el error 404.

Otros consejos

En NetBeans, si voy a la pestaña Servlets en el archivo web.xml, el IDE se quejaría, "Error: los patrones de URL no pueden terminar con una barra inclinada (/)". De la especificación de URL , se lee,

httpurl        = "http://" hostport [ "/" hpath [ "?" search ]]
hpath          = hsegment *[ "/" hsegment ]

Entonces, sí, un URI con una barra diagonal final no es válido.

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