JSP: Problemas direccionamientos entre páginas

Estoy creando un sitio web con jsp y uso jsp:include en algunas páginas para añadir otras como parte de estas. El problema lo tengo en los direccionamientos.
Por ejemplo:
Tengo una página index.jsp con un menu cuyo contenido depende de si el usuario esta registrado. Así que para reutilizar este menu en las distintas páginas lo he colocado en otro jsp.
// index.jsp-->esta en el direcctorio raiz
<html>
<div id="menu">
                       <jsp:include page="SesionGeneral/Menu.jsp"/>
              </div>
</html>
//Menu.jsp-->esta en una carpeta SessionGeneral
    <%  HttpSession sesion = request.getSession();%>
<li><a href="Informacion.jsp" class="">Informacion</a></li>
<%  if(sesion.getAttribute("registered")=="true"){%>
<li><a href="SesionRegistrada/Eventos.jsp">Eventos</a></li>
<%   }%>
El problema me surge al incluir Menu.jsp en otros jsp ya que estos tienen diferentes rutas.
Mi pregunta es, si existe alguna manera de indicar la ruta "absoluta" de las jsp para que sea indiferente desde donde las llames.

1 Respuesta

Respuesta
1
Claro que se puede indicar una ruta absoluta en un los enlaces. Simplemente:
'<a' href="http://www.miweb.com/miAplicacion/SesionRegistrada/Eventos.jsp">Eventos'</a>'
¿Cuál es el problema de esto? Que tienes que saber que el dominio se llamará "www.miweb.com" y la aplicación "miAplicación". También puedes poner "localhost" si estás haciendo las pruebas en local, pero luego cuando cambie tendrás que ir al menu.jsp a cambiarlo.
No es gran inconveniente tampoco, pero hay otra solución mucho más profesional y elegante. Se puede conseguir si estamos usando JSP EL (Expression Language) así:
'<'a href="${pageContext.request.contextPath}/SesionRegistrada/Eventos.jsp">Eventos''
Esa variable se sustituirá por el contexto (nombre del servidor + nombre de aplicación) en el momento de la ejecución.
¿Qué no usamos JSP EL? Entonces así:
'<a' href="<%= request.getContextPath() + "/SesionRegistrada/Eventos.jsp %>">Eventos'</a>'
Esa función nos devuelve también el contexto actual que insertamos en el enlace con ese scriptlet.
Espero que haberte sido de ayuda. Recuerda cerrar la pregunta
Un saludo
Nota: Pongo los enlaces así '<a' y así '</a>' para que me deje escribir los tags sin convertirlo en html. Las comillas simples se eliminan para que funcione.
Hola, muchas gracias por tu respuesta.
He "medio" resuelto el problema cambiando cosas pero voy a probar con lo que tu me dices a ver si puedo hacerlo como yo quería.
Gracias de nuevo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas