Vous êtes sur la page 1sur 20

Aplicaciones Multi Nivel

Diana Lorena Velandia Vanegas


contacto@dilove.com.co
Arquitectura de las Aplicaciones Web

Cliente
Vista
Lógica DAO - Data
Access Object
Modelo
Capa de Lógica

• Recibe e interpreta la interacción del usuario, actuando sobre


modelo y vista de manera adecuada para provocar cambios de
estado en la representación interna de los datos, así como en su
visualización. Esta capa actúa de intermediarios entre la vista (que
veremos en la siguiente sesión) y el modelo que ya se vio.
Capa Lógica
• Recordemos que el patrón CRUD, reconocido como el patrón más
importante del acceso a datos indica que cada objeto debe ser
creado en base de datos para que sea persistente. Para esto es
necesario asegurar que existen operaciones que permiten a la capa
inferior (de acceso a datos) leerlo, actualizarlo o simplemente
borrarlo.
• Ya tenemos la capa de Persistencia que implementa el código para
interactuar con la BD a través de las sentencias JPQL para persistir
y/o consultar los datos, ahora, la Lógica se encargará de recibir la
información de la vista a través de objetos validar que la
información recibida no este vacía o que ya no exista en la base de
datos (para el caso de registrar) y enviarla a la Persistencia para que
haga su trabajo.
Capa Lógica
Capa de Vista

Cliente
Vista
Lógica DAO - Data
Access Object
Modelo
Capa de Vista
Java Server Faces
JSF es un marco de trabajo para crear aplicaciones java J2EE
basadas en el patrón MVC. JSF tiene como características
principales:
• Utiliza páginas Xhtml para generar las vistas, añadiendo una
biblioteca de etiquetas propia para crear los elementos de los
formularios HTML.
• Asocia a cada vista con formularios un conjunto de objetos java
manejados por el controlador (managed beans) que facilitan la
recogida, manipulación y visualización de los valores mostrados
en los diferentes elementos de los formularios.
Capa de Vista

• Introduce una serie de etapas en el procesamiento de la petición,


como por ejemplo la de validación, reconstrucción de la vista,
recuperación de los valores de los elementos, etc.
• Utiliza un sencillo fichero de configuración para el controlador en
formato xml.
Managed Bean
JSF separa la capa de presentación de la lógica de negocio. Para
que nuestras páginas JSF puedan acceder a esta lógica, utilizamos
managed beans.

Un bean es un POJO (Plain Old Java Object), algo tan sencillo


como una clase que tiene un constructor público sin argumentos
(constructor por defecto) y sus propiedades tienen asociados sus
correspondientes métodos get/set .Si en una clase no indicamos
ningún constructor, el compilador le añade este constructor por
defecto. Hay que tener en cuenta que si escribimos en la clase un
constructor no vacío, ya no se nos añadirá en tiempo de
compilación este constructor por defecto.
Managed Bean
No necesitamos instanciarlos
con new(), ya que son
inicializados por su contenedor
en tiempo de ejecución cuando
la aplicación los necesita. Una
página JSF lee los valores de las
propiedades del bean que tiene
asociada, y cuando se hace un
post de un formulario, se
guardan sus valores en el bean.
Managed Bean
Managed Bean
A las clases java que se asocian a los formularios JSF se les
denomina ManagedBean ya que son los beans (clases java) que
están detrás del formulario. Estos beans se referencian en el
fichero de configuracion de JSF en el apartado de managed
beans, ya que son beans gestionados por el controlador JSF.
Éste se encarga de su construcción y destrucción automáticas
cuando es necesario.
Ya tenemos la capa de Lógica que implementa el código para
interactuar con la persistencia, ahora, la Vista se encargará de
recibir la información de las páginas generan a través de
objetos de interfaz.
PrimeFaces
private InputText txtNumero; Campo de texto para pedir el número del
estudiante
private InputText txtNombre; Campo de texto para pedir el nombre del
estudiante
private CommandButton btnRegistrar; Botón para activar la opción de registrar
private CommandButton btnModificar; Botón para activar la opción de
modificar
private CommandButton btnEliminar; Botón para activar la opción de eliminar
private CommandButton btnLimpiar; Botón para activar la opción limpiar el
formulario
private List<Estudiante> listaEstudiante = null; Función que permite mostrar la consulta
de los estudiantes almacenados en la
base de datos.

http://www.primefaces.org/docs/vdl/4.0/primefaces-p/tld-summary.html
PrimeFaces
Para la capa de Vista
tendremos los elementos de
PrimeFaces que se requieran
de acuerdo a la interfaz
esperada, además de los
botones propios para las
operaciones crud y una lista
del tipo de objeto respectivo
para mostrar los datos. Como
ejemplo tenemos la vista del
estudiante:
PrimeFaces
Cada elemento de la vista tendrá sus propios get y set. Y para obtener la lista de
estudiantes, por ejemplo deberemos hacer uso de la lógica así:
PrimeFaces
Finalmente la vista deberá implementar los métodos propios para cada operación
requerida en la interfaz.
Estos métodos se encargarán de capturar la información que llega de la interfaz
(Próxima sesión) y generar los objeto respectivos para que los reciba la lógica y
realice la respectiva operación CRUD.
Veamos por ejemplo la de registro. (Ver en Netbeans)
PrimeFaces
Ahora, que pasa si queremos registrar en una tabla que en nuestra base de datos
tiene una llave foránea?
Debemos ofrecer al usuario un elemento que le permita escoger de los datos que ya
hay disponibles para evitar errores en la entrada de información. Para ello
tomaremos como alternativa el uso de listas desplegables que se llenen a partir de
información de la tabla de la bd. Por lo tanto para las llaves foráneas deberá existir
un elemento de tipo SelectOneMenu.
Y se creará una lista que será con la que se llenará la lista por defecto, por ejemplo:

private ArrayList<SelectItem> itemsCarreras = null;


PrimeFaces
OJO

Para modificar cualquier información primero se debe consultar, para


ello haremos uso de un evento sobre la tabla de consulta, para que el
usuario al dar click en algún estudiante, por ejemplo, esos datos
aparezcan en el formulario y dar la posibilidad de actualizarlos, a
excepción de la llave primaria que no se dejará cambiar.

Para ello en cada vista deberá estar un método que capture que objeto
se seleccionó así:
PrimeFaces

Este método lo que hace es que a partir de un evento captura cual fue el estudiante
que se seleccionó y lo muestra en cada uno de los campos. Recuerde que como
estamos modificando el botón de registrar debe estar deshabilitado y el de
modificar y eliminar si pueden estar activados.
PrimeFaces
Cuando hay llaves foráneas recuerden que creamos una lista desplegable, pero esa
lista como se llena? (Ver código en Netbeans)