Programacion web java

Post on 18-Nov-2014

2.200 views 1 download

description

 

Transcript of Programacion web java

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