Preferencias de portlet

Los portlets establecen las preferencias para almacenar la información personalizada. De forma predeterminada, el servlet PortletServingServlet almacena las preferencias de portlet de cada ventana de portlet de un cookie. No obstante, puede cambiar la ubicación para modificarlas en una sesión, un archivo .xml o una base de datos.

Almacenamiento de preferencias de portlet en los cookies

Los atributos de un cookie se definen del siguiente modo:
Vía de acceso
contexto/nombre-portlet/ventanaportlet
Nombre:
El nombre del cookie tiene el valor fijo de PortletPreferenceCookie.
Value
El valor del cookie contiene una lista de preferencias obtenida mediante la correlación con la siguiente estructura:
*['/' nombre-pref *['=' valor-pref]]
Todas las preferencias empiezan por '/' seguidas por el nombre de la preferencia. Si la preferencia tiene uno o más valores, éstos aparecen después del nombre separados por el carácter '='. Un valor nulo se representa mediante la serie '#*!0_NULL_0!*#'. Como ejemplo, el valor de cookie puede tener el siguiente aspecto: /locations=raleigh=boeblingen/regions=nc=bw

Personalización del almacenamiento de preferencias de portlet

Puede alterar temporalmente cómo se maneja el cookie para almacenar las preferencias en una sesión, un archivo .xml o una base de datos. Para personalizar el almacenamiento, debe crear un filtro, servlet o archivo JSP (JavaServer Pages) como nuevo punto de entrada que envuelva la solicitud y respuesta antes de llamar al portlet. Examine las siguientes envolturas de ejemplo para comprender cómo cambiar el comportamiento del PortletServingServlet para almacenar las preferencias en una sesión en lugar de en cookies.

El siguiente de ejemplo demuestra cómo el servlet principal gestiona la invocación de portlet.
public class DispatchServlet extends HttpServlet
{
    ...
  public void service(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException  {
	response.setContentType("text/html"); 
	
		// crear envolturas para cambiar el almacenamiento de preferencias
		RequestProxy req = new RequestProxy(request);
		ResponseProxy resp = new ResponseProxy(request, response);

		// crear prefijo de url para volver siempre a este servlet
                ...
                req.setAttribute("com.ibm.wsspi.portlet.url.prefix", urlPrefix);
        
		// preparar url de portlet
		String portletPath = request.getPathInfo(); 
                ...

		// incluir portlet utilizando envolturas
		RequestDispatcher rd = getServletContext().getRequestDispatcher(modifiedPortletPath);
                rd.include(req, resp);
  }
}
En el siguiente ejemplo, la envoltura de solicitud modifica el manejo de los cookies para recuperar las preferencias de la sesión.
public class RequestWrapper extends HttpServletRequestWrapper 
{
    ...
    public Cookie[] getCookies() {
        Cookie[] cookies = (Cookie[]) session.getAttribute("SessionPreferences");
        return cookies;
    }
}
En el siguiente ejemplo, la envoltura de respuesta modifica el manejo de los cookies para almacenar las preferencias en la sesión:
public class ResponseProxy extends HttpServletResponseWrapper 
{
   ...
    public void addCookie(Cookie cookie) {
        Cookie[] oldCookies = (Cookie[]) session.getAttribute("SessionPreferences");
        int newPos = (oldCookies == null) ? 0 : oldCookies.length;
        Cookie[] newCookies = new Cookie[newPos+1];
        session.setAttribute("SessionPreferences", newCookies);

        if (oldCookies != null) {
        System.arraycopy(oldCookies, 0, newCookies, 0, oldCookies.length);
        } 
        newCookies[newPos] = cookie;
    }
}

Icon that indicates the type of topic Concept topic



Timestamp icon Last updated: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cport_cookies
File name: cport_cookies.html