• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Programacion web java
 

Programacion web java

on

  • 1,812 views

 

Statistics

Views

Total Views
1,812
Views on SlideShare
1,812
Embed Views
0

Actions

Likes
1
Downloads
63
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Programacion web java Programacion web java Presentation Transcript

    • PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 01
    • Agenda de la sesión Objetivos y fórmula de evaluación del curso. Conceptos relacionados a Internet y al desarrollo de aplicaciones Web. Herramientas a utilizar en el curso. Aplicaciones Web en Tomcat y Servlets.
    • Objetivos de la sesión Aprender los primeros conceptos relacionados a Internet y los principales elementos dentro de las aplicaciones Web. Conocer las herramientas que se utilizarán durante el transcurso del curso. Mostrar como se estructura una aplicación Web dentro de Tomcat. Definir, como crear y acceder a Servlets.
    • Objetivos del curso Impartir los principales conceptos, técnicas y herramientas para el desarrollo e implementación de una aplicación Web con Java. Desarrollar en el alumno capacidades para analizar situaciones problemáticas y/o generar ventajas competitivas basadas en aplicaciones Web con Java definidas bajo una arquitectura adecuada. Implementar un proyecto que permita al alumno desarrollar capacidades de trabajo en equipo, trabajo bajo presión, disposición a la investigación y el aprendizaje de tecnologías emergentes.
    • Forma de evaluación del curso PF = (0.2 * EF) + (0.2 * EP) + (0.1 * PE) + (0.5 * PL) Donde: EF: Examen Final Teoría EP: Examen Parcial Teoría PE: Promedio de Evaluaciones PL: Promedio de Laboratorio PE = Promedio de controles, trabajos, casos y participación en Teoría.
    • Bibliografía para el curso Core J2EE Patterns – Best Practices and Design Strategies Deepak Alur, John Crupi, Dan Malsk – PrenticeHall Java Servlet Specification Danny Coward, Yutaka Yoshida – Sun Microsystems Base de Datos con Java. Mukhar Kevin. Anaya Multimedia.
    • Conceptos en Internet Internet. Intranet. Nombres de dominio. URL. HTTP.
    • Conceptos en Internet Internet Es una red de redes a escala mundial de computadoras que permite comunicar, compartir recursos y datos entre sus diferentes usuarios en distintas áreas geográficas. Intranet Es una red interna o red local privada cuyo acceso está restringido por un sistema firewall o por un usuario y clave que evita las entradas no autorizadas en dicha red.
    • Conceptos en Internet Nombres de dominio Es un método que sirve para asignar nombres a las computadoras a través de una estructura jerárquica. Los nombres están formados por palabras separadas por puntos y cada palabra representa un subdominio, generalmente de la siguiente forma: nombrehost.subdominio.subdominio.dominioprincipal mail.usmp.edu.pe
    • HTTP Hypertext Transfer Protocol (HTTP) es usado para transferir o para transportar información a través de la Internet. El intercambio de información se realiza entre un software cliente (un navegador de Internet) y un servidor en el otro (un servidor Web), operando ambos bajo este protocolo. Este uno de los protocolos más utilizado.
    • HTTP - Transacciones HTTP es un protocolo del tipo request/response entre los clientes y servidores.  Request:cuando solicitamos un recurso.  Response: cuando obtenemos la respuesta del servidor Cliente Request Servidor index.html Browser Servidor Web index.html Response index.html
    • HTTP - MétodosTípicamente un cliente Web se comunica con un servidor Webusando los métodos: GET y POST.GET es usado para pedir información al servidor. http://www.hi5.com/buscar.jsp?nombre=juan POST es usado para enviar datos al servidor. <form action="procesa_datos.jsp" method=“post” name="f_dato"> <input type="text" name="nombre"> <input type="text" name=“apellido”> <input name="btn_enviar" type="submit" value="Enviar"> </form>
    • URL Para acceder a algún recurso en Internet es necesario ingresar en un navegador una dirección. Esta dirección es denominada URL y esta compuesta por:
    • Herramientas J2EE Java 2 Platform Enterprise Edition es una plataforma completa, estable, segura y rápida para el desarrollo, despliegue y ejecución de aplicaciones empresariales. Se compone del JRE y JDK. MySQL MySQL es un sistema de gestión de base de datos relacional.
    • Herramientas Eclipse Entorno de desarrollo integrado para desarrollar aplicaciones. Apache Tomcat Contenedor de aplicaciones Web desarrolladas con Java que implementa el protocolo HTTP.
    • Tomcat - Estructura
    • Aplicaciones en Tomcat
    • Aplicaciones en Tomcat /aplicacion1 Directorio raíz de la aplicación web; aquí se colocan todos los archivos HTML, JSP, etc. que utiliza la aplicación. Se pueden crear subdirectorios adicionales. /aplicacion1/WEB-INF Directorio que contiene todos los recursos relacionados con la aplicación web que no son de acceso directo para un cliente (browser). En este directorio se coloca el archivo descriptor web.xml. /aplicacion1/WEB-INF/classes Directorio que contiene todos los servlets y cualquier otra clase de utilidad que se necesite. Por lo general contiene sólo archivos compilados .class
    • Aplicaciones en Tomcat Archivo de configuración web.xml Conocido como archivo descriptor de la aplicación Web. Este archivo xml se ubica dentro del directorio WEB-INF y contiene la descripción de la configuración correspondiente a la aplicación Web. Archivos WAR Un archivo WAR (Web ARchive) es la representación de una aplicación Web en una unidad única. Es el método estándar empleado para empaquetar una aplicación Web y dejarla lista para su distribución y acceso a través de servidores Web con soporte para servlets y páginas JSP.
    • Servlets Un servlet es un componente J2EE que extiende la capacidad de proceso de un servidor y que emplea el paradigma request – response, por lo tanto: “Un servlet es una clase Java que recibe requerimientos de un cliente para cumplir con un servicio; luego de cumplir con el servicio, envía la respuesta hacia el cliente.”
    • Servlets
    • Servlets – Ciclo de vida El contenedor Web carga la clase y crea una nueva instancia del Servlet. El contenedor Web inicializa la instancia del Servlet.El contenedor Weblibera los recursosutilizados.
    • Servlets - Ejemplo
    • Servlets – Registro en web.xml<web-app>… <servlet> <servlet-name>MiServlet</servlet-name> <servlet-class>prog1.sesion2.PrimerServlet</servlet- class> </servlet> <servlet-mapping> <servlet-name>MiServlet</servlet-name> <url-pattern>/helloWorld</url-pattern> </servlet-mapping>…</web-app>
    • Servlets
    • PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 02
    • Agenda de la sesión Crear, registrar y acceder a Servlets. Servlets: doPost y doGet Servlets: HttpServletRequest y HttpServletResponse Variables predefinidas. Contexto de Servlets RequestDispatcher Compartir objetos
    • Objetivos de la sesión Repasar la creación, registro y acceso a Servlets. Diferenciar los métodos doGet y doPost. Recibir datos y enviar respuestas desde Servlets. Conocer que es el contexto de Servlets. Reenviar y compartir información entre componentes Java.
    • Servlets: crear, registrar y acceder
    • Servlets: crear, registrar y acceder<web-app>… <servlet> <servlet-name>MiServlet</servlet-name> <servlet-class>prog1.sesion2.PrimerServlet</servlet- class> </servlet> <servlet-mapping> <servlet-name>MiServlet</servlet-name> <url-pattern>/helloWorld</url-pattern> </servlet-mapping>…</web-app>
    • Servlets: crear, registrar y acceder Apache Software Foundation  Tomcat X.X  …  …  webapps  miaplicacion  WEB-INF  classes  prog1  sesion2 PrimerServlet.class http://localhost:8080/miaplicacion/helloWorld
    • Servlets: doGet y doPost POST GET
    • Servlets: HttpServletRequest Proporciona la información de la petición (request) para los Servlets tanto para el método doGet y doPost. La información proporcionada viene como pares clave-valor y sirven para generar el contenido de la respuesta.
    • Servlets: HttpServletRequest public String getParameter(String name) Devuelve el valor de un parámetro en función de su clave. arg0.getParameter(“data”); public String[] getParameterValues(String name) Devuelve todos los valores de un parámetro compuesto. arg0.getParameterValues(“data”);
    • Servlets: doPost <input type="text" name="txt_codigo" /> <input type="text" name="txt_apellido" /> <input type="text" name="txt_nombre" /> <input type="radio" name="rb_sexo" value="M" /> <input type="radio" name="rb_sexo" value=“F" /> <select name="sel_cursos" size="5" multiple="multiple"> <option value="1">Programación 1</option> <option value="2">Ing. de Software 1</option> <option value="3">Ing. de Costos</option> <option value="4">Gestión Financiera</option> <option value="5">Arq. Procesadores</option> </select> arg0.getParameter(“txt_codigo”); arg0.getParameterValues(“sel_cursos”);
    • Servlets: doGet http://localhost:8080/miapp/ helloWorld?nombre=juan&apellido=perez http://localhost:8080/miapp/ pagina.jsp?nombre=juan&apellido=perez arg0.getParameter(“nombre”);
    • Servlets: obteniendo informaciónpackage prog1.sesion2;import javax.servlet.*;import javax.servlet.http.*;public class metodosHTTP extends HttpServlet { protected void doGet(HttpServletRequest arg0, HttpServletResponse arg1) { int codigo = Integer.parseInt(arg0.getParameter("codigo")); } protected void doPost(HttpServletRequest arg0, HttpServletResponse arg1) { String nombres = arg0.getParameter("txt_nombre"); String apellidos = arg0.getParameter("txt_apellido"); String sexo = arg0.getParameter("r_sexo"); }}
    • Ejercicios: registrar Servlet
    • Ejercicios: registrar Servlet
    • Ejercicios: ServletsPagina noticias.html Pagina registro.html
    • Contexto de Servlets El contexto de un servlet define el entorno en el que el servlet se está ejecutando. Es el contexto de una aplicación web (webapp). Los servlets que pertenecen al mismo contexto pueden compartir recursos a traves de los métodos getAttribute y setAttribute.
    • Contexto de Servlets A través del ServletContext podemos: • Leer parámetros de inicialización de la aplicación. • Leer archivos de recursos de la aplicación. • Escribir en el archivo de log de la aplicación. • Leer y escribir atributos compartidos por todos los servlets/jsp‟s.
    • RequestDispatcher El despachador de la petición (RequestDispatcher) permite remitir una petición (request) a un componente J2EE. Es obtenido de la siguiente manera: RequestDispatcher rd = getServletContext().getRequestDispatcher(“ruta_recurso”); Una vez obtenido el objeto RequestDispatcher, invocamos al recurso (servlet) enviándole el objeto request. Rd.forward(request,response)
    • Compartir Objetos Existen dos formas de compartir objetos entre servlets:  ServletContext, es usado cuando un grupo de servlets necesitan trabajar con un mismo objeto.  HttpServletRequest, es usado cuando al hacer uso de una remisión (forward) se necesita compartir un objeto entre servlets.
    • Compartir Objetos Métodos: • public Object getAttribute(String name) • public void setAttribute(String name, Object object) • public void removeAttribute(String name)
    • Compartir ObjetosString mensaje = "texto compartido";ServletContext sc = getServletConfig().getServletContext();sc.setAttribute("variablecompartida", mensaje); ServletContext sc2 = getServletConfig().getServletContext(); String mensaje = (String)sc2.getAttribute("variablecompartida");String mensaje = "otro objeto compartido";arg0.setAttribute("cadenacompartida", mensaje);RequestDispatcher rd = getServletContext().getRequestDispatcher("/servlet2");rd.forward(arg0, arg1); String cadena = (String)arg0.getAttribute("cadenacompartida");
    • PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 03
    • Agenda de la sesión Contexto de Servlets RequestDispatcher Compartir objetos JSP JavaBean
    • Objetivos de la sesión Conocer que es el contexto de Servlets. Reenviar y compartir información entre componentes Java. Trabajar con paginas JSP. Discutir la utilidad de los JavaBeans.
    • Contexto de Servlets El contexto de un servlet define el entorno en el que el servlet se está ejecutando. Es el contexto de una aplicación web (webapp). Los servlets que pertenecen al mismo contexto pueden compartir recursos a traves de los métodos getAttribute y setAttribute.
    • Contexto de Servlets A través del ServletContext podemos: • Leer parámetros de inicialización de la aplicación. • Leer archivos de recursos de la aplicación. • Escribir en el archivo de log de la aplicación. • Leer y escribir atributos compartidos por todos los servlets/jsp‟s.
    • RequestDispatcher El despachador de la petición (RequestDispatcher) permite remitir una petición (request) a un componente J2EE. Es obtenido de la siguiente manera: RequestDispatcher rd = getServletContext().getRequestDispatcher(“ruta_recurso”); Una vez obtenido el objeto RequestDispatcher, invocamos al recurso (servlet) enviándole el objeto request. Rd.forward(request,response)
    • Compartir Objetos Existen dos formas de compartir objetos entre servlets:  ServletContext, es usado cuando un grupo de servlets necesitan trabajar con un mismo objeto.  HttpServletRequest, es usado cuando al hacer uso de una remisión (forward) se necesita compartir un objeto entre servlets.
    • Compartir Objetos Métodos: • public Object getAttribute(String name) • public void setAttribute(String name, Object object) • public void removeAttribute(String name)
    • Compartir ObjetosString mensaje = "texto compartido";ServletContext sc = getServletConfig().getServletContext();sc.setAttribute("variablecompartida", mensaje); ServletContext sc2 = getServletConfig().getServletContext(); String mensaje = (String)sc2.getAttribute("variablecompartida");String mensaje = "otro objeto compartido";arg0.setAttribute("cadenacompartida", mensaje);RequestDispatcher rd = getServletContext().getRequestDispatcher("/servlet2");rd.forward(arg0, arg1); String cadena = (String)arg0.getAttribute("cadenacompartida");
    • JSP Java Server Pages. Al igual que los servlets, permite generar contenido dinámico. Un JSP tiene código java incrustado en HTML a diferencia de los servlets, que pueden generar HTML desde código java.
    • JSP
    • JSP Expresión : <%=expresión%> Código : <% código %> Declaración : <%! código %> Directiva page : <%@ page atributo=“valor”%> import, session, etc Comentario : <%--comentario--%> Directiva include : <%@ include file=“dirección”%>
    • JSP Objeto request. Objeto response. Objeto session. Objeto out.
    • JSP Etiquetas JSP que proporcinan funcionalidad:  <jsp:forward> Redirige el request a otra dirección URL  <jsp:include> Incluye el texto de un fichero dentro de la página
    • JavaBean “Componentes de software reutilizables…” Se usan para encapsular varios objetos en un único objeto. Tiene atributos y métodos.  Un constructor sin parámetros  Métodos get y set por cada atributo  Otro métodos (no tiene restricciones, ni características especiales)
    • JavaBeanpublic class BeanSaludo{ String mensaje = null; public BeanSaludo() { // Constructor sin argumentos } // . . . public String getMensaje() { return mensaje; } public void setMensaje(String mensaje) { this. mensaje = mensaje; } // . . .}
    • JavaBean Si una propiedad es de tipo boolean, el método get puede ser definido por :  public boolean is<nombreAtributo>()  Ejemplo : public boolean isHabilitado(); Si un atributo tiene un tipo array(<tipoAtributo>[ ]), sus métodos deberán ser definidos así:  public <tipoAtributo> get<nombreAtributo>(int index)  Ejemplo : String getItem(int index);  public void set<nombreAtributo>(int index,<tipoAtributo> arg)  Ejemplo : public void setItem(int index, String valor);
    • JavaBean Si una propiedad es de tipo boolean, el método get puede ser definido por :  public boolean is<nombreAtributo>()  Ejemplo : public boolean isHabilitado(); Si un atributo tiene un tipo array(<tipoAtributo>[ ]), sus métodos deberán ser definidos así:  public <tipoAtributo> get<nombreAtributo>(int index)  Ejemplo : String getItem(int index);  public void set<nombreAtributo>(int index,<tipoAtributo> arg)  Ejemplo : public void setItem(int index, String valor);
    • JSP - JavaBean Etiquetas JSP para manipular JavaBean:  <jsp:useBean> Permite manipular un Bean, especificando la clase.  <jsp:getProperty> Obtiene la propiedad especificada de un bean previamente declarado y la escribe en el objeto response.  <jsp:setProperty> Establece el valor de una propiedad de un bean previamente declarado.
    • JDBC Java Database Connectivity. Es un API que permite la ejecución de operaciones sobre base de datos desde el lenguaje de programación JAVA. Permite:  Establecer una conexión con una base de datos o acceso a cualquier fuente de datos tabular.  Enviar sentencias SQL.  Procesar los resultados.
    • JDBC JDBC - MySQL Clases principales que se utilizarán con un programa Java con JDBC.
    • JDBC Cargar el driver  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  Class.forName("com.mysql.jdbc.Driver"); Obtener la conexión Connection con = DriverManager.getConnection(url, “usuariobd", “passwordbd");  url = “jdbc:odbc:nombre_bd”  url = “jdbc:mysql://localhost:3306/nombre_bd” Crear la sentencia  Statement stmt = con.createStatement();
    • JDBC Modificar información  int filas_afectadas = stmt.executeUpdate(query); Recuperando datos ResultSet rs = stmt.executeQuery(query); while (rs.next()) { String s = rs.getString(“nombre_columna"); float n = rs.getFloat(" nombre_columna "); }
    • PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 04
    • Agenda de la sesión JDBC
    • Objetivos de la sesión Definir que es JDBC. Describir los pasos para conectarse y ejecutar sentencias en una base de datos desde Java. Ejemplos y ejercicios.
    • JDBC Java Database Connectivity. Es un API que permite la ejecución de operaciones sobre base de datos desde el lenguaje de programación JAVA. Permite:  Establecer una conexión con una base de datos o acceso a cualquier fuente de datos tabular.  Enviar sentencias SQL.  Procesar los resultados.
    • JDBC JDBC - MySQL Clases principales que se utilizarán con un programa Java con JDBC.
    • JDBC Cargar el driver  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  Class.forName("com.mysql.jdbc.Driver"); Obtener la conexión Connection con = DriverManager.getConnection(url, “usuariobd", “passwordbd");  url = “jdbc:odbc:nombre_bd”  url = “jdbc:mysql://localhost:3306/nombre_bd” Crear la sentencia  Statement stmt = con.createStatement();
    • JDBC Modificar información  int filas_afectadas = stmt.executeUpdate(query); Recuperando datos ResultSet rs = stmt.executeQuery(query); while (rs.next()) { String s = rs.getString(“nombre_columna"); float n = rs.getFloat(" nombre_columna "); }
    • JDBC
    • JDBC
    • JDBC
    • Ejercicios - JDBC
    • PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 04
    • Agenda de la sesión JDBC
    • Objetivos de la sesión Definir que es JDBC. Describir los pasos para conectarse y ejecutar sentencias en una base de datos desde Java. Ejemplos y ejercicios.
    • JDBC Java Database Connectivity. Es un API que permite la ejecución de operaciones sobre base de datos desde el lenguaje de programación JAVA. Permite:  Establecer una conexión con una base de datos o acceso a cualquier fuente de datos tabular.  Enviar sentencias SQL.  Procesar los resultados.
    • JDBC JDBC - MySQL Clases principales que se utilizarán con un programa Java con JDBC.
    • JDBC Cargar el driver  Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  Class.forName("com.mysql.jdbc.Driver"); Obtener la conexión Connection con = DriverManager.getConnection(url, “usuariobd", “passwordbd");  url = “jdbc:odbc:nombre_bd”  url = “jdbc:mysql://localhost:3306/nombre_bd” Crear la sentencia  Statement stmt = con.createStatement();
    • JDBC Modificar información  int filas_afectadas = stmt.executeUpdate(query); Recuperando datos ResultSet rs = stmt.executeQuery(query); while (rs.next()) { String s = rs.getString(“nombre_columna"); float n = rs.getFloat(" nombre_columna "); }
    • JDBC
    • JDBC
    • JDBC
    • Ejercicios - JDBC
    • PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 06
    • Agenda de la sesión Sesiones
    • Objetivos de la sesión Definir que son las sesiones Cuando utilizar sesiones
    • Ejercicios ¿Qué se necesita para implementar la funcionalidad de login de una aplicación?  Pagina login.html / login.jsp  Servlet Login
    • Ejercicios<form name="frm_registro” method="post" action=""> <input type="text" name="txt_usuario" /> <input type=“password” name="txt_clave" /> <input type="submit" name="btn_grabar" value="Grabar" /></form>
    • Ejercicios Información del formulario usuario = request.getParameter(“txt_usuario”); clave = request.getParameter(“txt_clave”);
    • Ejercicios Conectarse a base de datos try{ Class.forName(“com.mysql.jdbc.Driver”); String url = “jdbc:mysql://localhost:3306/basedatos”; Connection con = DriverManager.getConnection(url, “usu”, “pass”); Statement stmt = con.createStatement(); …diapositiva siguiente… }catch(Execption e){ out.print(e.getMessage());
    • Ejercicios - JDBC Validar el usuario y clave Resulset resultado= stmt.executeUpdate(“SELECT nombre FROM usuario WHERE usuario=„”+usuario +“‟ AND clave=„”+clave +“‟”); boolean flag = false; while(resultado.next()){ flag = true; }
    • Sesiones Nos permite identificar a un usuario mientras mantiene interacciones con un sitio Web. Podemos guardar información relevante que nos identifique a un usuario en particular.
    • Sesiones HttpSession misesion = request.getSession(true); <%@ page session="true"%>
    • Sesiones Para almacenar objetos en una sesión: String micorreo="correo@dominio.com"; misesion.setAttribute("uncorreo", micorreo); Para obtener un objeto dentro de una sesión: misesion.getAttribute("uncorreo"); Para eliminar un objeto dentro de una sesión: misesion.removeAttribute("uncorreo"); Para eliminar todos los objetos dentro de una sesión: misesion.invalidate();
    • PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 07
    • Agenda de la sesión Transacciones ACID
    • Objetivos de la sesión Cuando se deben utilizar transacciones Definir el concepto de ACID
    • Transacciones Una transacción es un conjunto de sentencias que han sido ejecutadas y confirmadas/revertidas. Luego de ejecutar las sentencias:  Para confirmar se utiliza el método commit.  Para eliminar todos los cambios realizados desde el último commit se utiliza el método rollback.
    • Transacciones Por defecto, todas las conexiones a base de datos tienen el modo auto-commit activado, por lo tanto, al ejecutar el método executeUpdate se completa una transacción.
    • Transacciones Connection con = DriverManager.getConnection(...); con.setAutoCommit(false); Statement s = con.createStatement(); s.executeUpdate("SQL statement 1"); s.executeUpdate("SQL statement 2"); s.executeUpdate("SQL statement 3"); con.commit();
    • ACID Es uno de los conceptos mas importantes dentro del mundo de base de datos. Son 4 características que todo sistema de gestión de base de datos debe alcanzar:  Atomicity.  Consistency.  Isolation.  Durability.
    • ACID Atomicity: puede definirse como la regla del todo o nada, en el caso de transacciones, si una parte falla, por consecuencia toda la transacción falla. Consistency: sólo los datos válidos serán guardados a base de datos, las transacciones no deben violar las reglas de consistencia.
    • ACID Isolation: las transacciones que ocurren al mismo tiempo no alteren la ejecución de otras, la ejecución de dos transacciones sobre la misma información no debe generar ningún error. Durability: propiedad que asegura que una vez realizada la transacción, sus efectos persistirán.
    • Ejercicios - JDBC int fila_afectada = stmt.executeUpdate(“INSERT into alumno (codigo, apellidos, nombres, sexo, carrera, observaciones) VALUES(`“+cod+”´, `“+ape+”´, `“+nom+”´, `“+sex +”´, `“+car+”´, `“+obs+”´)”); if(filas_afectada == 1){ … // commit }else{ // rollback }
    • PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 10
    • Agenda de la sesión Frameworks Patrones Modelos de aplicación MVC
    • Objetivos de la sesión Definir el concepto de Frameworks y su relación con los patrones. Conocer los modelos de aplicaciones Web.
    • Frameworks Casi siempre se buscan maneras para simplificar el desarrollo de proyectos que usan tecnologías y estructuras similares, en este caso, aplicaciones para Web. Existen cientos de Frameworks (marcos de trabajo) creados para el desarrollo de aplicaciones Web con Java y casi todos aplican el diseño de aplicaciones MVC.
    • Frameworks Se podría decir que:  Es un conjunto de componentes que componen un diseño reutilizable que facilita y agiliza el desarrollo de sistemas Web.  Es una colección de clases e interfases que modelan una aplicación genérica definiendo una arquitectura para la aplicación, se componen de patrones. Los objetivos principales de un Framework son:  Acelerar el proceso de desarrollo.  Reutilizar código ya existente.  Promover buenas prácticas de desarrollo.
    • FrameworksCosas a tomar en cuenta: Tipo de aplicación a desarrollar Facilidad de uso/desarrollo Comunidad detrás del proyecto Futuro del proyecto Mantenimiento Características técnicas Rendimiento Documentación
    • Frameworks Struts Spring Hibernate Tapestry Cocoon Google Web Toolkit
    • Patrones Son una abstracción de una solución a un alto nivel, proveen solución a problemas de diseño concurrentes o comunes. Nos permiten la reutilización de componentes y mayor eficiencia en la ejecución de los mismos.
    • Patrones La difusión de los patrones de diseño comenzó a darse luego de la publicación del libro “Design Patterns: Elements of Reusable Object Oriented Software” escrito por Gang of Four (GoF), en donde documentaron 23 patrones de diseño. Clasificándolos en 3 grandes categorías:  Creacionales  Estructurales  Comportamiento
    • Modelos de aplicación JSP Browser BD Bean
    • Modelo de aplicación 1 Cantidad de código JAVA dentro de las páginas JSP. Problema para los diseñadores. Aplicaciones difíciles de mantener. Dificultad en presentar la aplicación en diferentes vistas (interfases) como HTML, WML, XML, etc.Recomendación:Utilizar el Modelo 1 para aplicaciones simples o cuando senecesite obtener la aplicación rápidamente.
    • Modelo de aplicación 2 Es un alcance combinado para servir contenido dinámico, combina el uso de Servlets y JSP. Separa la presentación del contenido. Los JSP se encargan de la presentación y los Servlets del procesamiento de tareas.Recomendación:Utilizarlo para aplicaciones medianas o grandes yaplicaciones que crecerán en complejidad en el futuro.
    • MVC Es el patrón de diseño arquitectónico recomendado para el desarrollo de aplicaciones interactivas. Organiza la aplicación dentro de 3 capas separadas:  Modelo  Vista  Controlador
    • MVC Modelo Representa los datos de la aplicación y sus reglas de negocio. Vista Conjunto de vistas que básicamente representa los formularios de entrada y salida de información. Controlador Conjunto de controladores que procesa las peticiones de los usuarios y controla el flujo de la aplicación.
    • MVC
    • PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 11
    • Agenda de la sesión MVC DAO
    • Objetivos de la sesión Reforzar el concepto MVC. Definir y analizar el uso del patrón DAO.
    • MVC
    • MVC Bienvenidos a la Tienda Virtual
    • MVC
    • MVC
    • MVC
    • DAO Las aplicaciones trabajan con diversos orígenes de datos y su acceso depende del tipo de almacenamiento o del proveedor.
    • DAO Ayuda a encapsular la forma de acceso a la fuente de datos, administra la conexión con la fuente de datos para obtener y almacenar los datos. Permite adaptar a diferentes esquemas de almacenamiento sin afectar a los cliente o componentes de negocio, DAO actúa como un adaptador entre los componentes y el origen de datos.
    • DAO El objetivo es que la aplicación se centre en los datos que se utilizan y no se preocupe de cuál es su fuente de almacenamiento y como se realiza el acceso.
    • DAO uses encapsulaBusinessObject DataAccessObject DataSource Crea / utiliza Obtiene / modifica TransferObject
    • DAO I-ClienteDAO Client usa MySqlClienteDAO encapsula MYSQL crea / utiliza obtiene / modifica ClienteBean
    • DAO/tiendavirtual  src  beans  dao  servlets  util  WebContent  index.jsp  login.jsp  productos.jsp  carrito.jsp
    • DAO/tiendavirtual  src  beans  ProductoBean  dao  MySqlDAO  ProductoDAO  MySql_ProductoDAO  servlets  ServletCompra  util
    • PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 12
    • Agenda de la sesión DAO DAOFactory
    • Objetivos de la sesión Reforzar el concepto de DAO en base a ejemplos. Conceptos de DAOFactory. Mostrar las diferencias entre DAO y DAOFactory.
    • DAO I-ClienteDAO Client usa MySqlClienteDAO encapsula MYSQL crea / utiliza obtiene / modifica ClienteBean
    • DAO/tiendavirtual  src  beans  dao  servlets  util  WebContent  index.jsp  login.jsp  productos.jsp  carrito.jsp
    • DAO/tiendavirtual  src  beans  ProductoBean  dao  MySqlDAO  ProductoDAO  MySql_ProductoDAO  servlets  ServletCompra  util
    • DAO - ProductoBean
    • DAO - MySqlDAO
    • DAO - ProductoDAO
    • DAO - MySql_ProductoDAO
    • DAO - Compras
    • DAO - productos.jsp
    • DAOFactory MYSQLDAO SQLDAOMySqlClienteDAO MySqlProductoDAO SqlClienteDAO SqlProductoDAO I-ClienteDAO I-ProductoDAO I-ClienteDAO I-ProductoDAO
    • DAOFactory DAOFactory MySqlDAOFactory SqlDAOFactory OracleDAOFactory MySqlProductoDAO SqllProductoDAO OraclelProductoDAO lProductoDAO
    • DAOFactory/tiendavirtual  src  beans  ProductoBean  dao  iface  ProductoDAO  mysql  MySql_ProductoDAO  daofactory  DAOFactory  MySqlDAOFactory  servlets  ServletCompra
    • DAOFactory
    • DAOFactory
    • DAOFactory
    • PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 13
    • Agenda de la sesión DAOFactory Ejercicios
    • Objetivos de la sesión Reforzar el concepto de DAOFactory. Ejercicios DAOFactory.
    • DAOFactory MYSQLDAO SQLDAOMySqlClienteDAO MySqlProductoDAO SqlClienteDAO SqlProductoDAO I-ClienteDAO I-ProductoDAO I-ClienteDAO I-ProductoDAO
    • DAOFactory DAOFactory MySqlDAOFactory SqlDAOFactory OracleDAOFactory MySqlProductoDAO SqllProductoDAO OraclelProductoDAO lProductoDAO
    • DAOFactory/tiendavirtual  src  beans  CategoriaBean  dao  iface  CategoriaDAO  mysql  MySql_CategoriaDAO  daofactory  DAOFactory  MySqlDAOFactory  servlets  Categorias  WebContent  categorias.jsp
    • DAOFactory - CategoriaBean
    • DAOFactory - CategoriaDAO
    • DAOFactory – MySql_CategoriaDAO
    • DAOFactory – DAOFactory
    • DAOFactory – MySqlDAOFactory
    • DAOFactory – Categorias
    • DAOFactory – categorias.jsp
    • PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 14
    • Agenda de la sesión JavaScript
    • Objetivos de la sesión Definir el concepto de JavaScript Conocer la sintaxis JavaScript Mostar la ubicación del código JavaScript
    • JavaScript
    • JavaScript Es un lenguaje de programación utilizado en paginas Web. Tiene una sintaxis similar a Java. Es reconocido y ejecutado por todos los navegadores.
    • JavaScript Es un lenguaje que responde a eventos. Va incrustado dentro de las paginas html. Realiza acciones en el cliente (browser). Diseñado para agregar interactividad en las paginas html.
    • JavaScript window  history  location  document  form  button, checkbox, hidden, radio, text, select (options), etc  frame navigator
    • JavaScript
    • JavaScript
    • JavaScript
    • JavaScript - windows Algunas propiedades  closed, indica si la venta esta cerrada.  frames, un array que contiene los frames de la ventana.  history, representa las URLs visitadas.  location, contiene la URL de la barra de dirección.  opener, referencia al objeto window que lo abrió.  status, cadena de la barra de estado.
    • JavaScript Algunos métodos  alert, muestra un mensaje.  close(), cierre el objeto window actual.  open(URL, nombre, propiedades), abre una URL en una ventana.  scroll(x,y), desplaza las coordenadas del cursor.
    • JavaScript
    • JavaScript - document Algunas propiedades  bgColor, color de fondo del documento.  forms, es un array con todos los formularios del documento.  images, es un array con todas las imágenes del documento.  title, titulo del documento actual.
    • Frameworks JavaScript MooTools jQuery Prototype Dojo Script.aculo.us
    • PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 15
    • Agenda de la sesión AJAX XML y RSS
    • Objetivos de la sesión Conocer nuevas técnicas de desarrollo Web Resumen DaoFactory
    • XML Extensible Markup Language (lenguaje de marcas extensible). Se propone como un estándar para el intercambio de información estructurada entre diferentes plataformas. Permite la compatibilidad entre sistemas para compartir información.
    • XML<?xml version="1.0" encoding=“utf-8" ?> <ciclo> <curso> <nombre>Programación I</nombre> <seccion>30F</seccion> </curso> <curso> <nombre>Programación I</nombre> <seccion>32F</seccion> </curso> </ciclo>
    • RSS Acrónimo de Really Simple Sindication. Se utiliza para brindarle información actualizada de una Web a usuarios o sistemas. Para leer los contenidos de un RSS es necesario un software especial (agregador/lectores).
    • AJAX Acrónimo de Asynchronous JavaScript and XML (JavaScript asíncrono y XML) Técnica de desarrollo Web para crear mejores, mas rápidas e interactivas aplicaciones Web. Se puede utilizar bajo varias plataformas y en muchos sistemas operativos y navegadores. Es una combinación de JavaScript y XML
    • AJAX Es un conjunto de tecnologías:  XHTML y CSS  Document Object Model  XML y XSLT  XMLHttpRequest  JavaScript
    • AJAX - Peticiones tradicionales El cliente/usuario realiza una petición (request) al servidor a través de un browser. El servidor recibe la petición, procesa la solicitud y devuelve una respuesta (response), generalmente HTML. El browser procesa y muestra la respuesta.
    • AJAX - Peticiones Ajax El cliente/usuario haciendo uso del browser produce algún evento procesado por JavaScript que se encarga de realizar la petición (request) al servidor. El servidor recibe la petición, procesa la solicitud y devuelve una respuesta en XML. El JavaScript procesa la respuesta para actualizar la página, sin necesidad de recargarla.
    • AJAX
    • AJAX
    • AJAX - Ventajas Las páginas no se recargan completamente por cada acción del usuario. El tiempo de espera y carga de una pagina puede ser menor.
    • AJAX - Desventajas No se puede mantener la acción de “retroceder” que tienen los browsers. Solo funciona si los browser tienen habilitado la ejecución JavaScript Los usuarios pueden ver una carga de rendimiento en sus maquinas.
    • AJAX - Desventajas http://www.jamesdam.com/ajax_login/login.html http://joeabiraad.com/demos/ajax2/ http://www.ajaxdaddy.com/
    • PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 15
    • Agenda de la sesión Temas del curso
    • Objetivos de la sesión Resumen de la 2da parte del curso
    • Frameworks Se podría decir que:  Es un conjunto de componentes que componen un diseño reutilizable que facilita y agiliza el desarrollo de sistemas Web.  Es una colección de clases e interfases que modelan una aplicación genérica definiendo una arquitectura para la aplicación, se componen de patrones. Los objetivos principales de un Framework son:  Acelerar el proceso de desarrollo.  Reutilizar código ya existente.  Promover buenas prácticas de desarrollo.
    • Patrones Son una abstracción de una solución a un alto nivel, proveen solución a problemas de diseño concurrentes o comunes. Nos permiten la reutilización de componentes y mayor eficiencia en la ejecución de los mismos. Se clasificaron en 3 grandes categorías:  Creacionales  Estructurales  Comportamiento
    • MVC
    • DAO Ayuda a encapsular la forma de acceso a la fuente de datos, administra la conexión con la fuente de datos para obtener y almacenar los datos. Permite adaptar a diferentes esquemas de almacenamiento sin afectar a los cliente o componentes de negocio, DAO actúa como un adaptador entre los componentes y el origen de datos.
    • DAO I-ClienteDAO Client usa MySqlClienteDAO encapsula MYSQL crea / utiliza obtiene / modifica ClienteBean
    • DAO/tiendavirtual  src  beans  ProductoBean  dao  MySqlDAO  ProductoDAO  MySql_ProductoDAO  servlets  ServletCompra  util
    • DAO - MySqlDAO
    • DAO - ProductoDAO
    • DAO - MySql_ProductoDAO
    • DAO - Compras
    • DAOFactory MYSQLDAO SQLDAOMySqlClienteDAO MySqlProductoDAO SqlClienteDAO SqlProductoDAO I-ClienteDAO I-ProductoDAO I-ClienteDAO I-ProductoDAO
    • DAOFactory DAOFactory MySqlDAOFactory SqlDAOFactory OracleDAOFactory MySqlProductoDAO SqllProductoDAO OraclelProductoDAO lProductoDAO
    • DAOFactory/tiendavirtual  src  beans  CategoriaBean  dao  iface  CategoriaDAO  mysql  MySql_CategoriaDAO  daofactory  DAOFactory  MySqlDAOFactory  servlets  Categorias  WebContent  categorias.jsp
    • DAOFactory - CategoriaBean
    • DAOFactory - CategoriaDAO
    • DAOFactory – MySql_CategoriaDAO
    • DAOFactory – DAOFactory
    • DAOFactory – MySqlDAOFactory
    • DAOFactory – Categorias
    • DAOFactory – categorias.jsp
    • JavaScript Tiene una sintaxis similar a Java. Es reconocido y ejecutado por todos los navegadores. Es un lenguaje que responde a eventos. Va incrustado dentro de las paginas html. Realiza acciones en el cliente (browser). Diseñado para agregar interactividad en las paginas html.
    • XML Extensible Markup Language (lenguaje de marcas extensible). Se propone como un estándar para el intercambio de información estructurada entre diferentes plataformas. Permite la compatibilidad entre sistemas para compartir información.
    • RSS Acrónimo de Really Simple Sindication. Se utiliza para brindarle información actualizada de una Web a usuarios o sistemas. Para leer los contenidos de un RSS es necesario un software especial (agregador/lectores).
    • AJAX Acrónimo de Asynchronous JavaScript and XML (JavaScript asíncrono y XML) Es un conjunto de tecnologías:  XHTML y CSS  Document Object Model  XML y XSLT  XMLHttpRequest  JavaScript
    • AJAX