in

Patrones principales de J2EE: vista compuesta

145657

Contexto

Las páginas web sofisticadas presentan contenido de numerosas fuentes de datos, utilizando múltiples subvistas que comprenden una sola página de visualización. Además, una variedad de personas con diferentes conjuntos de habilidades contribuyen al desarrollo y mantenimiento de estas páginas web.

Problema

En lugar de proporcionar un mecanismo para combinar porciones modulares y atómicas de una vista en un todo compuesto, las páginas se crean incrustando código de formato directamente dentro de cada vista.

La modificación del diseño de múltiples vistas es difícil y propensa a errores debido a la duplicación de código.

Efectivo

  • Las porciones atómicas del contenido de la vista cambian con frecuencia.
  • Varias vistas compuestas utilizan subvistas similares, como una tabla de inventario de clientes. Estas porciones atómicas están decoradas con diferentes plantillas de texto circundantes o aparecen en una ubicación diferente dentro de la página.
  • Los cambios de diseño son más difíciles de administrar y el código es más difícil de mantener cuando las subvistas se incrustan y duplican directamente en varias vistas.
  • Incrustar directamente en las vistas partes del texto de la plantilla que cambian con frecuencia también afecta potencialmente la disponibilidad y administración del sistema. Es posible que sea necesario reiniciar el servidor antes de que los clientes vean las modificaciones o actualizaciones de estos componentes de la plantilla.

Solución

Utilice vistas compuestas que se componen de varias subvistas atómicas. Cada componente de la plantilla puede incluirse dinámicamente en el conjunto y el diseño de la página puede gestionarse independientemente del contenido.

Esta solución permite la creación de una vista compuesta basada en la inclusión y sustitución de fragmentos de plantilla dinámicos y estáticos modulares. Promueve la reutilización de porciones atómicas de la vista fomentando el diseño modular. Es apropiado utilizar una vista compuesta para generar páginas que contienen componentes de visualización que pueden combinarse de diversas formas. Este escenario ocurre, por ejemplo, con sitios de portal que incluyen numerosas subvistas independientes, como fuentes de noticias, información meteorológica y cotizaciones de acciones en una sola página. El diseño de la página se gestiona y modifica independientemente del contenido de la subvista.

Otro beneficio de este patrón es que los diseñadores web pueden crear un prototipo del diseño de un sitio, conectando contenido estático en cada una de las regiones de la plantilla. A medida que avanza el desarrollo del sitio, el contenido real se sustituye por estos marcadores de posición.

La Figura 7.17 muestra una captura de pantalla de la página de inicio del software Java de Sun. Se identifican cuatro regiones: navegación, búsqueda, artículo destacado y titulares. Si bien el contenido de cada una de estas subvistas de componentes puede provenir de diferentes fuentes de datos, se distribuyen sin problemas para crear una sola página compuesta.

Figura 7.17

Figura 7.17 Captura de pantalla de una página modular, incluidas las regiones de búsqueda, navegación, artículo destacado y titulares

Este patrón no está exento de inconvenientes. Hay una sobrecarga de tiempo de ejecución asociada a él, una compensación por la mayor flexibilidad que proporciona. Además, el uso de un mecanismo de diseño más sofisticado trae consigo algunos problemas de administración y desarrollo, ya que hay más artefactos que mantener y un nivel de implementación indirecta que comprender.

Estructura

La Figura 7.18 muestra el diagrama de clases que representa el patrón de Vista compuesta.

Figura 7.18

Figura 7.18 Diagrama de clases de Vista compuesta

Participantes y responsabilidades

La Figura 7.19 muestra el diagrama de secuencia para el patrón de Vista compuesta.

Figuras 7.19

Figura 7.19 Diagrama de secuencia de la vista compuesta

Vista compuesta

Una vista compuesta es una vista que es un agregado de varias subvistas.

Administrador de vistas

View Manager gestiona la inclusión de porciones de fragmentos de plantilla en la vista compuesta. View Manager puede ser parte de un motor de tiempo de ejecución de página JSP estándar, en forma de páginas estándar de JavaServer Pages (página JSP) que incluyen etiquetas ( <jsp:include>), o puede encapsularse en un ayudante de JavaBean (página JSP 1.0+) o un ayudante de etiqueta personalizada (página JSP 1.1+) para proporcionar una funcionalidad más sólida.

Una ventaja de utilizar un mecanismo que no sea la etiqueta de inclusión estándar es que la inclusión condicional se realiza fácilmente. Por ejemplo, ciertos fragmentos de plantilla pueden incluirse solo si el usuario cumple una función particular o si se satisfacen determinadas condiciones del sistema. Además, el uso de un componente auxiliar como Administrador de vistas permite un control más sofisticado de la estructura de la página en su conjunto, lo que es útil para crear diseños de página reutilizables.

Vista incluida

Una vista incluida es una subvista que es una pieza atómica de una vista completa más grande. Esta vista incluida también podría ser una combinación, que a su vez incluye varias subvistas.

Estrategias

Estrategia de vista de página JSP

Consulte «Estrategia de vista de página JSP» en la página 190.

Estrategia de vista de servlet

Consulte «Estrategia de vista de servlet» en la página 191.

Estrategia de gestión de vistas de JavaBean

La gestión de vistas se implementa utilizando componentes JavaBeans, como se muestra en el Ejemplo 7.22. La vista se delega en JavaBean, que implementa la lógica personalizada para controlar el diseño y la composición de la vista. Las decisiones sobre el diseño de la página pueden basarse en roles de usuario o políticas de seguridad, lo que la hace mucho más poderosa que la funcionalidad estándar de inclusión de páginas JSP. Si bien es semánticamente equivalente a la estrategia de administración de vistas de etiquetas personalizadas, no es tan elegante, ya que introduce código scriptlet en la vista.

El uso de la estrategia de administración de vistas de JavaBean requiere menos trabajo inicial que el uso de la estrategia de administración de vistas de etiquetas personalizadas preferida, ya que es más fácil construir componentes de JavaBeans e integrarlos en un entorno de página JSP. Además, incluso los desarrolladores novatos comprenden los componentes de JavaBeans. Esta estrategia también es más fácil desde el punto de vista de la capacidad de administración, porque los componentes JavaBeans completos son los únicos artefactos resultantes para administrar y configurar.

Ejemplo 7.22 Estrategia de gestión de vistas de JavaBean




<%@page 
  import="corepatterns.compositeview.beanhelper.ContentHelper" %>

<% ContentHelper personalizer = new 
  ContentHelper(request); %>

<table valign="top" cellpadding="30%"  width="100%">
     <% if (personalizer.hasWorldNewsInterest() ) { %>
        <tr>
            <td><jsp:getProperty name="feeder" 
               property="worldNews"/></td>
        </tr>
        <%
        }
        if ( personalizer.hasCountryNewsInterest() ) {
        %>
        <tr>
            <td><jsp:getProperty name="feeder" 
               property="countryNews"/></td>
        </tr>
        <%
        }

        if ( personalizer.hasCustomNewsInterest() ) {
        %>
        <tr>
            <td><jsp:getProperty name="feeder" 
               property="customNews"/></td>
        </tr>
        <%
        }

        if ( personalizer.hasAstronomyInterest() ) {
        %>

        <tr>
            <td><jsp:getProperty name="feeder" 
                property="astronomyNews"/></td>
            </tr>
        <%
        }
        %>
    </table>




Estrategia de gestión de vista de etiquetas estándar

La gestión de vistas se implementa utilizando etiquetas de página de página JSP estándar, como la <jsp:include> etiqueta. El uso de etiquetas estándar para administrar el diseño y la composición de las vistas es una estrategia fácil de implementar, pero no proporciona el poder y la flexibilidad de la estrategia de administración de vistas de etiquetas personalizadas preferida, ya que el diseño de las páginas individuales permanece incrustado dentro de esa página. Por lo tanto, si bien esta estrategia permite que el contenido subyacente varíe dinámicamente, cualquier cambio de diseño en todo el sitio requeriría modificaciones individuales en numerosas páginas JSP. Esto se muestra en el ejemplo 7.23.

Ejemplo 7.23 Estrategia de gestión de vista de etiquetas estándar




<html>
<body>
<jsp:include 
  page="/jsp/CompositeView/javabean/banner.html" 
  flush="true"/> 
<table width="100%">
  <tr align="left" valign="middle">
    <td width="20%">
    <jsp:include 
    page="/jsp/CompositeView/javabean/ProfilePane.jsp" 
      flush="true"/> 
    </td>
    <td width="70%" align="center">
    <jsp:include 
      page="/jsp/CompositeView/javabean/mainpanel.jsp" 
      flush="true"/> 
    </td>
  </tr>
</table>
<jsp:include 
  page="/jsp/CompositeView/javabean/footer.html" 
    flush="true"/> 
</body>
</html>




Al crear una pantalla compuesta utilizando etiquetas estándar, se puede incluir tanto contenido estático, como un archivo HTML, como contenido dinámico, como una página JSP. Además, el contenido se puede incluir en el momento de la traducción o en el tiempo de ejecución. Si el contenido se incluye en el momento de la traducción, la visualización de la página permanecerá sin cambios hasta que se vuelva a compilar la página JSP, momento en el que cualquier modificación del contenido incluido será visible. En otras palabras, la página se distribuye y genera una vez, cada vez que se vuelve a compilar la página JSP. El ejemplo 7.24 muestra un extracto de una página de página JSP que genera una página compuesta de esta manera, utilizando la directiva de inclusión de página JSP estándar <%@ include %>, que incluye contenido en el momento de la traducción.

La inclusión de contenido en tiempo de ejecución significa que los cambios en las subvistas subyacentes son visibles en la página compuesta la próxima vez que un cliente accede a la página. Esto es mucho más dinámico y se puede lograr utilizando la etiqueta de inclusión de página JSP estándar. <jsp:include>, como se muestra en el ejemplo 7.25. Por supuesto, existe una sobrecarga de tiempo de ejecución asociada con este tipo de generación de vistas, pero es la compensación por la mayor flexibilidad de las modificaciones de contenido sobre la marcha.

Ejemplo 7.24 Vista compuesta con inclusión de contenido en tiempo de traducción




<table border=1 valign="top" cellpadding="2%"  
    width="100%">
    <tr>
       <td><%@ file="news/worldnews.html" %> </td>
    </tr>
    <tr>
       <td><%@ file="news/countrynews.html" %> </td>
    </tr>
    <tr>
       <td><%@ file="news/customnews.html" %> </td>
    </tr>
    <tr>
       <td><%@ file="news/astronomy.html" %> </td>
    </tr>
</table>




Ejemplo 7.25 Vista compuesta con inclusión de contenido en tiempo de ejecución




<table border=1 valign="top" cellpadding="2%" 
  width="100%">
    <tr>
        <td><jsp:include page="news/worldnews.jsp" 
            flush="true"/> </td>
    </tr>
    <tr>
        <td><jsp:include page="news/countrynews.jsp" 
            flush="true"/> </td>
    </tr>
    <tr>
        <td><jsp:include page="news/customnews.jsp" 
            flush="true"/> </td>
    </tr>
    <tr>
        <td><jsp:include page="news/astronomy.jsp" 
            flush="true"/> </td>
    </tr>
</table>




Estrategia de gestión de vistas de etiquetas personalizadas

La gestión de vistas se implementa mediante etiquetas personalizadas (JSP página 1.1+), que es la estrategia preferida. La lógica implementada dentro de la etiqueta controla el diseño y la composición de la vista. Estas etiquetas son mucho más potentes y flexibles que la etiqueta de inclusión de página JSP estándar, pero también requieren un mayor nivel de esfuerzo. Las acciones personalizadas pueden basar el diseño y la composición de la página en cosas como roles de usuario o políticas de seguridad.

El uso de esta estrategia requiere más trabajo inicial que las otras estrategias de administración de vistas, ya que el desarrollo de etiquetas personalizadas es más complicado que simplemente usar componentes JavaBeans o etiquetas estándar. No solo hay más complejidad en el proceso de desarrollo, sino que hay mucha más complejidad con respecto a …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

comment supprimer le double controle bleu de whatsapp

Cómo eliminar el doble check azul de WhatsApp

Clases y objetos de C ++