DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2 EE FRANCISCO JAVIER BRAVO RAMOS Enginyeria en informàtica Josep Maria Camps Riba 17
Download
Report
Transcript DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2 EE FRANCISCO JAVIER BRAVO RAMOS Enginyeria en informàtica Josep Maria Camps Riba 17
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2 EE
FRANCISCO JAVIER BRAVO RAMOS
Enginyeria en informàtica
Josep Maria Camps Riba
17 Gener 2011
1. Introducció a J2EE i els patrons de presentació. Patró Model-Vista-Controlador.
2. Estudi comparatiu de tres Frameworks actuals: Struts, Spring i Java Server Faces
3. Creació d’un nou marc de treball de presentació: FrameworkPFC.
4. Desenvolupament d’una aplicació Web que utilitzi FrameworkPFC
JUSTIFICACIÓ
Aconseguir un major coneixement de J2EE.
Aprofundiment en el llenguatge Java.
Coneixement dels Frameworks actuals i la seva
funció en el món empresarial.
PLANIFICACIÓ
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
OBJECTIUS
“ J2EE és una plataforma oberta i estàndard per a desenvolupar i desplegar aplicacions empresarials
multicapa amb n-nivells, distribuïdes i basades en components.”
Basada en components software desplegats en
contenidors.
Els contenidors proporcionen serveis als
components.
Defineix un mínim de 3 capes però pot tenir-ne
més.
Capa Client: Applets i Aplicacions Stand –
Alone.
Capa intermèdia : Lògica de negoci
Capa Presentació : Servlets i JSP
Capa de negoci EJB (Enterprise
JavaBeans)
Capa d’integració ORM, EJB entitat
Capa EIS Bases de dades relacionals
Aplicacions distribuides. Els components poden
estar ubicats en diferents nodes.
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
ARQUITECTURA J2EE.
Patró d’arquitectura que separa les
dades, la interfície d’usuari i la lògica
d’aplicació en tres components
diferents.
Model: És la representació específica de la
informació amb la que opera el sistema.
Aquestes dades poden ser relatiuves a la
presentació o no, podent representar
informació complexa provinent de diversos
sistemes d’informació.
Vista: Representa la interfície amb l’usuari de
l’aplicació i tots els components de presentació.
Controlador: Respon a les accions de l’usuari
invocant peticions i actualitzacions del model i
modificacions de les vistes.
Avantatges:
Major reutilització de codi. La modificació d’un component no afecti als
altres.
Major especialització dels perfils de desenvolupadors.
Inconvenients:
Augment de la dificultat d’aprenentatge
No s’aconsegueix un desacoblament total entre les parts.
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
Patró Model – Vista – Controlador - MVC
STRUTS
Open Source i compatible amb totes les implementacions J2EE.
Basat en el patró MVC sota la plataforma J2EE.
Model:
•Normalment POJOs.
•Compatible amb JDBC, EJB, Hibernate, iBatis i Object Relational Bridge.
Controlador (ActionServlet):
•Pont entre el model i les vistes.
• Comportament extensible.
Vistes:
•Normalment JSP.
•Compatible amb JSTL i etiquetes personalitzades.
•Compatible amb JSF.
Àmplia documentació i gran comunitat de desenvolupadors.
El fitxer de configuració és struts-config.xml i permet configurar:
MessageResources Fitxers de recursos. i18n.
ActionMappings Mapeig d’accions
Plugins Exemple: Validator.
GlobalExceptions
GlobalForwards
FormBeans
Controller Es pot proporcionar un controlador propi.
Molt flexible i fàciment configurable i ampliable.
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FRAMEWORKS DE PRESENTACIÓ ACTUALS -
SPRING MVC
Flexible, ben documentat i fàcil d’utilitzar.
Divisió en mòduls independents i que es poden utilitzar per
separat.
Construït en base a DispatcherServlet
Delega peticions a Controllers
Contenidor IOC : Injecció de dependències en temps
d’execució.
Cada DispatcherServlet disposa d’un WebApplicationContext.
CARACTERÍSTIQUES
Clara separació de rols ( Controllers, Validators, Commands, Forms, Model Objects, DispatcherServlet,etc)
Cada rol implementat per un objecte especialitzat.
Capacitat de reutilització de codi de negoci.
Sistema de validació millorat.
Compatibilitat amb JSTL, Velocity i llibreries de desenvolupament del costat del client.
Ampli repertori d’etiquetes per a les vistes.
Ofereix implementació de gran varietat de Controllers ( SimpleFormController, AbstractWizardFormController,
AbstractCommandController, AbstractFormController ).
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FRAMEWORKS DE PRESENTACIÓ ACTUALS –
JAVA SERVER FACES
“Framework d’interfícies d’usuari del costat del servidor per a
Aplicacions Web basades en Java”.
Components:
API i implementació de referència:
• Representar componentes UI ( User Interface)
• Manegar events
• Validacions de servidor.
• Conversió de dades
• Definir navegació entre vistes.
• Internacionalització i accessibilitat
•Extensibilitat de tots els components.
Llibreries d’etiquetes:
• Personalitzar componentes dintre d’una vista.
CARACTERÍSTIQUES
Clara separació entre COMPORTAMENT i PRESENTACIÓ
Mapeig de peticions HTTP a un gestor d’events específic.
Permet definit components UI amb estat.
Permet separació de rols en el procés de desenvolupament.
No limita a la utilització d’una tecnologia d’script o etiquetes particular.
Permet la conversió de dades i validació individual sobre els components UI.
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FRAMEWORKS DE PRESENTACIÓ ACTUALS –
COMPARATIVA
SPRING MVC
JAVA SERVER FACES
- Framework molt robust
-Més fàcil reutilització (Basat en components).
-Millora les capacitats d’Struts.
- Posibilita eines visuals de desenvolupament.
-Sistema de test molt senzill i madur.
- Possibilitat de personalització.
- Bon sistema de validacions.
- Estàndard Obre mercat de components.
-Constant evolució i suport d’una àmplia comunitat
de desenvolupament.
-Potents eines de desenvolupament:
-Faces Console
-Sun Java Studio Creator
-JSF formBuilder
-Té una conba d’aprenentatge elevada.
STRUTS
-Suport per a peticions multi-part
- Excel·lent sistema de missatges.
-Tecnologia molt madura.
-Coneixeement molt estés i actualment molt usat.
- Eines de configuració molt madures:
-Struts GUI
-Struts Console.
- Àmplia comunitat de suport i desenvolupament.
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FRAMEWORKS DE PRESENTACIÓ ACTUALS –
DESCRIPCIÓ
“FrameworkPFC és un nou marc de treball que facilita la creació d’aplicacions web resolent part de la
problemàtica associada a la capa de presentació.”
Facilita la construcció d’aplicacions Web “Thin Client”.
Segueix l’estàndard J2EE utilitzant components Servlets i JSP.
Basat en patró MVC ( Model – Vista – Controlador).
Programat utilitzant el llenguatge Java.
Desplegat com una llibreria (.jar) en un projecte Web
Desplegat en un servidor d’aplicacions o contenidor de Servlets compatible amb la plataforma J2EE.
REQUERIMENTS D’UTILITZACIÓ
Entorn de desenvolupament Java (JDK). V.1.6 o superior.
Entorn d’execució Java (Màquina Virtual JRE), versió igual o superior a 1.6.
Servidor Web amb contenidor de Servlets o Servidor d’aplicacions J2EE .
(Recomanable Tomcat 6.0 o superior)
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – DESCRIPCIÓ
Funcionalitats de FrameworkPFC
Sistema de configuració
Configuració de forma declarativa Fitxer de configuració.
Control de flux
Sistema de navegació entre les vistes.
Servei d’internacionalització
Servei que facilita la traducció d’una aplicació en diversos idiomes.
Validació simple de formularis
Captura la petició i valida els camps d’un formulari abans de realitzar cap acció.
Etiquetes per a la creació de les vistes
Etiquetes personalitzades que faciliten la creació i estructuració de les vistes.
Tractament d’adreces
Definició declarativa d’adreces globals i locals.
Tractament d’excepcions
Permet definir excepcions i manegadors d’excepcions tan a nivell local com global.
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – ABAST
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – ARQUITECTURA
(1)
1 fitxer de configuració Carregat pel mètode init del ServletController
Conté elements de configuració (Accions, adrecesGlobals, etc)
Element
configuracio
adrecesGlobals
Descripció
Configuració global. Conté la resta d’elements. com.fwk.config.Configuration
formularis
Conté totes les adreces globals que es poden
configurar.
Representa una adreça d’una vista. Local o
Global.
Conté totes les excepcions globals. Seran
comunes a totes les accions.
Excepció llençada per una acció. Pot ser local o
Global.
Conté tots els formularis configurats.
formulari
Representa un formulari associat a una accio.
desti
excepcionsGlobals
excepcio
accions
accio
missatges
Classe Java
Conté totes les accions configurades.
Acció d’usuari
Configuració de la missatgeria
HashMap que conté les adreces globals
configurades.
com.fwk.actions.ActionForward
HashMap que conté les excepcions globals.
com.fwk.config.exceptions.ExceptionConfig
HashMap que guarda tots els formularis
definits.
com.fwk.config.forms.FormConfig
HahsMap que conté totes les accions
definides al fitxer de configuració.
com.fwk.config.actions.ActionConfig
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – CONFIGURACIÓ
(2)
<?xml version="1.0" encoding="UTF-8"?>
<configuracio>
<!-- ADRECES GLOBALS -->
<adrecesGlobals>
<desti nom="error" adreca="/WEB-INF/jsp/student/studentForm.jsp"
/>
</adrecesGlobals>
<!-- EXCEPCIONS GLOBALS -->
<excepcionsGlobals>
<excepcio key="global. exception"
type="java.lang.Exception"/>
</excepcionsGlobals>
<!-- FORMULARIS -->
<formularis>
<formulari nom="alumno"
tipus="test.forms.StudentsForm" />
</formularis>
<!-- ACCIONS -->
<accions>
<accio path="/student" name="nom"
type="test.accions.StudentAction"
formulari="alumno" parametre="reqCode" validate="true">
<desti nom="ok" adreca="/WEBINF/jsp/student/studentForm.jsp" />
<desti nom="list" adreca="/WEBINF/jsp/student/studentList.jsp"/>
<excepcio key="numberFormat.exception"
type="java.lang.NumberFormatException"
path="/WEB-INF/jsp/student/studentForm.jsp"/>
</accio>
<accio path="/professor"
type="com.fwk.actions.DirectAction" parametre="/WEBINF/jsp/student/studentForm.jsp"/>
</accions>
<!-- MISSATGES -->
<missatges urlBase="test.i18.ApplicationResources"/>
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – CONFIGURACIÓ
DE FLUX (1)
Controlador
1 Controlador ServletController
Extensible i ampliable
S’ha de declarar en el fitxer de configuració de l’aplicació Web (web.xml)
Carrega el fitxer de configuració en el mètode init.
Delega el tractament de les peticions a Processor.
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – CONTROL
Processor
Allibera el controlador de responsabilitats de processament de la petició.
Segueix el patró Dispatcher.
Responsabilitats
Configurar el Locale de la petició
Cercar i crear l’acció que sol·licita l’usuari.
Crear el formulari associat a cada acció
Omplir el formulari amb les dades de la petició
Validacions simples associades als formularis.
Executar l’acció associada a la petició.
Controlar les excepcions que es produeixen a les accions.
Escollir quina vista és la següent a mostrar.
DE FLUX (2)
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – CONTROL
DE FLUX (3)
Accions
Implementades per l’usuari de FrameworkPFC.
Han d’heretar de Action i implementar el mètode execute.
Tipus d’accions
Action Accions normals. S’ha d’implementar el mètode execute.
DirectAction No cal cap classe. Es configura una vista declarativament.
MethodAction Diversos mètodes. El mètode és identificat per l’element de configuració
paràmetre.
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – CONTROL
DE FLUX (4)
FormBeans
Encapsulen les dades de l’usuari enviades al servidor.
Són objectes JavaBean que guarden la informació enviada al servidor.
Es configuren de forma declarativa com a elements de configuració.
(1) Es defineix un formulari alumne
(2) Implementat per la classe StudentsForm.
Estan associats a una o diverses accions
(1) Associem el formulari “alumne” a la acció.
Realitzen validacions simples Mètode “validate”.
Envien missatges a les vistes a través d’objectes ActionMessage i ActionError.
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – CONTROL
D’INTERACCIÓ
Petició Web
WEBAPP
ServletController
Codi Vista
delega
Adreça
Crea i omple
PROCESSOR
ActionForward
Crea i executa
Acció
FormBean
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – ESQUEMA
Servei Multi-idioma
Permet mostrar textos en les vistes de diferents idiomes
Externalització del text en fitxers de configuració.
S’evita escriure el text directament a les vistes.
La classe MessageResourcesReader s’encarrega de consultar el Locale i agafar el text del fitxer de
configuració adequat.
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – INTERNACIONALITZACIÓ
I EXCEPCIONS GLOBALS
Adreces Globals
Es defineixen rutes accessibles per:
Totes les accions
Totes les excepcions
En primer lloc es cerquen les adreces locals.
Si no es troben es cerquen les adreces globals.
En cas de no trobar cap adreça Es retorna la mateixa vista.
Excepcions Globals
Durant el codi d’una acció es poden produir excepcions
Si decidim capturar-les, ho podem fer de forma declarativa A través de configuració.
Dues formes:
• Definició de rutes Ruta a on dirigir el flux si s’intercepta una excepció.
•Definició de manegadors d’excepcions Classe que ha de fer el tractament.
FrameworkPFC proporciona un manegador per defecte DefaultExceptionHandler
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – ADRECES
PERSONALITZADES
ETIQUETES
Utilitzades en les vistes Facilitar la vida al programador Web.
Cada etiqueta te associat un codi Java que s’executa al servidor
Realitzen tasques complexes.
<showErrors>
Etiqueta que permet mostrar els missatges d’error en forma de llistat.
<valueList>
Etiqueta per a mostrar llistats d’entitats contingudes en un objecte List<Object>.
El llistat had’estar en la petició.
<column>
Etiqueta que representa una columna en un llistat.
<showMessage>
Etiqueta per a mostrar missatges obtinguts dels fitxers de recursos.
<inputText>
Etiqueta per a mostrar camps de text en una vista de forma senzilla.
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – ETIQUETES
DE MILLORA
Vies de Millora
Descàrrega de dades del servidor
Permetre descàrrega de dades del servidor(Fitxers) fent servir eines com Jasper Reports.
Gestió d’adreces
Eines com Tiles permeten identificar les adreces amb una clau facilitant la llegibilitat.
Configuracions multi-mòdul
Possibilitat de tenir més d’un mòdul (+ fitxers de configuració)
Formularis dinàmics
Afegir la possibilitat de crear formularis dinàmics de forma declarativa.
Plug-ins
Ús de plug-ins que es configuren declarativament en el fitxer de configuració Validator.
Filtres
Possibilitat d’incorporar una processadors addicionals (que heretin de Processor) i que formin una
FilterChain (Cadena de filtres) per a fer processaments d’una petició més complexos.
Javascript
Proporcionar una llibreria d’objectes que implementin funcionalitats recurrents com la validació de
formularis o el recorregut d’arbres DOM.
Mòdul AJAX
Incorporar etiquetes que utilitzin AJAX per a fer peticions asíncrones al servidor d’aplicacions.
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FRAMEWORKPFC – CREACIÓ D’UN NOU MARC DE PRESENTACIÓ – VIES
DESCRIPCIÓ I REQUERIMENTS
Descripció
“FwkTest és una aplicació Web que es desplega en un contenidor J2EE i que utilitza FrameworkPFC com a
motor de la capa de presentació”.
És una aplicació fictícia de gestió d’estudiants (Alta, baixa, modificació i llistat d’estudiants).
Dissenyada per a fer un testing del nou marc de treball No pretén tenir utilitat concreta
Les dades no es persisteixen S’utilitza un HashMap d’alumnes que s’inicia cada cop que s’entra a
l’aplicació.
Requeriments
Màquina virtual Java (JRE) a partir de la versió 1.6.
Servidor Web amb contenidor de Servlets o servidor d’aplicacions que implementi l’especificació J2EE.
Exemple: Tomcat 6.0 com a contenidor J2EE.
Navegador Web amb Javascript habilitat.
Per a fer les proves s’ha utilitzat Mozilla Firefox v.3.6.16.
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FWKTEST –APLICACIÓ DE TEST–
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
JERARQUIA DE FITXERS (1)
FWKTEST –APLICACIÓ DE TEST–
JERARQUIA DE FITXERS (2)
Nom de la carpeta
Descripció
test.accions
Classes de les accions desenvolupades
test.forms
Classes dels formularis associats a les accions.
test.i18n
Fitxers de properties d’internacionalització. Es fan servir
per a convertir l’aplicació en multi-idioma.
test.model
Classes de model que utilitza l’aplicació.
/css
Fitxers d’estils de l’aplicació.
/images
Fitxers .gif d’imatges que es mostren en les vistes de
l’aplicació.
/jsp
Pàgines JSP. Vistes de l’aplicació.
/lib
Llibreries
necessàries.
FrameworkPFC.jar.
/tld
Fitxers d’etiquetes utilitzades.
/WEB-INF
Carpeta on es guarda el fitxer de configuració del
framework i fitxers que no han d’estar disponibles des
del servidor Web.
S’inclou
la
llibreria
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FWKTEST –APLICACIÓ DE TEST–
FLUX DE PANTALLES
Pantalla Principal de llistat d’estudiants
Pantalla Autenticació
Pantalla Ajuda
Pantalla Modificació/esborrat
Pantalla Alta estudiant
DISSENY D’UN MARC DE TREBALL DE PRESENTACIÓ PER A APLICACIONS J2EE
FWKTEST –APLICACIÓ DE TEST–
Construcció d’un nou framework de presentació–
CONCLUSIONS
Conclusions
La realització d’un marc de treball de presentació és una tasca molt atractiva des del punt de vista de
disseny i programació, però molt complexa, ja que són moltes les funcionalitats a oferir.
La realització del present projecte de final de carrera ha estat centrada en dos grans blocs:
Estudi i comparativa dels frameworks més importants que hi ha en ús a l’actualitat.
Disseny, implementació i testeig d’un nou marc de treball.
Els coneixements i l’experiència adquirida han permès:
Tenir una visió crítica més documentada per a escollir entre les diferents solucions disponibles al
mercat.
Adquirir pràctica en els desenvolupaments Java sota la plataforma J2EE.
Repercussió que té en el món empresarial reduint costos econòmics i temporals.