View
2.198
Download
1
Category
Preview:
DESCRIPTION
Citation preview
PROGRAMACIÓN I
2009-I
Semana 01
Docente : Ing. Carlos A. Quinto Cáceres
Correo : cquinto@usmp.edu.pe
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
Servidor
Servidor Web
index.html
Cliente
Browser
Request
index.html
Response
index.html
HTTP - Métodos
Típicamente un cliente Web se comunica con un servidor Web
usando 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 Web
libera los recursos
utilizados.
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
Semana 02
Docente : Ing. Carlos A. Quinto Cáceres
Correo : cquinto@usmp.edu.pe
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ón
package 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: Servlets
Pagina 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 Objetos
String 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
Semana 03
Docente : Ing. Carlos A. Quinto Cáceres
Correo : cquinto@usmp.edu.pe
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 Objetos
String 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)
JavaBean
public 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
Semana 04
Docente : Ing. Carlos A. Quinto Cáceres
Correo : cquinto@usmp.edu.pe
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
Semana 04
Docente : Ing. Carlos A. Quinto Cáceres
Correo : cquinto@usmp.edu.pe
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
Semana 06
Docente : Ing. Carlos A. Quinto Cáceres
Correo : cquinto@usmp.edu.pe
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());
}finally{ }
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
Semana 07
Docente : Ing. Carlos A. Quinto Cáceres
Correo : cquinto@usmp.edu.pe
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
Semana 10
Docente : Ing. Carlos A. Quinto Cáceres
Correo : cquinto@usmp.edu.pe
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.
Frameworks
Cosas 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
Bro
wser
JSP
Bean
BD
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 se
necesite 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 y
aplicaciones 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
Semana 11
Docente : Ing. Carlos A. Quinto Cáceres
Correo : cquinto@usmp.edu.pe
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
BusinessObject DataAccessObject DataSource
TransferObject
encapsula uses
Obtiene / modifica
Crea / utiliza
DAO
Client MySqlClienteDAO MYSQL
ClienteBean
encapsula usa
obtiene / modifica
crea / utiliza
I-ClienteDAO
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
Semana 12
Docente : Ing. Carlos A. Quinto Cáceres
Correo : cquinto@usmp.edu.pe
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
Client MySqlClienteDAO MYSQL
ClienteBean
encapsula usa
obtiene / modifica
crea / utiliza
I-ClienteDAO
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
MySqlClienteDAO
MYSQLDAO
MySqlProductoDAO
I-ClienteDAO I-ProductoDAO
SqlClienteDAO
SQLDAO
SqlProductoDAO
I-ClienteDAO I-ProductoDAO
DAOFactory
MySqlDAOFactory
lProductoDAO
DAOFactory
OracleDAOFactory SqlDAOFactory
MySqlProductoDAO SqllProductoDAO OraclelProductoDAO
DAOFactory
/tiendavirtual src
beans
ProductoBean
dao
iface
ProductoDAO
mysql
MySql_ProductoDAO
daofactory
DAOFactory
MySqlDAOFactory
servlets
ServletCompra
DAOFactory
DAOFactory
DAOFactory
PROGRAMACIÓN I
2009-I
Semana 13
Docente : Ing. Carlos A. Quinto Cáceres
Correo : cquinto@usmp.edu.pe
Agenda de la sesión
DAOFactory
Ejercicios
Objetivos de la sesión
Reforzar el concepto de DAOFactory.
Ejercicios DAOFactory.
DAOFactory
MySqlClienteDAO
MYSQLDAO
MySqlProductoDAO
I-ClienteDAO I-ProductoDAO
SqlClienteDAO
SQLDAO
SqlProductoDAO
I-ClienteDAO I-ProductoDAO
DAOFactory
MySqlDAOFactory
lProductoDAO
DAOFactory
OracleDAOFactory SqlDAOFactory
MySqlProductoDAO SqllProductoDAO OraclelProductoDAO
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
Semana 14
Docente : Ing. Carlos A. Quinto Cáceres
Correo : cquinto@usmp.edu.pe
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
Semana 15
Docente : Ing. Carlos A. Quinto Cáceres
Correo : cquinto@usmp.edu.pe
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
Semana 15
Docente : Ing. Carlos A. Quinto Cáceres
Correo : cquinto@usmp.edu.pe
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
Client MySqlClienteDAO MYSQL
ClienteBean
encapsula usa
obtiene / modifica
crea / utiliza
I-ClienteDAO
DAO
/tiendavirtual
src
beans
ProductoBean
dao
MySqlDAO
ProductoDAO
MySql_ProductoDAO
servlets
ServletCompra
util
DAO - MySqlDAO
DAO - ProductoDAO
DAO - MySql_ProductoDAO
DAO - Compras
DAOFactory
MySqlClienteDAO
MYSQLDAO
MySqlProductoDAO
I-ClienteDAO I-ProductoDAO
SqlClienteDAO
SQLDAO
SqlProductoDAO
I-ClienteDAO I-ProductoDAO
DAOFactory
MySqlDAOFactory
lProductoDAO
DAOFactory
OracleDAOFactory SqlDAOFactory
MySqlProductoDAO SqllProductoDAO OraclelProductoDAO
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
Recommended