Programacion web java

2,711
-1

Published on

Published in: Technology
0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
2,711
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
137
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Programacion web java

  1. 1. PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 01
  2. 2. 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.
  3. 3. 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.
  4. 4. 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.
  5. 5. 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.
  6. 6. 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.
  7. 7. Conceptos en Internet Internet. Intranet. Nombres de dominio. URL. HTTP.
  8. 8. 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.
  9. 9. 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
  10. 10. 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.
  11. 11. 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
  12. 12. 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>
  13. 13. 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:
  14. 14. 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.
  15. 15. Herramientas Eclipse Entorno de desarrollo integrado para desarrollar aplicaciones. Apache Tomcat Contenedor de aplicaciones Web desarrolladas con Java que implementa el protocolo HTTP.
  16. 16. Tomcat - Estructura
  17. 17. Aplicaciones en Tomcat
  18. 18. 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
  19. 19. 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.
  20. 20. 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.”
  21. 21. Servlets
  22. 22. 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.
  23. 23. Servlets - Ejemplo
  24. 24. 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>
  25. 25. Servlets
  26. 26. PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 02
  27. 27. 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
  28. 28. 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.
  29. 29. Servlets: crear, registrar y acceder
  30. 30. 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>
  31. 31. 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
  32. 32. Servlets: doGet y doPost POST GET
  33. 33. 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.
  34. 34. 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”);
  35. 35. 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”);
  36. 36. Servlets: doGet http://localhost:8080/miapp/ helloWorld?nombre=juan&apellido=perez http://localhost:8080/miapp/ pagina.jsp?nombre=juan&apellido=perez arg0.getParameter(“nombre”);
  37. 37. 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"); }}
  38. 38. Ejercicios: registrar Servlet
  39. 39. Ejercicios: registrar Servlet
  40. 40. Ejercicios: ServletsPagina noticias.html Pagina registro.html
  41. 41. 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.
  42. 42. 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.
  43. 43. 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)
  44. 44. 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.
  45. 45. Compartir Objetos Métodos: • public Object getAttribute(String name) • public void setAttribute(String name, Object object) • public void removeAttribute(String name)
  46. 46. 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");
  47. 47. PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 03
  48. 48. Agenda de la sesión Contexto de Servlets RequestDispatcher Compartir objetos JSP JavaBean
  49. 49. 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.
  50. 50. 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.
  51. 51. 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.
  52. 52. 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)
  53. 53. 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.
  54. 54. Compartir Objetos Métodos: • public Object getAttribute(String name) • public void setAttribute(String name, Object object) • public void removeAttribute(String name)
  55. 55. 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");
  56. 56. 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.
  57. 57. JSP
  58. 58. 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”%>
  59. 59. JSP Objeto request. Objeto response. Objeto session. Objeto out.
  60. 60. 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
  61. 61. 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)
  62. 62. JavaBeanpublic class BeanSaludo{ String mensaje = null; public BeanSaludo() { // Constructor sin argumentos } // . . . public String getMensaje() { return mensaje; } public void setMensaje(String mensaje) { this. mensaje = mensaje; } // . . .}
  63. 63. 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);
  64. 64. 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);
  65. 65. 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.
  66. 66. 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.
  67. 67. JDBC JDBC - MySQL Clases principales que se utilizarán con un programa Java con JDBC.
  68. 68. 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();
  69. 69. 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 "); }
  70. 70. PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 04
  71. 71. Agenda de la sesión JDBC
  72. 72. 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.
  73. 73. 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.
  74. 74. JDBC JDBC - MySQL Clases principales que se utilizarán con un programa Java con JDBC.
  75. 75. 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();
  76. 76. 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 "); }
  77. 77. JDBC
  78. 78. JDBC
  79. 79. JDBC
  80. 80. Ejercicios - JDBC
  81. 81. PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 04
  82. 82. Agenda de la sesión JDBC
  83. 83. 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.
  84. 84. 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.
  85. 85. JDBC JDBC - MySQL Clases principales que se utilizarán con un programa Java con JDBC.
  86. 86. 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();
  87. 87. 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 "); }
  88. 88. JDBC
  89. 89. JDBC
  90. 90. JDBC
  91. 91. Ejercicios - JDBC
  92. 92. PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 06
  93. 93. Agenda de la sesión Sesiones
  94. 94. Objetivos de la sesión Definir que son las sesiones Cuando utilizar sesiones
  95. 95. Ejercicios ¿Qué se necesita para implementar la funcionalidad de login de una aplicación?  Pagina login.html / login.jsp  Servlet Login
  96. 96. 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>
  97. 97. Ejercicios Información del formulario usuario = request.getParameter(“txt_usuario”); clave = request.getParameter(“txt_clave”);
  98. 98. 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());
  99. 99. 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; }
  100. 100. 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.
  101. 101. Sesiones HttpSession misesion = request.getSession(true); <%@ page session="true"%>
  102. 102. 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();
  103. 103. PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 07
  104. 104. Agenda de la sesión Transacciones ACID
  105. 105. Objetivos de la sesión Cuando se deben utilizar transacciones Definir el concepto de ACID
  106. 106. 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.
  107. 107. 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.
  108. 108. 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();
  109. 109. 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.
  110. 110. 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.
  111. 111. 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.
  112. 112. 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 }
  113. 113. PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 10
  114. 114. Agenda de la sesión Frameworks Patrones Modelos de aplicación MVC
  115. 115. Objetivos de la sesión Definir el concepto de Frameworks y su relación con los patrones. Conocer los modelos de aplicaciones Web.
  116. 116. 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.
  117. 117. 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.
  118. 118. 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
  119. 119. Frameworks Struts Spring Hibernate Tapestry Cocoon Google Web Toolkit
  120. 120. 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.
  121. 121. 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
  122. 122. Modelos de aplicación JSP Browser BD Bean
  123. 123. 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.
  124. 124. 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.
  125. 125. 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
  126. 126. 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.
  127. 127. MVC
  128. 128. PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 11
  129. 129. Agenda de la sesión MVC DAO
  130. 130. Objetivos de la sesión Reforzar el concepto MVC. Definir y analizar el uso del patrón DAO.
  131. 131. MVC
  132. 132. MVC Bienvenidos a la Tienda Virtual
  133. 133. MVC
  134. 134. MVC
  135. 135. MVC
  136. 136. DAO Las aplicaciones trabajan con diversos orígenes de datos y su acceso depende del tipo de almacenamiento o del proveedor.
  137. 137. 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.
  138. 138. 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.
  139. 139. DAO uses encapsulaBusinessObject DataAccessObject DataSource Crea / utiliza Obtiene / modifica TransferObject
  140. 140. DAO I-ClienteDAO Client usa MySqlClienteDAO encapsula MYSQL crea / utiliza obtiene / modifica ClienteBean
  141. 141. DAO/tiendavirtual  src  beans  dao  servlets  util  WebContent  index.jsp  login.jsp  productos.jsp  carrito.jsp
  142. 142. DAO/tiendavirtual  src  beans  ProductoBean  dao  MySqlDAO  ProductoDAO  MySql_ProductoDAO  servlets  ServletCompra  util
  143. 143. PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 12
  144. 144. Agenda de la sesión DAO DAOFactory
  145. 145. Objetivos de la sesión Reforzar el concepto de DAO en base a ejemplos. Conceptos de DAOFactory. Mostrar las diferencias entre DAO y DAOFactory.
  146. 146. DAO I-ClienteDAO Client usa MySqlClienteDAO encapsula MYSQL crea / utiliza obtiene / modifica ClienteBean
  147. 147. DAO/tiendavirtual  src  beans  dao  servlets  util  WebContent  index.jsp  login.jsp  productos.jsp  carrito.jsp
  148. 148. DAO/tiendavirtual  src  beans  ProductoBean  dao  MySqlDAO  ProductoDAO  MySql_ProductoDAO  servlets  ServletCompra  util
  149. 149. DAO - ProductoBean
  150. 150. DAO - MySqlDAO
  151. 151. DAO - ProductoDAO
  152. 152. DAO - MySql_ProductoDAO
  153. 153. DAO - Compras
  154. 154. DAO - productos.jsp
  155. 155. DAOFactory MYSQLDAO SQLDAOMySqlClienteDAO MySqlProductoDAO SqlClienteDAO SqlProductoDAO I-ClienteDAO I-ProductoDAO I-ClienteDAO I-ProductoDAO
  156. 156. DAOFactory DAOFactory MySqlDAOFactory SqlDAOFactory OracleDAOFactory MySqlProductoDAO SqllProductoDAO OraclelProductoDAO lProductoDAO
  157. 157. DAOFactory/tiendavirtual  src  beans  ProductoBean  dao  iface  ProductoDAO  mysql  MySql_ProductoDAO  daofactory  DAOFactory  MySqlDAOFactory  servlets  ServletCompra
  158. 158. DAOFactory
  159. 159. DAOFactory
  160. 160. DAOFactory
  161. 161. PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 13
  162. 162. Agenda de la sesión DAOFactory Ejercicios
  163. 163. Objetivos de la sesión Reforzar el concepto de DAOFactory. Ejercicios DAOFactory.
  164. 164. DAOFactory MYSQLDAO SQLDAOMySqlClienteDAO MySqlProductoDAO SqlClienteDAO SqlProductoDAO I-ClienteDAO I-ProductoDAO I-ClienteDAO I-ProductoDAO
  165. 165. DAOFactory DAOFactory MySqlDAOFactory SqlDAOFactory OracleDAOFactory MySqlProductoDAO SqllProductoDAO OraclelProductoDAO lProductoDAO
  166. 166. DAOFactory/tiendavirtual  src  beans  CategoriaBean  dao  iface  CategoriaDAO  mysql  MySql_CategoriaDAO  daofactory  DAOFactory  MySqlDAOFactory  servlets  Categorias  WebContent  categorias.jsp
  167. 167. DAOFactory - CategoriaBean
  168. 168. DAOFactory - CategoriaDAO
  169. 169. DAOFactory – MySql_CategoriaDAO
  170. 170. DAOFactory – DAOFactory
  171. 171. DAOFactory – MySqlDAOFactory
  172. 172. DAOFactory – Categorias
  173. 173. DAOFactory – categorias.jsp
  174. 174. PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 14
  175. 175. Agenda de la sesión JavaScript
  176. 176. Objetivos de la sesión Definir el concepto de JavaScript Conocer la sintaxis JavaScript Mostar la ubicación del código JavaScript
  177. 177. JavaScript
  178. 178. 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.
  179. 179. 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.
  180. 180. JavaScript window  history  location  document  form  button, checkbox, hidden, radio, text, select (options), etc  frame navigator
  181. 181. JavaScript
  182. 182. JavaScript
  183. 183. JavaScript
  184. 184. 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.
  185. 185. 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.
  186. 186. JavaScript
  187. 187. 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.
  188. 188. Frameworks JavaScript MooTools jQuery Prototype Dojo Script.aculo.us
  189. 189. PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 15
  190. 190. Agenda de la sesión AJAX XML y RSS
  191. 191. Objetivos de la sesión Conocer nuevas técnicas de desarrollo Web Resumen DaoFactory
  192. 192. 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.
  193. 193. 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>
  194. 194. 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).
  195. 195. 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
  196. 196. AJAX Es un conjunto de tecnologías:  XHTML y CSS  Document Object Model  XML y XSLT  XMLHttpRequest  JavaScript
  197. 197. 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.
  198. 198. 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.
  199. 199. AJAX
  200. 200. AJAX
  201. 201. 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.
  202. 202. 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.
  203. 203. AJAX - Desventajas http://www.jamesdam.com/ajax_login/login.html http://joeabiraad.com/demos/ajax2/ http://www.ajaxdaddy.com/
  204. 204. PROGRAMACIÓN I 2009-I Docente : Ing. Carlos A. Quinto Cáceres Correo : cquinto@usmp.edu.peSemana 15
  205. 205. Agenda de la sesión Temas del curso
  206. 206. Objetivos de la sesión Resumen de la 2da parte del curso
  207. 207. 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.
  208. 208. 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
  209. 209. MVC
  210. 210. 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.
  211. 211. DAO I-ClienteDAO Client usa MySqlClienteDAO encapsula MYSQL crea / utiliza obtiene / modifica ClienteBean
  212. 212. DAO/tiendavirtual  src  beans  ProductoBean  dao  MySqlDAO  ProductoDAO  MySql_ProductoDAO  servlets  ServletCompra  util
  213. 213. DAO - MySqlDAO
  214. 214. DAO - ProductoDAO
  215. 215. DAO - MySql_ProductoDAO
  216. 216. DAO - Compras
  217. 217. DAOFactory MYSQLDAO SQLDAOMySqlClienteDAO MySqlProductoDAO SqlClienteDAO SqlProductoDAO I-ClienteDAO I-ProductoDAO I-ClienteDAO I-ProductoDAO
  218. 218. DAOFactory DAOFactory MySqlDAOFactory SqlDAOFactory OracleDAOFactory MySqlProductoDAO SqllProductoDAO OraclelProductoDAO lProductoDAO
  219. 219. DAOFactory/tiendavirtual  src  beans  CategoriaBean  dao  iface  CategoriaDAO  mysql  MySql_CategoriaDAO  daofactory  DAOFactory  MySqlDAOFactory  servlets  Categorias  WebContent  categorias.jsp
  220. 220. DAOFactory - CategoriaBean
  221. 221. DAOFactory - CategoriaDAO
  222. 222. DAOFactory – MySql_CategoriaDAO
  223. 223. DAOFactory – DAOFactory
  224. 224. DAOFactory – MySqlDAOFactory
  225. 225. DAOFactory – Categorias
  226. 226. DAOFactory – categorias.jsp
  227. 227. 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.
  228. 228. 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.
  229. 229. 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).
  230. 230. 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
  231. 231. AJAX

×