Deprecated feature

Utilizar páginas JSP para la reescritura de URL

Deprecated: El uso de la reescritura de URL para la administración de sesiones estaba en desuso en la HCL Commerce versión 9.1.

Acción recomendada: Use la gestión de sesiones basada en cookies.

Si desea utilizar la reescritura de URL para mantener el estado de sesión, no incluya enlaces a partes de la aplicación web en archivos HTML corrientes. Esta restricción es necesaria porque no se puede utilizar la codificación de URL en archivos HTML corrientes. Para mantener el estado utilizando la reescritura de URL, cada página que el usuario solicita durante la sesión debe tener código que el intérprete Java pueda comprender. Si tiene archivos HTML corrientes de este tipo en la aplicación web y en partes del sitio a las que puede que el usuario acceda durante la sesión, conviértalos en archivos JSP.

Por qué y cuándo se efectúa esta tarea

Esto afectará al escritor de la aplicación porque, a diferencia del mantenimiento de sesiones con cookies, el mantenimiento de sesiones con la reescritura de URL requiere que cada página JSP de la aplicación utilice la codificación de URL para cada atributo HREF en los códigos <A>. La sesión se perderá si una o varias páginas JSP de una aplicación no llaman a los métodos encodeURL(String url) o encodeRedirectURL(String url).

Nota: Los ejemplos y cambios de código de página JSP presentados en esta página, aunque son válidos para páginas JSP más antiguas, no se actualizan para el uso de JavaServer Pages Tag Library (JSTL). La mayoría del código de la página JSP en las tiendas de inicio de HCL Commerce se codifica mediante JSTL, y para las páginas que usan JSTL, no es necesario hacer cambios en los URL construidos con la etiqueta <c:url>. Este código incorpora la funcionalidad de reescritura de URL automáticamente.

Escribir enlaces

Con la reescritura de URL, en todos los enlaces que se devuelven al navegador o se redireccionan se debe añadir el ID de sesión. Por ejemplo, este enlace en una página Web:

<a href="store/catalog">

se reescribe como

<a href="store/catalog;$jsessionid$DA32242SSGE2"> 

Cuando el usuario pulsa este enlace, el formulario de URL reescrito se envía al servidor como parte de la petición del cliente. Un motor de servlets reconoce a ;$jsessionid$DA32242SSGE2 como el ID de sesión y lo guarda para obtener el objeto HttpSession correcto para este usuario.

El ejemplo siguiente muestra cómo se puede incorporar código Java a un archivo JSP:

<%
 response.encodeURL ("/store/catalog");
%>

Para volver a escribir los URL que devuelve al navegador, llame al método encodeURL() en la página JSP antes de enviar el URL a la corriente de salida. Por ejemplo, si una página JSP que no utiliza la reescritura de URL tiene:

out.println("<a href=\"/store/catalog\">catalog</a>")"

sustitúyalo por:

out.println("<a href=\""); 
out.println(response.encodeURL ("/store/catalog")); 
out.println("\">catalog</a>");

Para volver a escribir los URL que redirecciona, llame al método encodeRedirectURL(). Por ejemplo:

response.sendRedirect (response.encodeRedirectURL ("http://myhost/store/catalog"));

Los métodos encodeURL() y encodeRedirectURL() forman parte del objeto HttpServletResponse. En ambos casos, compruebe si la reescritura de URL está configurada antes de codificar el URL. Si no está configurada, devuelven el URL original.

Escribir formularios

Si desea escribir formularios para enviarlos, llame a response.encodeURL("Logon"); en el código ACTION de la página de formulario. Por ejemplo:

<FORM NAME="Logon" METHOD="post" ACTION= <%= response.encodeURL ("Logon") %> >  
...   
</FORM>

Escribir la primera página

La página de entrada, generalmente la página de presentación, no puede contener marcos. Si desea utilizar marcos en la tienda, puede hacer que una página sin marcos con un enlace a la tienda actúe como página de entrada de la tienda. Sin embargo, si la tienda utiliza marcos y un cliente intenta acceder a esas páginas con marcos sin pasar primero por la página de entrada, puede que la sesión de dicho cliente se pierda. Los clientes también pueden perder la sesión si utilizan el botón Atrás (solo con marcos) para volver a la página de entrada y actualizarla. La renovación de la página de entrada les proporciona un nuevo ID de sesión. Para ayudar a evitar este tipo de pérdida de sesión, es necesario un enlace que retroceda a la página de entrada como alternativa al botón Atrás.