lunes, 21 de julio de 2008

Día 13: Introducción a JSP

0. Completar el ejercicio de realizar un servlet que captura los parámetros "nombre" y "dni" y consulte a la BBDD para ver si el usuario está dado de alta en la tabla Personas. Si coincide el nombre y el dni se le redirige a la pantalla main.jsp que contiene la home de la aplicación y si son
incorrectos los parámetros se le reenvia a la página de login. OK

1. Añadir al ejemplo anterior una página html login.hmtl con dos campos nombre y clave con un botón de envío y otro de borrado para que envíe los parámetros al servlet anterior. OK

3. Añadir un JavaScript que valide los dos campos y verifique que ninguno es vacío. OK

4. Introduccion a JSP.

1.1 Necesidades de arquitectura, caminando hacia el patrón M-V-C.

- El problema que tiene nuestro servlet de login. Tiene la lógica de presentación, de negocio y navegación todo junto. Diseño deficiente. Los JSP´s bien utilizados separan la lógica de presentación de la lósgica de negocio.

1.2 Nociones Básicas de JSP. OK

- ¿Qué es un JSP?

- Variables predefinidas:

- HTTPServletRequest
- HTTPServletResponse
- jspPrintWriter
- HttpSession

- Comentarios JSP y HTML
- Expresiones
- Scriptlets
- Declaraciones
- Directivas
- page: import,content-type
- include:
- taglib

1.3 Java Beans

- ¿Qué son?
- Ámbito o scope:

5. Ejercicios

5.1 Includes para implementar un layout sencillo (main.jsp). OK

5.2 Beans para implementar la página de login de tal forma que aparezca un mensaje de error si el usuario o clave son incorrectos. TO-DO

5.3 Utilizar Beans y scriptlets para que en el header aparezca los datos del usuario y la hora en la que se validó en la aplicación. OK

5.4 Realizar un par de pantallas de alta de usuarios con una navegación tipo wizard para ver como funciona el scope a sesion. TO-DO

5.5 Hacer una pantalla de envío de mails. (Si no da tiempo se implementará con struts) . TO-DO

Día 14: Seminario de Struts y mini framework Front Controller

1. Seminario de Struts

2. Presentación del mini framework donde se ha utiliza el patron Front Controller aplicado los conocimientos fundamentales del curso, como son Java Básico, patrones de diseño sencillos como Factory, conceptos de orientación a objetos básicos, ciclo de vida de los servlets, y concurrencia. El Objetivo es que dispongan de una pequeña arquitectura que os permita abordar funcionalidad de negocio lo antes posible sin tener que dedicarle demasiado tiempo a diseño general de la aplicación.

miércoles, 16 de julio de 2008

Prácticas

Habrá tres grupos:

Grupo A: Proyecto Gestión de Vacaciones
  • ÁLVARO SAUGAR
  • JAVIER GALINDO
  • JOSÉ MARÍA ALONSO


Grupo B: Proyecto Gestión de Directorio
  • JULIO ÁNGEL CRUZ
  • JAVIER VALIENTE
  • CRISTINA LÓPEZ
  • VALENTÍN RÍOS
Grupo C: Gestión de Selección
  • YUSEF ALI
  • JAVIER ARANCE
  • DANIEL PÉREZ

Entorno de desarrollo: EL entorno de desarrollo será el utilizado durante el curso con la Suite instalada, el servidor de ficheros y BBDD tal como se describe en la entrada de entornos. En el CVS se han habilitado tres proyectos vacíos /cvspanel/formacion/panelfuturo/GrupoA, /cvspanel/formacion/panelfuturo/GrupoB y /cvspanel/formacion/panelfuturo/GrupoC para que se utilicen como sistema de control de versiones de cada proyecto a realizar por cada Grupo.

Entorno de entrega: El jueves 24 a las 9:00 comienza la integración de cada proyecto en el tomcat del servidor de integración
pc-smultimedia. Se seguirá el procedimiento de instalación suministrada por cada equipo. A las 11 comenzarán las presentaciones de cada una de las prácticas.

Dia 12: Introducción a JSP

0. Completar el ejercicio de realizar un servlet que captura los parámetros "nombre" y "dni" y consulte a la BBDD para ver si el usuario está dado de alta en la tabla Personas. Si coincide el nombre y el dni se le redirige a la pantalla main.jsp que contiene la home de la aplicación y si son incorrectos los parámetros se le reenvia a la página de login. OK

1. Añadir al ejemplo anterior una página html login.hmtl con dos campos nombre y clave con un botón de envío y otro de borrado para que envíe los parámetros al servlet anterior. OK

3. Añadir un JavaScript que valide los dos campos y verifique que ninguno es vacío. OK

4. Introduccion a JSP.

4.1 Necesidades de arquitectura, caminando hacia el patrón M-V-C.
- El problema que tiene nuestro servlet de login. Tiene la lógica de presentación, de negocio y navegación todo junto. Diseño deficiente. Los JSP´s bien utilizados separan la lógica de presentación de la lósgica de negocio. OK

4.2 Nociones Básicas de JSP.

- ¿Qué es un JSP? OK

- Variables predefinidas:

- HTTPServletRequest. OK
- HTTPServletResponse. OK
- jspPrintWriter. TO-DO
- HttpSession. OK

- Comentarios JSP y HTML.OK
- Expresiones. OK
- Scriptlets. OK
- Declaraciones. OK
- Directivas
- page: import,content-type. OK
- include. OK
- taglib. TO-DO

1.3 Java Beans

- ¿Qué son? OK
- Ámbito o scope: TO-DO
-Page: El bean sólo es visible a nivel de página
-Request: El bean sólo es visible mientras "viva" la Request. Atención a los redirects que una vez que el servidor devuelve el resultado al Browser la HttpServletRequest se destruye.
-Session: El bean es visible a nivel de session, es decir duarante el tiempo que esté activa la HttpSession
- Application: El bean está accesible durante todo el tiempo que esté arrancada la aplicación web.

5. Ejercicios

5.1 Includes para implementar un layout sencillo (main.jsp). OK

5.2 Beans para implementar la página de login de tal forma que aparezca un mensaje de error si el usuario o clave son incorrectos. TO-DO

5.3 Utilizar Beans y scriptlets para que en el header aparezca los datos del usuario y la hora en la que se validó en la aplicación.OK

5.4 Realizar un par de pantallas de alta de usuarios con una navegación tipo wizard para ver como funciona el scope a sesion. TO-DO

5.5 Hacer una pantalla de envío de mails. (Si no da tiempo se implementará con struts).TO-DO

martes, 15 de julio de 2008

Dia 11: Introducción II a Aplicaciones Web con Java EE

1. Repasar lo impartido el día anterior con las actualizaciones realizadas en el Blog. OK

2. Ampliando la funcionalidad del Servlet tipo HelloWorld.

- Integrando el código de la primera semana. TO-DO (No compila el JavaBásico)
- Escribir logs, de todos los parámetros que aparecen en el HttpReq.OK
- Utilizar el HelloImpl para sacar el mensaje. TO-DO (No compila el JavaBásico)
- Utilizar el Servlet Config para sacar parámetros. OK

3. Variables estáticas entre Servlets atención a la concurrencia.

- Ejemplo de contador como atributo de clase. OK
- Ejemplo de contador como atributo estático de clase ¿Qué pasa con varios servlets de la misma clase? OK
- Utilizando la sesion HTTP para tener un contador por usuario. OK

4. Ejemplo de Login construyendo un Servlet que accede a la BBDD y redirige el flujo de navegación.

- Configurando del DataSource en el Tomcat. OK
- RequestDispatcher. OK

lunes, 14 de julio de 2008

Día 10: Introducción a Aplicaciones Web con Java EE

1. Repasando la actividad formativa de la semana pasada. OK

2. Presentación de lo planificado para la presente semana formativa. OK

- Día 1 Introducción I a Java EE
- Día 2 Introducción II a Java EE
- Día 3 Introducción I a Struts
- Día 4 Introducción II a Struts
- Día 5 Presentación de las prácticas


3. Configurando el Eclipse-Tomcat Parte I. OK

- A partir del proyecto JSPBasico comfigurar el eclipse para conectarlo al tomcat e ir creando el proyecto paso a paso.

4. Concepto de Contenedores. OK

- Contenedor Web: Apache
- Contenedor de Servlets: Tomcat
- Contenedor de EJBs
- ¿Qué define el contenedor? el API.
- Repasar todo lo que tiene el tomcat utilizando la documentación del propio servidor http://localhost:8081/tomcat-docs/

5. Arquitectura WEB aplicaciones multicapa (3 niveles). TO-DO

- Explicar de donde venimos en arquitecturas software monolíticas de cliente servidor a aplicaciones multicapa en arquitecturas web Java EE.

6. Protocolo de comunicaciones HTTP: OK

- Con el tcpmon se muestra a bajo nivel el protocolo HTTP en accion.

7. Entornos de ejecución en una aplicación WEB: OK

- ¿Qué se ejecuta en el cliente y qué en el servidor?
- Introduccion a HTML, JavaScript, Otros plugins.


8. Primer componente Java EE en aplicaciones Web el Servlet.

- El Estandar JSP 2.0 marca toda la estructura de una aplicación web en Java. Punto de contacto con el contenedor de servlets. OK

- Con el proyecto JSPBasico ir creando una aplicación WEB. OK
- Muy importante el classpath del tomcat: JDK_TOOLS, jsp-api.jar, servlet-api.jar

- Estructura de directorios: OK

- web.xml: OK

- Pagina de inicio: OK

- Introduccion a Servlets:

- HTTPServlet:OK
- HttpServletRequest: OK
- HttpServletResponse: OK
- HttpSession: OK
- RequestDispatcher: OK
- Writer: Para escribir la salida: OK
- content-type:OK
- web.xml: OK
- Ciclo de vida y concurrencia ¡¡Atención a poner atributos de escritura a nivel de clase!! OK

- Ejercicio Hacer el Servlet Hola Mundo. OK

- Integrando el código de la primera semana.

- Escribir logs. OK
- Utilizar el HelloImpl para sacar el mensaje.TO-DO
- Utilizar el Servlet Config para sacar parámetros. OK

- Variables estáticas entre Servlets atención a la concurrencia.

- Ejemplo de contador como atributo de clase. OK
- Ejemplo de contador como atributo estatico de clase ¿Que pasa con varios servlets de la misma clase? OK
- Utilizando la sesion HTTP para tener un contador por usuario. OK

Día 10: Arquitectura SOAP y WebServices

1.- Introducción a SOAP (Simple Objet Access Protocol)

2.- SOAP Envelop, Header, Body.

3.- Persistencia de Objetos con SOAP.

4.- Introducción a WebServices.

5.- Ficheros WSDL y UDDI.

6.- Arquitectura de una aplicación distribuida mediante WebServices.

Día 9. Introducción al XML

1.- Especificación XML como un Metalenguaje.

2.- Construcción de un fichero XML Básico.

3.- Validación del contenido XML. Fichero DTD y XSD.

4.- Fichero XML como usarlo en persistencia.

5.- Estandares sobre XML: VoiceXML, CCXML, XBRML, ...

Día 8: Acceso a Datos. Continuación.

1.- Crear Personas en el modelo de datos diseñado anteriormente.

2.- Crear Etiquetas en el modelo de datos diseñado anteriormente.

3.- Crear Historias en el modelo de datos diseñado anteriormente.

4.- Relacionar Historias y Personas

5.- Relacionar Historias y Etiquetas

Día 7: Acceso a Datos

1.- Analisis de Datos con la especificación de Historias. Creación de la Base de Datos.

2.- Introducción a JDBC: (Java Data Base Conectivity).

3.- Conexión a la base: Driver de MySQL, Dirección de BD y Conexión.

4.- Uso del API JDBC.

Día 6: Bases de Datos

1.- Introducción al Lenguaje SQL para Bases de Datos Relacionales.

2.- Sentencias básicas: de consultas Select, de Manejo de datos: Insert, Update y Delete.

3.- Sentencias de creación y borrado de tablas: Create y Drop.

4.- Uso de la herramienta de administración de BD de MySQL.

5.- Introducción al Modelo Entidad-Relación.

6.- Ejercicios sobre lo anteriormente visto.

Contenido de la tercera semana

El plan inicial es el siguiente:

  • Día 1 Introducción I a Java EE
  • Día 2 Introducción II a Java EE
  • Día 3 Introducción I a Struts
  • Día 4 Introducción II a Struts
  • Día 5 Presentación de las prácticas

lunes, 7 de julio de 2008

Día 5: Java Básico III Ciclo de desarrollo en aplicaciones Java

I. Refactorizamos para dejar en el paquete es.panel.panelfuturo.core las clases comunes de los ejercicios realizados durante la semana.

II. Repasamos con un poco más de detalle el ANT a partir de los build.xml y build.properties del proyecto JavaBásico.

III. Realizamos un ejercicio completo con el fin de consolidar todo lo aprendido durante los 4 días de curso, con los siguientes requerimientos:

Ejer. 3: Implementar el Requisito Funcional MOD-02-RF-002 definido en la historia WP0-00-04.txt, de forma iterativa:

3.1 Versión 0.5: El usuario puede dar de alta una historia y almacenarla. OK

3.2 Versión 0.6: La aplicación permite:

3.2.1 Dar de alta tantas historias como requiera el usuario y almacenarlas. TO-DO

3.2.2 Acceder a las historias guardadas y permitirle modificarlas y borrarlas. TO-DO

3.3 Versión 0.7: Validaciones de los campos. TO-DO

jueves, 3 de julio de 2008

Día 4 Java Básico III

I. Repaso teórico a todos los conceptos manejados hasta ahora. Con las transparencias.

II. Incorpoando frameworks a nuestra aplciación HelloWorld

Utilizando nuestro pequeño desarrollo helloworld hemos realizado una introducción básica a elementos básicos en el desarrollo de aplicaciones Java, con el fin de agilizar las pruebas, escribir trazas y agilizar el despliegue y entrega de la aplicación.

2.1. Introducción a JUnit. Con ejemplos prácticos en los paquetes es.panel.panelfuturo.junit.*

2.2 Introduccion a Log4J. Con ejemplos prácticos en los paquetes es.panel.panelfuturo.junit.*

2.3 Introducción a ANT. Con ejemplos prácticos en la carpeta ant/ del proyecto JavaBásico

2.4 Implementando una capa de persistencia. Con ejemplos prácticos en es.panel.panelfuturo.core

2.5 Ejemplo prototipo del Requisito Funcional MOD-02-RF-002 definido en la historia WP0-00-04.txt.

miércoles, 2 de julio de 2008

Día 3 Java Básico II

I. Repaso de lo más importante que dimos ayer.

1.1 Hemos repasado que son los interfaces y para que se utilizan.
1.2 Hemos repasado el concepto de Polimorfismo.
1.3 Hemos repasado los conceptos de variables y métodos estáticos.
1.4 Todos estos conceptos se han implementado en el ejemplo del gestor de Autopistas que está en el paquete es.panel.panelfuturo.gestorautopistas

II. Ejercicio HelloWorld

Se ha propuesto une ejercicio desde una pequeña historia escrita por un cliente "ficticio":

Crear una clase HelloWorld que implemente IHello y donde el "saludo" debe ser la cadena "Hola desde Panel Futuro a [nombre de la persona]".

  • Por ejemplo, para Manolo sería "Hola desde Panel Futuro a Manolo"

La aplicación debe tener un interfaz de usuario que permita a un usuario no experto ejecutar el programa y debe ser enviada la entrega por mail para ser ejecutada en un entorno con Windows y JDK1.5.

Realizando dicho ejemplo hemos realizado:

2.1 Definido una nomenclatura de paquetes para comprobar los problemas que pueden surgir cuando hay muchas clases que se llaman de la misma forma.

2.2 Por parte de los Analistas se ha generado un diagrama en UML con el Dia que modela los componentes a realizar.

2.3 Los programadores han realizado la implementación que se pedía en la historia.

2.4 Los integradores han implementado un StringUtil con los algoritmos para comparar cadenas y una clase HelloTest que permite probar de forma automática la funcionalidad pedida por el cliente.

2.5 Los de Pruebas han generado un Interfaz de usuario MainHelloWorld, que permite al usuario acceder a la funcionalidad solicitada.

2.6 Se ha realizado una distribución del proyecto, utilizando el eclipse para generar el jar y se ha programado un script run.bat para ejecutar el programa en el entrorno definido por el cliente.

2.7 Los de Pruebas han verificado que el aplicativo funciona correctamente.

2.8 Se ha etiquetado el software y se ha realizado la entrega por mail.

2.9 El cliente ha dado el OK, al software.

Buen trabajo

DNM

martes, 1 de julio de 2008

Día 2 Introduccion a programación básica con Java

0. Cosas Pendientes

0.1 Instalar dia. OK

0.2 Instalar Herramientas de MySQL. OK

0.3 Modificar la configuración de Eclipse para que permita
trabajar con nomenclatura de java 1.4.
window>preferences>Java>Compiler> C. Compilance Level> 1.4

Utilizando el ejemplo del Gestor de Autopistas que está en el CVS hemos
repasado los siguientes conceptos.

I. Programación Orientada a Objetos

1.1 Programación Orientada a Objetos. OK
1.2 Concepto de Objeto. OK
1.3 Concepto de Clase. OK
1.4 Herencia. OK
1.5 Asociación
1.6 Agregación
1.7 Cardinalidad
1.8 Clases Abstractas. OK
1.9 Polimorfismo.OK


II. Programación Básica con Java OO

2.01 Clases. OK
2.02 Atributos y Métodos. OK
2.03 Atributos y Métodos estáticos. OK
2.04 Creación de Objetos. OK
2.05 Herencia. OK
2.06 Clases Abstractas. OK
2.07 Referencias. OK
2.08 Interfaces. OK
2.09 Paquetes. OK

III. Programación Básica con Java

3.01 ¿Como funciona Java? OK
3.02 Arquitectura de la JVM. TO-DO
3.03 JSDK (Java Standar Edition) vs Java EE (Enterprise Edition) TO-DO
3.04 Creando un proyecto Java con Eclipse.OK
3.05 Organizando el código. OK
3.06 Comentarios y buenas prácticas.OK
3.07 Tipos de Datos. TO-DO
3.08 Operadores. TO-DO
3.09 Control del Flujo. TO-DO
3.10 Excepciones. OK

lunes, 30 de junio de 2008

Día 1 Entorno de desarrollo

Resumen de lo más importante

1. Presentación del curso por parte de RRHH y Operaciones

2. Presentación del contenido teórico y práctico del curso utilizando el Blog http://panelfuturo.blogspot.com/. Nos vamos a organizar por roles que se van a cambiar a lo largo del curso. Cada semana siempre va a ver 3 personas en cada ROL que van a ser:

ROL Analista: 3 alumnos
ROL Desarrolladores: Todos.
ROL Integrador/Sistemas: 3 alumnos.
ROL Pruebas: 3 alumnos.

Responsabilidades de cada ROL:

Analista: Entender al cliente y explicarselo a los desarrolladores
de forma escrita y hablada.

Desarrolladores: Realizar buenos diseños e implementar los componentes con sus correspondientes pruebas unitarias, todo ello bajo el sistema de control de versiones.

Integrador: Mantener el entorno de integración y comprobar que las pruebas unitarias funciona correctamente en dicho entorno.

Pruebas: Verificar que el aplicativo cumple con el alcance funcional definida en la entrega realizada en el entorno de integración.


5. Seguir la bibliografía e ir instalando todo el software salvo las
configuraciones de los pooles de conexión a la BBDD.

- Estructura de directorio: Importante
- Variables de entorno: Flexibilidad
- ANT: Fundamental
- Tomcat: Contenedor de Servlets
- JBoss: Contenedor de Ejb
- Eclipse: IDE

6. Instalar el ThunderBird y la cuenta de panel futuro. Normas de uso de
la sala de formación.

7. Editor TextPad.

8. Instalar el VNC.

9. Repasando como funciona eclipse y darse una vuelta por su web:

- Tema de las vistas y perspectivas:

1. Perspectiva java: Los bin no se ven, vistas outline, enlazar el package explorer a las pestañas edición, vista bookmarks, vista console, búsquedas, vista de problems.
2. Perspectiva CVS Repository
3. Perspectiva Team Synchronized
4. Perspectiva de Debug.

- Tema de jdks
- Tema de las plantillas de los ficheros Java: Codetemplates.xml
- Tema de la codificación de caracteres. Unificar.
- Tema de plantillas de asistencia: Poner el ejemplo del método público que no cumple las especificaciones de SUN.
- Tema teclas de acceso rápido. Las mas útiles son
  • Ctrl+Shift+T: Busca clases.
  • Ctrl+Shift+O: Organiza imports.
  • Alt+Flechas: navega por las pestañas.
  • F5,F6,F7: Parar depurar los programas.

- Tema de generación de java doc
- Tema de exportación de jars del proyecto.
- Tema de la compilación del eclipse.
- Tema del Clean de los proyectos. Cuando las cosas no van.
- Tema arranque de los servidores.


9. Tema CVS: Esencial en cualquier proyecto. Manejar los conceptos más
importantes. Por experiencia: ¡¡TODO LO QUE NO ESTÁ EN EL SCV NO EXISTE!!

- Update: Significa actualizar el sandbox local desde la última version del repositorio remoto. Hay que estar sincronizado lo más posible para evitar sorpresas.

- Commit: Significa actualizar el repositorio remoto con los cambios del sandbox local. Cuidado con lo que se sube por que afecta al resto del equipo. Por ejemplo una clase que no compile puede parar el trabajo de todo el equipo.

- Merge: Cuando hay conflictos, mas de dos personas del equipo han modificado el mismo fichero. Hay que decidir que es lo bueno antes de poder hacer un commit. Estos problemas surgen fundamentalmente cuando, hay un mal diseño de la aplicación (cuellos de botella), y cuando la gente pasa bastante de hacer updates frecuentes. El primero se soluciona refactorizando y el segundo quedándose mas tiempo currando por que el trabajo no sale.


10. Instalar dia.

11. Instalar Herramientas de MySQL.
12. FIN del entorno.

sábado, 28 de junio de 2008

Datos del entorno de formación

Servidor del curso

  • Nombre: pc-smultimedia
  • Usuario: curso
  • Datos acceder por VNC son los siguientes:
  • Host: pc-smultimedia

Software Instalado:

  • Servidor de ficheros: Panel Futuro 2008
  • Entorno de Integracion: Entornos_PanelFuturo_2008
  • BBDD MySQL: Esquema=panelfuturo;usuario=panelfuturo_own;pass=panel
  • Tomcat: Puerto 8080
  • JBoss: Puerto 1099
Puestos de los alumnos

ThunderBird:
  • Cuenta de correo: 2008.panelfuturo@panel.es
  • servidor smtp: correo.panel.es
  • contraseña: PanelFuturo08.

Roadmap del Proyecto

Semana I: Formador Diego
  1. - Día 1 Entorno de desarrollo.
  2. - Día 2 Introduccion a programación básica con Java.
  3. - Día 3 Java Básico II e introducción a Java EE.
  4. - Día 4 El patrón M-V-C en JEE.
  5. - Día 5 Ciclo de desarrollo en aplicaciones Java EE, EJB 3.0 y ANT.
Semana 2: Formador Juan Carlos
  1. - Día 1 Lenguaje SQL: Modelo entidad-relación Análisis y diseño de datos.
  2. - Día 2 Acceso a datos JDBC / DAO / JDO.
  3. - Día 3 EJB 3.0 como Standar de persistencia.
  4. - Día 4 Introducción a XML y SOAP.
  5. - Día 5 Introducción a Web Services.
Semana 3: Formador Diego
  1. - Día 1 Introducción I a Struts.
  2. - Día 2 Introducción II a Struts.
  3. - Día 3 Integrando Struts y EJB 3.0
  4. - Día 4 Ejemplo Java EE completo.
  5. - Día 5 Presentación de las prácticas.
Semana 4: Formador Juan Carlos
  1. - Día 1 Laboratorio de practicas I.
  2. - Día 2 Laboratorio de practicas II.
  3. - Día 3 Laboratorio de practicas III.
  4. - Día 4 Presentación de las Prácticas y FIN del proyecto.

Alumnos

Vuestros compañeros de curso son:

  • JULIO ÁNGEL
  • JAVIER GALINDO
  • CRISTINA LOPEZ
  • JAVIER ARANCE
  • JAVIER VALIENTE
  • YUSEF ALI
  • HÉCTOR BURGOS
  • ÁLVARO SAUGAR
  • MANUEL FERNANDEZ
  • JOSÉ MARÍA
  • DANIEL PÉREZ
  • VALENTÍN RÍOS

Formadores

Los formadores del proyecto son:
  • Diego Núñez Monasterio: diego.nunez@panel.es
  • Juan Carlos Novillo: juancarlos.novillo@panel.es
Para cualquier duda, ya sabéis, podéis enviar un mail con lo que necesitéis.