Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FRAMEWORK 2
-
ARQUITECTURA
APLICACIONES WEB
Versión 1.1
Septiembre 2008
CONTROL DE CAMBIOS
INDICE
1 INTRODUCCION.................................................................................................... 4
2 GESTION DE USUARIOS...................................................................................... 5
3 CARACTERISTICAS DE LAS APLICACIONES ................................................. 5
3.1 CONFIGURACION ......................................................................................... 5
3.2 ARQUITECTURA DE LAS APLICACIONES .............................................. 6
3.2.1 Controlador............................................................................................... 8
3.2.2 Modelo.................................................................................................... 11
3.2.3 Acciones ................................................................................................. 14
3.2.4 Vista........................................................................................................ 16
3.3 ESTRUCTURA DE DIRECTORIOS ............................................................ 17
3.4 PAQUETES JAVA ........................................................................................ 17
3.5 GESTION DE EXCEPCIONES..................................................................... 19
4 PORTAL DE LA APLICACION........................................................................... 20
4.1 Hojas de estilo ................................................................................................ 22
4.2 Librerías de etiquetas del portal: regiones...................................................... 22
4.3 Menú de aplicación......................................................................................... 23
5 ANEXO 1: Variables del fichero de configuración................................................ 26
1 INTRODUCCION
Para facilitar el desarrollo de aplicaciones web ICM proporciona una serie de plantillas.
Estas plantillas son distintas dependiendo del tipo de acceso a la aplicación.
2 GESTION DE USUARIOS
En ICM existe una gestión centralizada de los usuarios. Las aplicaciones no podrán
implementar su propia gestión de usuarios, tendrán que utilizar la de ICM.
Dentro de estos modelos de datos se encuentran las aplicaciones, los usuarios, los grupos
(perfiles) y las acciones.
Para generar este modelo de datos en las instalaciones de los proveedores es necesario
abrir el modelo Erwin correspondiente y hacer Forward Engineer/Schema generation.
Los modelos de datos se encuentran en la web de soja.
3.1 CONFIGURACION
REQUISITOS
Modelo contiene toda la lógica de la aplicación y accede a la base de datos. Debe ser
independiente de la vista y del controlador.
Vista proporciona la presentación del Modelo. La vista puede acceder a los métodos get
de los JavaBean para obtener información pero no puede acceder a los métodos set para
actualizar el Modelo sino que las actualizaciones se harán a través del controlador.
3.2.1 Controlador
El Controlador es un Servlet, único por aplicación que recibe todas las peticiones de
los clientes de la aplicación y actúa como un dispatcher enviando la petición a la clase
correspondiente.
Por cada petición al Controlador desde el navegador se van a realizar las siguientes
operaciones.
El hacer commit o rollback está prohibido en cualquier otra parte del código. Tampoco se
puede hacer commit o rollback en los procedimientos almacenados que son invocados
desde java.
Ejemplo de un controlador:
import empleados.*;
public ControladorEmpleados() {
ControladorPrivadoIntranet
}
3.2.2 Modelo
negocio.
• Todos los accesos a base de datos realizados por las aplicaciones se deberán
encapsular en clases DAO.
• El código de acceso a Base de datos solo puede estar localizado en las clases
DAO.
• Todas las clases del modelo estarán bajo el paquete aplicación.modelo y dentro
de este paquete se podrá disponer de una estructura de paquetes.
Esta librería sólo se debe utilizar desde JBuilder o Eclipse, en el directorio lib de la
aplicación a la hora de compilar las clases java. A la hora de desplegar la aplicación la
librería de oracle no debe aparecer en el directorio WEB-INF/lib ya que el propio servidor
de aplicaciones ya la incorpora.
La conexión con la base de datos le llegará al modelo desde la capa de las acciones y el
modelo se la pasará a las clases DAO para que la utilicen.
Desde el Modelo nunca se van a crear conexiones ni se va a hacer commit ni
rollback.
El Modelo tiene que ser independiente de la forma en la que se van a presentar los
datos esto quiere decir que nunca va a acceder al request ni al response.
Para recibir o pasar información de esta capa a otras lo va a hacer mediante clases
JavaBean. Estos JavaBean no van a procesar información simplemente van a contener
propiedades y métodos para acceder a esas propiedades. Todos los JavaBean deben
heredar de ModeloBean.
package empleadosmvc.bean;
import empleadosmvc.*;
public EmpleadosBean() {
}
Para el desarrollo de las clases DAO se ha creado dentro de la librería Sistemas una
clase llamada ClaseDAO que obliga a implementar los métodos de alta, baja, consulta y
modificación con un sintaxis común a todas las clases DAO. Para desarrollar las clases
DAO de la aplicación hay que heredar de esta clase e implementar los métodos
necesarios.
Los métodos que no se necesite implementar devolverán una excepción de que el método
no está implementado.
Esta excepción deberá ser “UnsupportedOperationException”, y dicha excepción deberá
tener el parámetro “Operación no disponible”. Es decir, deberá ser
UnsupportedOperationException(“Operación no disponible”).
Se recuerda que el código de acceso a base de datos deberá incluirse dentro de un
bloque try-catch.
Los cursores deberán cerrarse en la parte del finally.
3.2.3 Acciones
Para cada opción de la aplicación vamos a tener lo que vamos a llamar Acciones.
Se trata de una clase Java que se corresponde con el nombre de la opción y que
implementa el interfaz Accion. Estas acciones van a ser invocadas por el Controlador.
• Aplicación
• Sesión
• Request
• Page
package empleadosmvc.acciones;
import empleadosmvc.modelo.EmpleadosDAO;
import empleadosmvc.bean.EmpleadosBean;
public FormBajaEmpleado() {
super.tieneFormulariosSensibles = true;
}
request.getSession(true).setAttribute("empleadosBeanId",
empleadosBean);
return NOMBRE_VISTA;
}
}
formulario-modificacion-empleado = formModEmpleado.jsp
baja-empleado = confirmacionBorrado.jsp
formulario-accion-catalogo = formAccionCatalogo.jsp
formulario-alta-empleado = formAltaEmpleado.jsp
formulario-baja-empleado = formBajaEmpleado.jsp
formulario-busqueda-empleado = formBuscarEmpleado.jsp
pagina-inicio = index.jsp
listado-catalogos = listadoCatalogos.jsp
listado-empleados = listadoEmpleados.jsp
modificacion-empleado = confirmacionModificacion.jsp
menu-xml = menu_xml.jsp
calendario = calendar.jsp
3.2.4 Vista
La vista va a estar representada por páginas JSP que acceden a JavaBean previamente
generados en el Modelo.
• Las aplicaciones utilizarán una librería propia de ICM llamada regiones para
definir las estructura principal de las aplicaciones (encabezado, menú, pie de
página, etc) así como cualquier otra estructura que sea reutilizada en diferentes
páginas.
Por tanto, esta librería se utilizará como mecanismo de refresco de componentes de una
página. Hay que tener en cuenta que el uso de esta librería Javascript implica que la
aplicación no va a cumplir los requisitos de accesibilidad de W3C.
• El uso de la librería debe estar orientado a una interacción del usuario sobre un
componente de la página JSP.
Todas las clases de la aplicación van a estar en un paquete llamado igual que el nombre del
módulo de la aplicación.
Una excepción a esta regla son las clases que se utilicen para DWR. Estas clases
deberán incluirse en el paquete aplicación.acciones.ajax, tal y como se indica en el
manual “Librería DWR-Manual de uso”.
Cada vez que se produzca una excepción en las clases que son cargadas por el
Controlador, esta excepción va a ser capturada por la clase Controlador y va a mostrar una
página jsp con el mensaje del error.
También es posible personalizar la clase que va a mostrar el error dependiendo del error
producido.
Para poder controlar que página se va a mostrar se debe conocer primero el código del
error a controlar Por ejemplo, ListaValores lanza el error de que no ha encontrado registros
con el código 1001.
Si lo que se quiere es que un error (de la aplicación) sea controlado por una clase propia o
mostrado en una pagina personalizada lo que hay que hacer es lanzar este error usando el
constructor de CargableException
Este constructor acepta como parámetros una cadena y un número. El número será el
código de error que también deberá ser incluido en el fichero de configuración.
Ejemplo:
try{
…
}catch(SQLException sqle){
throw new CargableException(“Mi error personalizado:
“+sqle.getMessage(), 501);
}
1. Añadir una línea con la página que queremos que muestre el controlador cuando
se lance este error:
aplicacion.codError[codigo_error].paginaError = [nuestra_pagina_de_error]
2. Añadir una linea con la clase que queremos que gestione este error:
aplicacion.codError[codigo_error].claseError = [nuestra_clase_de_error].
Si se añaden ambas líneas se harán las dos cosas, es decir, el error será gestionado por
una clase propia de la aplicación y será mostrado por una página jsp también propia de la
aplicación.
4 PORTAL DE LA APLICACION
Todas las aplicaciones web deben de tener un aspecto homogéneo y de acuerdo al portal
REQUISITOS
de madrid.org. Para conseguir este aspecto se han predefinido una cabecera y un pie que
son comunes a todas las aplicaciones web.
Para conseguir este aspecto visual tenemos que utilizar los siguientes elementos:
Partiendo de las plantillas que ICM proporciona ya tenemos definido todo lo anterior.
Dentro del directorio estilos de la web tenemos que tener las siguientes hojas de estilo:
La primera hoja contiene los estilos propios del portal de madrid.org y que debemos
utilizar en nuestras páginas jsp.
En la hoja sistemas.css se encuentran los estilos que se utilizan para colocar los distintos
elementos del portal.
En el caso de que se usen estilos propios estos se incluirán en una hoja de estilos cuyo
nombre va a ser <nombre_aplicacion>.css.
Una vez definidas las distintas regiones debemos asociar las distintas acciones de la
aplicación Java con la correspondiente región donde se deben pintar. Esto lo haremos en
el fichero de configuración portal.xml.
Para más información sobre la definición del portal consultar el manual especializado.
En la definición del menu podemos especificar los elementos que queremos que le
aparezcan a los distintos perfiles.
Esto se hace mediante el tag perfil asignando a este tag el valor del código del grupo o
grupos que tienen autorización para acceder a este elemento del menú. Si el tag perfil no
aparece entonces el elemento del menú estará disponible para todos los usuarios.
Local:J2EE
aplicacion.certificados.exportacion Localización de certificado dentro del request.
Desarrollo y producción: PERL