Patrón de URL de servlet para que coincida con una URL que termina con una barra diagonal (& # 8220; / & # 8221;)
-
19-08-2019 - |
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.
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.