servlet metodos dopost doget java servlets java-ee struts tiles

metodos - doget java



Cómo obtener la URL de solicitud original de un servlet/jsp después de múltiples servlets hacia adelante (5)

Considere usar filtros de servlet para validar información. Esto significa que puede evitar su reenvío de validación y quedarse en un solo archivo JSP.

Estoy trabajando en una aplicación de reserva de cruceros utilizando struts / tiles que usa múltiples servlets / jsp hacia adelante para alcanzar el jsp correcto para visualizar. Pero, una vez que llegue al jsp final que se utiliza para representar la página, la llamada ${pageContext.request.requestURL} en esa jsp devuelve la ruta de este jsp.

Por ejemplo

  1. Solicitud original: / booking / getCruiseDetails
  2. se reenvía a: /booking/validateCruiseDeteails.jsp
  3. se reenvía a: /booking/validateUser.jsp
  4. finalmente se reenvía a: /booking/showCruiseDetails.jsp

Entonces, en /booking/showCruiseDetails.jsp cuando llamo ${pageContext.request.requestURL} obtengo /booking/showCruiseDetails.jsp

¿Cómo se obtiene la URL de solicitud original (hecha por el cliente) desde un jsp al que se ha llegado a través de múltiples reenvíos. Encontré las siguientes publicaciones en stackoverflow que insinúan la solución here y here , pero no abordan la forma de encontrar la URL de solicitud original después de que se produjeron varios forwards.



Puede mostrarlo sin utilizar una referencia de bean con lo siguiente:

<h:outputText value="#{requestScope[''javax.servlet.forward.request_uri'']}" />

Por supuesto, necesita asignar la página 404 en su archivo web.xml.

<error-page> <error-code>404</error-code> <location>/xhtml/pg/error/404.xhtml</location> </error-page>


Puede usar un filtro para colocar la dirección de origen para solicitar el atributo y luego leerlo desde jsp

Filtro asignado a / booking / * execute:

request.setAttribute("origin", request.getRequestURL());

Jsp:

${pageContext.request.attribute["origin"]}

Esto funciona porque filtro ha configurado el despachador de PETICIONES por defecto. Significa que el filtro se ejecuta solo para solicitudes directas de clientes, no para reenviar / incluir


${requestScope["javax.servlet.forward.request_uri"]}

o con comillas simples

${requestScope[''javax.servlet.forward.request_uri'']}