frameworks spring mvc- jsf

Upload: madmuppet

Post on 14-Jul-2015

1.680 views

Category:

Documents


2 download

TRANSCRIPT

Cmo Funciona Spring MVC Basado en consulta URL de http, el DispatcherServlet llama al controlador correspondiente. Una vista es renderizada y enviada a la respuesta http. Declaracin de Spring Servlet En 'WEB-INF/web.xml', se le declaran las URLs Spring DispatcherServlet y mapa '*.html': springmvc org.springframework.web.servlet.DispatcherServlet 1 springmvc *.html jsp/index.jsp

Configuracin de Spring Servlet Crear el archivo de configuracion Spring 'WEB-INF/springmvc-servlet.xml' (nombre basado en el nombre del servidor superior).

Mapear la URL /hello_world.html al controlador HelloWorldController. Declara resolucin de vista: cuando la vista 'view_name' es llamada (desde el controlador), el archivo '/jsp/view_name.jsp' ser usado. Controlador Creacin del controlador INF/src/springmvc/web/HelloWorldController.java'package springmvc.web; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; public class HelloWorldController implements Controller { public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String aMessage = "Hello World MVC!"; ModelAndView modelAndView = new ModelAndView("hello_world"); modelAndView.addObject("message", aMessage); } } return modelAndView;

'WEB-

Este controlador llama a la vista 'hello_world', pasndole 'message'(como un atributo Struts). Vista Ahora la vista: 'jsp/hello_world.jsp'. This is my message: ${message}

Muestra el atributo del mensaje anteriormente establecido en el controlador. Hacerlo funcionar Desde 'WEB-INF' tipo carpeta.ant

Volver a correr Tomcat y revisar si funciona. http://localhost:8180/springmvc/hello_world.html Resumen Tu proyecto debe lucir as:

- Declaramos servlet Spring en web.xml. - Creamos un archivo de configuracin Spring, donde mapeamos URL a un controlador y definir una forma de resolver las vistas. - Creamos un controlador y una vista.

Definiciones El Spring MVC Framework ofrece una sencilla interfaz basada en infraestructura web para la entrega arquitecturas MVC. En la mayora de los casos una aplicacin de Spring MVC es muy comprobable, porque Spring no requiere el desarrollador para extender una base abstracta acciones / controladores de Struts. Hay muchas otros Frameworks web basados en Java por ah (Struts, WebWork, varias implementaciones de JSF, Tapestry, etc) y todos tienen sus pros y sus contras, pero si usted ya est usando Spring Framework para otros servicios, un beneficio adicional de usar Spring MVC es que otros Spring Beans pueden ser fcilmente inyectados en los controladores de red. Si los servicios inyectados en los controladores son interfaces, entonces es muy fcil escribir implementaciones sencillas alternativas de las interfaces para el fin de probar sus controladores. Interfaces clave: Controlador - Debe implementar handleRequest ModelAndView (solicitud, respuesta) Esta es la interfaz de controlador base, comparable a la idea de una accin de Struts. Vista - Debe implementar void render (modelo, solicitud, respuesta) Este es el punto de vista MVC para una interaccin en la web. Las implementaciones son responsables para representar el contenido, y exponer el modelo. Para completar el tro MVC, tenga en cuenta que el modelo se maneja normalmente como un java.util.Map que se devuelve con la vista y los valores estn disponibles, por ejemplo en un JSP, utilizando un donde la identificacin corresponde al valor de la clave en el modelo (mapa). Clases clave: DispatcherServlet - el servlet principal que distribuye las solicitudes para los manejadores. Este ser normalmente conectado en su web.xml y se le asigna patrn(es) URL para ser manejada con Spring MVC. ModelAndView - Soporte tanto para modelo y vista en el marco web MVC. SimpleFormController - implementacin bsica de controlador para hacer envos de formularios web estndar, tiene forma configurable y puntos de vista de xito, y una cadena onSubmit para conveniencia primordial.

Spring es una tecnologa dedicada para permitir consruir aplicaciones usanjo POJOs, Rod Johnson- The Server Side.

Comparativa entre Spring MVC contra JSF Manzanas con naranjas. Spring es un Framework que integra la inyeccin de dependencia, orientada a aspectos de programacin y otras cosas varias en una sola pila. Sus manzanas en bruto a comparacin de manzanas sera J2EE. JSF es una tecnologa de capa de vista, basado en el paradigma Modelo Vista Controlador. Sus naranjas en bruto a comparacin de naranjas seran Spring MVC. Ambos se pueden utilizar distintas tecnologas de Vista (es decir, Facelets, JSP, Velocity, etc.), y ambos integran muy bien en sus respectivas pilas. La idea es que Spring le permite usar lo que quiera, para mezclar y combinar sus componentes con facilidad. As pues, en efecto, puede utilizar Spring para hacer su gestin de transacciones y AOP, pero optar por utilizar Spring MVC, Struts y JSF como Framework MVC. Con ese entendido, vamos ahora comparar manzanas con manzanas Spring MVC vs Struts vs JSF. Struts Struts se va a convertir en obsoleto muy pronto. Es uno de los primeros Framework MVC, y por lo tanto muy complicado y "hacia atrs" para los estndares de hoy en da (debido a la necesidad de mantener la compatibilidad hacia atrs, no lo pueden redisear la forma en que se debe hacer). Se confirma que no habr una puntales 2. El PPL puntales estn empezando un nuevo proyecto en struts-pizarra que se basan en totalmente diferente de los puntales JSF. El propio Struts slo se mantendr y ser mantenido por los que siguen interesados? en hacerlo, mientras que a los principales PPL se estn concentrando en la pizarra ahora. Esquisto en la actualidad es an muy joven, con slo una versin de este escrito. Esta versin se considera "relativamente estable", y slo para los primeros y PPL que estn interesados? en la evaluacin de l (Vase el sitio web). Spring MVC Similar al concepto de Struts, pero mucho ms elegante, bien pensado y para acabar con un montn de deficiencias y naturaleza engorrosa de Struts. Como Struts, tambin se basa en el modelo de arquitectura 2 JSF JSF es un estndar oficial de Oracle. Se trata de una especificacin, por lo tanto, tendr un montn de implementaciones. Ahora tambin es parte de las especificaciones J2EE. Por lo tanto, cualquier fabricante que quiera ser compatible con J2EE se ve obligado a salir con una implementacin JSF y proporcionar apoyo. En otras palabras, habr mucha competencia para ofrecer los lotes y lo mejor de las opciones. En la actualidad, las dos implementaciones principales JSF RI de Sun (Referencia de Aplicacin) y Apache MyFaces. JSF tiene una arquitectura y modelo de programacin totalmente diferente, abandonando el modelo clsico de arquitectura 2. Algunos PPL dicen que ahora es un verdadero modelo MVC y el modelo 2 es una MVC aguada. Se adopta un

nuevo modelo similar al de ASP.net, lo que hace que sea fcil para los constructores GUI WYSIWYG para generar pginas para usted (s, como M$ Visual Studio). Su estilo de programacin ser similar a Swing. Ahora pone oyentes en los enlaces y botones para activar eventos y organizar la distribucin del uso de objetos de la presentacin (por ejemplo, objetos de cuadrcula de diseo como en Swing. Se va a generar tablas y arreglar cosas para ti). Tiene una configuracin mucho menor que Struts, incluso si codifica duramente cdigo JSF sin constructores GUI (de forma correcta, por supuesto). Se siente mucho como modelo M $ 's lo nico es que no ser atrapado con una sola implementacin / proveedor / empresa. Si una aplicacin es psima, elegir otro proveedor. No se ve obligado a vivir con el feo, sucio y mal cdigo que una compaa genera. Usted tiene opciones. Rating comparativo (puntuacin por criterios): Criteria Developer Productivity Developer Perception Learning Curve Project Health Developer Availability Job Trends Templating Components Ajax Plugins or Add-Ons Scalability Testing i18n and l10n Validation Multi-language Support (Groovy / Scala) Quality of Documentation/Tutorials Books Published REST Support (client and server Mobile / iPhone Support Degree of Risk Totals Spring MVC 0.50 1.00 1.00 1.00 1.00 1.00 1.00 0.00 1.00 0.00 1.00 1.00 1.00 1.00 0.50 1.00 1.00 1.00 1.00 1.00 17 JSF 2 0.50 0.00 0.50 1.00 1.00 1.00 0.50 1.00 1.00 1.00 0.50 0.50 1.00 0.50 1.00 0.50 1.00 1.00 1.00 1.00 16.5

Spring MVC Pros o Fcil configuracin con Anotaciones y Convenciones. o Se integra con varias opciones de Vista de forma similar: JSP/JSTL. Tiles, Free Marker, Excel, PDF, JSON, Velocity. o Excelente soporte REST. o Ciclo de vida para unin primordial, Validacin, etc. o Inversin de Control facilita las pruebas. o Permite completo control de URL. o Permite usar Commons Validator, una solucin madura. o Permite agregar parmetros a un redireccionamiento. o Est obteniendo ms prensa, mayormente por otras caractersticas del Framework. Contras o Recarga instantnea incorporada, necesita JRebel o Spring Roo. o Proceso de desarrollo no abierto, necesita ser Spring Source. o Soporte Ajax no integrado, requiere librera 3rd-Party. o Configuracin intensiva, montones de XML. o Casi demasiado flexible, no tiene controlador par comn. JSF Pros o o o o o o o o Arquitectura de componente. Gran cantidad de libreras y herramientas. Aceptable soporte IDE. Estndar Java EE- bastante demanda y trabajos. Rpido y sencillo de desarrollar con iniciativa. Bastantes libreras de componentes. Posee mensajes definidos poco gratos, pero fciles de configurar. Se est volviendo bastante popular.

Contras o Pesado, tanto en CPU/ memoria y curva de aprendizaje. o No corre bien con REST o Seguridad. o No hay un recurso nico para implementacin. o Realiza POST para todo, URLs ni siquiera se consideran. o Sin soporte Ajax, utilizar ICEfaces y Ajax4JSF. o Requiere una solucin personalizada, mensajes i18n difciles de ingresar en Beans de pgina. Cmo elegir? Considerar: o El tipo de aplicacin que se est construyendo. o Facilidad de desarrollo. o Comunidad de proyecto. o Futuro y Ruta de proyecto.

o Mantencin. o Caractersticas tcnicas. Priorizar una lista de caractersticas que sean importantes para su aplicacin. Elegir 3-4 Frameworks y hacer un enganche de 1 semana con cada uno, desarrollando la misma aplicacin. Documentar y jerarquizar cada Framework contra su lista de caractersticas. Calcular y escoger! Despus de haber tomado la decisin o o o o o o Documentar las razones de su decisin. Permitir el desafo de los desarrolladores. Permitir que su prototipo sea escrito con otros Frameworks. No temer probar nuevos Frameworks. No temer a usar antiguos Frameworks. No temer a mantener su Framework existente. Spring Web MVC general

Un cliente HTTP, normalmente un navegador, hace una peticin al servidor web. Un controlador, que es una clase POJO anotada, recibe la solicitud, realiza alguna lgica de negocio, y aade datos al modelo. El modelo es simplemente una extensin de un java.util.Map y se utiliza para almacenar los datos que se muestran al usuario. El controlador tambin determina la vista que se va a mostrar. La vista puede ser una de varias tecnologas, pero es normalmente una pgina JSP que accede a la modelo con JSTL y JSP lenguaje de expresin.

La vista, est renderizada y los resultados se envan de vuelta al cliente. Inversion of Control Es un mtodo de programacin en el que el flujo de ejecucin de un programa se invierte respecto a los mtodos de programacin tradicionales. El flujo habitual se da cuando es el cdigo del usuario quien invoca a un procedimiento de una biblioteca. La inversin de control sucede cuando es la biblioteca la que invoca el cdigo del usuario. Tpicamente sucede cuando la biblioteca es la que implementa las estructuras de alto nivel y es el cdigo del usuario el que implementa las tareas de bajo nivel. La utilizacin de interfaces y la aparicin de los frameworks han popularizado este trmino. De hecho es el concepto central del Framework de Spring, ya que implementa un "Contenedor" que se encarga de gestionar las instancias (as como sus creaciones y destrucciones) de los objetos del usuario. Por tanto las aplicaciones que utilicen el framework de Spring (no Spring propiamente dicho) utilizarn Inversin de Control.

Programacin orientada a aspectos POA Entre los objetivos que se ha propuesto la programacin orientada a aspectos, estn principalmente el de separar conceptos y el de minimizar las dependencias entre ellos.

Un aspecto es una unidad que se define en trminos de informacin parcial de otras unidades. Es una unidad modular que se disemina por la estructura de otras unidades funcionales. Existe tanto en diseo como en la implementacin. Un aspecto de programa o de cdigo es una unidad modular del programa que aparece en otras unidades modulares del programa.

Para que aspectos y componentes se puedan mezclar, deben tener puntos comunes, llamados puntos de enlace. Un elemento es un lenguaje para definir la funcionalidad bsica es el lenguaje base. Uno o varios lenguajes de aspectos, un tejedor de aspectos. Las clases y aspectos se pueden entrelazar de forma esttica o dinmica. El primero implica modificar cdigo fuente de una clase insertando sentencias en los puntos de enlace. Es decir, el cdigo de un aspecto se introduce en el de la clase, por ejemplo el tejedor de Aspectos de AspectJ. El segundo necesita como requisito que los aspectos existan en forma explcita tanto en tiempo de compilacin como en tiempo de ejecucin. La separacin de conceptos es una herramienta de ingeniera de software que reduce la complejidad de las aplicaciones a niveles manejables para las personas y permite a los desarrolladores centrarse en problemas concretos, ignorando otros que en determinado momento no sean importantes.

JSF Ahora algunos conceptos bsicos:

Componente UI: Un objeto mantenido en el servidor que provee funcionalidades para interactuar con el usuario final. Son JavaBeans con propiedades, mtodos y eventos. Estn organizados en una vista, que es un rbol de componentes usualmente mostrados como una pgina.

Renderer: Responsable de mostrar el Componente UI y de traducir la entrada del usuario en un valor reconocido por el componente. Un Renderer puede ser diseado para trabajar con 1 o muchos componentes y un componente UI puede ser asociado con muchos diferentes Renderers (es una relacin muchos a muchos).

Validador: Responsable de asegurar que el valor ingresado por un usuario es aceptable. Uno o ms validadores pueden ser asociados con un solo componente UI.

Backing Beans: JavaBeans especializadas que colectan valores de componentes UI e implementan mtodos que escuchen eventos (listeners). Tambin pueden contener referencias a componentes UI.

Eventos y Listeners: JSF utiliza el modelo evento/listener (tambin utilizado por Swing). Los componentes UI generan eventos y se pueden registrar listeners para que manejen dichos eventos.

Mensajes: Informacin que es mostrada al usuario. Casi cualquier parte de la aplicacin puede generar mensajes de informacin u error que pueden ser mostrados al usuario.

Navegacin: La habilidad de moverse de una pgina a otra. JSF tiene un poderoso sistema de navegacin integrado con listeners especializados.

PROGRAMACION POR CAPAS Capas y niveles Capa de presentacin: es la que ve el usuario (tambin se la denomina "capa de usuario"), presenta el sistema al usuario, le comunica la informacin y captura la informacin del usuario en un mnimo de proceso (realiza un filtrado previo para comprobar que no hay errores de formato). Tambin es conocida como interfaz grfica y debe tener la caracterstica de ser "amigable" (entendible y fcil de usar) para el usuario. Esta capa se comunica nicamente con la capa de negocio. Capa de negocio: es donde residen los programas que se ejecutan, se reciben las peticiones del usuario y se envan las respuestas tras el proceso. Se denomina capa de negocio (e incluso de lgica del negocio) porque es aqu donde se establecen todas las reglas que deben cumplirse. Esta capa se comunica con la capa de presentacin, para recibir las solicitudes y presentar los resultados, y con la capa de datos, para solicitar al gestor de base de datos almacenar o recuperar datos de l. Tambin se consideran aqu los programas de aplicacin. Capa de datos: es donde residen los datos y es la encargada de acceder a los mismos. Est formada por uno o ms gestores de bases de datos que realizan todo el almacenamiento de datos, reciben solicitudes de almacenamiento o recuperacin de informacin desde la capa de negocio.

Persistencia de objetosLa persistencia de objetos puede ser fcilmente confundida con la persistencia en memoria, incluso con la persistencia de aplicacin. La persistencia de objetos consiste en la inicializacin de objetos con sus atributos por defecto. Esto es posible con 2 maneras de proceder.

Sobre un medio (de almacenamiento) fijo se guarda (cuando el objeto fue definido) un conjunto de datos que son recuperados cuando el tipo de objeto en cuestin es creado, dichos datos son transferidos a las propiedades del objeto. Otro objeto mantiene los datos que sern transferidos a las propiedades del nuevo objeto creado. En este caso los datos estn en memoria.

Hay muchos ejemplos, para este tipo de persistencia, un caso tpico son los controles ActiveX. Cuando, el control es compilado junto al cdigo se guarda una copia de los datos que el programador defini por defecto. Cuando se instancia una referencia al

control, ste lee del disco (donde est almacenada la librera asociada al control), los datos que definen configuran sus propiedades.

Otro ejemplo, son las primitivas que se utilizan para recrear objetos 3D a partir del cual pueden crearse objetos ms complejos. Supongamos que vamos a crear un avin con geometra 3D, inicialmente podemos crear cada primitiva que compone el mismo, desde memoria, el motor de la aplicacin puede definir un nuevo objeto con las medidas que el usuario define y posicionado igualmente en las cordenadas que el usuario seala para crear el objeto, sin embargo a medida que el objeto crece y tiene ms datos, se hace necesario guardar el objeto a disco. Este objeto puede ahora ser guardado y ser utilizado en las prximas veces como una primitiva, un punto a partir del cual iniciar la creacin de otros objetos ms complejos basados en ste. Si ahora quiero crear un nuevo modelo de avin posiblemente sea ms sencillo modificar la primitiva definida que crear uno totalmente nuevo, por tanto es necesaria la persistencia de la primitiva, para recrear nuevos objetos basados en ella. Las primitivas complejas se acoplan a la primera manera definida y las primitivas sencillas se ajustan a la 2 manera definida.

Para guardar los datos de objetos a disco, se recurre a un mecanismo conocido como serializar que dispone en una secuencia de bytes todos los datos (o slo aquellos que se desee) que definen el objeto.