Programacion web java

235
PROGRAMACIÓN I 2009-I Semana 01 Docente : Ing. Carlos A. Quinto Cáceres Correo : [email protected]

description

 

Transcript of Programacion web java

Page 1: Programacion web java

PROGRAMACIÓN I

2009-I

Semana 01

Docente : Ing. Carlos A. Quinto Cáceres

Correo : [email protected]

Page 2: Programacion web java

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.

Page 3: Programacion web java

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.

Page 4: Programacion web java

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.

Page 5: Programacion web java

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.

Page 6: Programacion web java

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.

Page 7: Programacion web java

Conceptos en Internet

Internet.

Intranet.

Nombres de dominio.

URL.

HTTP.

Page 8: Programacion web java

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.

Page 9: Programacion web java

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

Page 10: Programacion web java

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.

Page 11: Programacion web java

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

Page 12: Programacion web java

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>

Page 13: Programacion web java

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:

Page 14: Programacion web java

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.

Page 15: Programacion web java

Herramientas

Eclipse

Entorno de desarrollo integrado para desarrollar

aplicaciones.

Apache Tomcat

Contenedor de aplicaciones Web desarrolladas con

Java que implementa el protocolo HTTP.

Page 16: Programacion web java

Tomcat - Estructura

Page 17: Programacion web java

Aplicaciones en Tomcat

Page 18: Programacion web java

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

Page 19: Programacion web java

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.

Page 20: Programacion web java

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.”

Page 21: Programacion web java

Servlets

Page 22: Programacion web java

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.

Page 23: Programacion web java

Servlets - Ejemplo

Page 24: Programacion web java

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>

Page 25: Programacion web java

Servlets

Page 26: Programacion web java

PROGRAMACIÓN I

2009-I

Semana 02

Docente : Ing. Carlos A. Quinto Cáceres

Correo : [email protected]

Page 27: Programacion web java

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

Page 28: Programacion web java

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.

Page 29: Programacion web java

Servlets: crear, registrar y acceder

Page 30: Programacion web java

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>

Page 31: Programacion web java

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

Page 32: Programacion web java

Servlets: doGet y doPost

POST

GET

Page 33: Programacion web java

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.

Page 34: Programacion web java

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”);

Page 35: Programacion web java

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”);

Page 36: Programacion web java

Servlets: doGet

http://localhost:8080/miapp/

helloWorld?nombre=juan&apellido=perez

http://localhost:8080/miapp/

pagina.jsp?nombre=juan&apellido=perez

arg0.getParameter(“nombre”);

Page 37: Programacion web java

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");

}

}

Page 38: Programacion web java

Ejercicios: registrar Servlet

Page 39: Programacion web java

Ejercicios: registrar Servlet

Page 40: Programacion web java

Ejercicios: Servlets

Pagina noticias.html Pagina registro.html

Page 41: Programacion web java

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.

Page 42: Programacion web java

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.

Page 43: Programacion web java

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)

Page 44: Programacion web java

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.

Page 45: Programacion web java

Compartir Objetos

Métodos:

• public Object getAttribute(String name)

• public void setAttribute(String name, Object object)

• public void removeAttribute(String name)

Page 46: Programacion web java

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");

Page 47: Programacion web java

PROGRAMACIÓN I

2009-I

Semana 03

Docente : Ing. Carlos A. Quinto Cáceres

Correo : [email protected]

Page 48: Programacion web java

Agenda de la sesión

Contexto de Servlets

RequestDispatcher

Compartir objetos

JSP

JavaBean

Page 49: Programacion web java

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.

Page 50: Programacion web java

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.

Page 51: Programacion web java

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.

Page 52: Programacion web java

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)

Page 53: Programacion web java

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.

Page 54: Programacion web java

Compartir Objetos

Métodos:

• public Object getAttribute(String name)

• public void setAttribute(String name, Object object)

• public void removeAttribute(String name)

Page 55: Programacion web java

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");

Page 56: Programacion web java

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.

Page 57: Programacion web java

JSP

Page 58: Programacion web java

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”%>

Page 59: Programacion web java

JSP

Objeto request.

Objeto response.

Objeto session.

Objeto out.

Page 60: Programacion web java

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

Page 61: Programacion web java

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)

Page 62: Programacion web java

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; }

// . . .

}

Page 63: Programacion web java

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);

Page 64: Programacion web java

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);

Page 65: Programacion web java

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.

Page 66: Programacion web java

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.

Page 67: Programacion web java

JDBC

JDBC - MySQL

Clases principales que se utilizarán con un programa Java con JDBC.

Page 68: Programacion web java

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();

Page 69: Programacion web java

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 ");

}

Page 70: Programacion web java

PROGRAMACIÓN I

2009-I

Semana 04

Docente : Ing. Carlos A. Quinto Cáceres

Correo : [email protected]

Page 71: Programacion web java

Agenda de la sesión

JDBC

Page 72: Programacion web java

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.

Page 73: Programacion web java

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.

Page 74: Programacion web java

JDBC

JDBC - MySQL

Clases principales que se utilizarán con un programa Java con JDBC.

Page 75: Programacion web java

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();

Page 76: Programacion web java

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 ");

}

Page 77: Programacion web java

JDBC

Page 78: Programacion web java

JDBC

Page 79: Programacion web java

JDBC

Page 80: Programacion web java

Ejercicios - JDBC

Page 81: Programacion web java

PROGRAMACIÓN I

2009-I

Semana 04

Docente : Ing. Carlos A. Quinto Cáceres

Correo : [email protected]

Page 82: Programacion web java

Agenda de la sesión

JDBC

Page 83: Programacion web java

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.

Page 84: Programacion web java

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.

Page 85: Programacion web java

JDBC

JDBC - MySQL

Clases principales que se utilizarán con un programa Java con JDBC.

Page 86: Programacion web java

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();

Page 87: Programacion web java

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 ");

}

Page 88: Programacion web java

JDBC

Page 89: Programacion web java

JDBC

Page 90: Programacion web java

JDBC

Page 91: Programacion web java

Ejercicios - JDBC

Page 92: Programacion web java

PROGRAMACIÓN I

2009-I

Semana 06

Docente : Ing. Carlos A. Quinto Cáceres

Correo : [email protected]

Page 93: Programacion web java

Agenda de la sesión

Sesiones

Page 94: Programacion web java

Objetivos de la sesión

Definir que son las sesiones

Cuando utilizar sesiones

Page 95: Programacion web java

Ejercicios

¿Qué se necesita para implementar la

funcionalidad de login de una aplicación?

Pagina login.html / login.jsp

Servlet Login

Page 96: Programacion web java

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>

Page 97: Programacion web java

Ejercicios

Información del formulario

usuario = request.getParameter(“txt_usuario”);

clave = request.getParameter(“txt_clave”);

Page 98: Programacion web java

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{ }

Page 99: Programacion web java

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;

}

Page 100: Programacion web java

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.

Page 101: Programacion web java

Sesiones

HttpSession misesion =

request.getSession(true);

<%@ page session="true"%>

Page 102: Programacion web java

Sesiones

Para almacenar objetos en una sesión:

String micorreo="[email protected]";

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();

Page 103: Programacion web java

PROGRAMACIÓN I

2009-I

Semana 07

Docente : Ing. Carlos A. Quinto Cáceres

Correo : [email protected]

Page 104: Programacion web java

Agenda de la sesión

Transacciones

ACID

Page 105: Programacion web java

Objetivos de la sesión

Cuando se deben utilizar transacciones

Definir el concepto de ACID

Page 106: Programacion web java

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.

Page 107: Programacion web java

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.

Page 108: Programacion web java

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();

Page 109: Programacion web java

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.

Page 110: Programacion web java

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.

Page 111: Programacion web java

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.

Page 112: Programacion web java
Page 113: Programacion web java

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

}

Page 114: Programacion web java

PROGRAMACIÓN I

2009-I

Semana 10

Docente : Ing. Carlos A. Quinto Cáceres

Correo : [email protected]

Page 115: Programacion web java

Agenda de la sesión

Frameworks

Patrones

Modelos de aplicación

MVC

Page 116: Programacion web java

Objetivos de la sesión

Definir el concepto de Frameworks y su relación con

los patrones.

Conocer los modelos de aplicaciones Web.

Page 117: Programacion web java

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.

Page 118: Programacion web java

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.

Page 119: Programacion web java

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

Page 120: Programacion web java

Frameworks

Struts

Spring

Hibernate

Tapestry

Cocoon

Google Web Toolkit

Page 121: Programacion web java

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.

Page 122: Programacion web java

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

Page 123: Programacion web java

Modelos de aplicación

Bro

wser

JSP

Bean

BD

Page 124: Programacion web java

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.

Page 125: Programacion web java

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.

Page 126: Programacion web java

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

Page 127: Programacion web java

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.

Page 128: Programacion web java

MVC

Page 129: Programacion web java

PROGRAMACIÓN I

2009-I

Semana 11

Docente : Ing. Carlos A. Quinto Cáceres

Correo : [email protected]

Page 130: Programacion web java

Agenda de la sesión

MVC

DAO

Page 131: Programacion web java

Objetivos de la sesión

Reforzar el concepto MVC.

Definir y analizar el uso del patrón DAO.

Page 132: Programacion web java

MVC

Page 133: Programacion web java

MVC

Bienvenidos a la Tienda Virtual

Page 134: Programacion web java

MVC

Page 135: Programacion web java

MVC

Page 136: Programacion web java

MVC

Page 137: Programacion web java

DAO

Las aplicaciones trabajan con diversos orígenes

de datos y su acceso depende del tipo de

almacenamiento o del proveedor.

Page 138: Programacion web java

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.

Page 139: Programacion web java

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.

Page 140: Programacion web java

DAO

BusinessObject DataAccessObject DataSource

TransferObject

encapsula uses

Obtiene / modifica

Crea / utiliza

Page 141: Programacion web java

DAO

Client MySqlClienteDAO MYSQL

ClienteBean

encapsula usa

obtiene / modifica

crea / utiliza

I-ClienteDAO

Page 142: Programacion web java

DAO

/tiendavirtual

src

beans

dao

servlets

util

WebContent

index.jsp

login.jsp

productos.jsp

carrito.jsp

Page 143: Programacion web java

DAO

/tiendavirtual

src

beans

ProductoBean

dao

MySqlDAO

ProductoDAO

MySql_ProductoDAO

servlets

ServletCompra

util

Page 144: Programacion web java

PROGRAMACIÓN I

2009-I

Semana 12

Docente : Ing. Carlos A. Quinto Cáceres

Correo : [email protected]

Page 145: Programacion web java

Agenda de la sesión

DAO

DAOFactory

Page 146: Programacion web java

Objetivos de la sesión

Reforzar el concepto de DAO en base a ejemplos.

Conceptos de DAOFactory.

Mostrar las diferencias entre DAO y DAOFactory.

Page 147: Programacion web java

DAO

Client MySqlClienteDAO MYSQL

ClienteBean

encapsula usa

obtiene / modifica

crea / utiliza

I-ClienteDAO

Page 148: Programacion web java

DAO

/tiendavirtual

src

beans

dao

servlets

util

WebContent

index.jsp

login.jsp

productos.jsp

carrito.jsp

Page 149: Programacion web java

DAO

/tiendavirtual

src

beans

ProductoBean

dao

MySqlDAO

ProductoDAO

MySql_ProductoDAO

servlets

ServletCompra

util

Page 150: Programacion web java

DAO - ProductoBean

Page 151: Programacion web java

DAO - MySqlDAO

Page 152: Programacion web java

DAO - ProductoDAO

Page 153: Programacion web java

DAO - MySql_ProductoDAO

Page 154: Programacion web java

DAO - Compras

Page 155: Programacion web java

DAO - productos.jsp

Page 156: Programacion web java

DAOFactory

MySqlClienteDAO

MYSQLDAO

MySqlProductoDAO

I-ClienteDAO I-ProductoDAO

SqlClienteDAO

SQLDAO

SqlProductoDAO

I-ClienteDAO I-ProductoDAO

Page 157: Programacion web java

DAOFactory

MySqlDAOFactory

lProductoDAO

DAOFactory

OracleDAOFactory SqlDAOFactory

MySqlProductoDAO SqllProductoDAO OraclelProductoDAO

Page 158: Programacion web java

DAOFactory

/tiendavirtual src

beans

ProductoBean

dao

iface

ProductoDAO

mysql

MySql_ProductoDAO

daofactory

DAOFactory

MySqlDAOFactory

servlets

ServletCompra

Page 159: Programacion web java

DAOFactory

Page 160: Programacion web java

DAOFactory

Page 161: Programacion web java

DAOFactory

Page 162: Programacion web java

PROGRAMACIÓN I

2009-I

Semana 13

Docente : Ing. Carlos A. Quinto Cáceres

Correo : [email protected]

Page 163: Programacion web java

Agenda de la sesión

DAOFactory

Ejercicios

Page 164: Programacion web java

Objetivos de la sesión

Reforzar el concepto de DAOFactory.

Ejercicios DAOFactory.

Page 165: Programacion web java

DAOFactory

MySqlClienteDAO

MYSQLDAO

MySqlProductoDAO

I-ClienteDAO I-ProductoDAO

SqlClienteDAO

SQLDAO

SqlProductoDAO

I-ClienteDAO I-ProductoDAO

Page 166: Programacion web java

DAOFactory

MySqlDAOFactory

lProductoDAO

DAOFactory

OracleDAOFactory SqlDAOFactory

MySqlProductoDAO SqllProductoDAO OraclelProductoDAO

Page 167: Programacion web java

DAOFactory /tiendavirtual

src

beans

CategoriaBean

dao

iface

CategoriaDAO

mysql

MySql_CategoriaDAO

daofactory

DAOFactory

MySqlDAOFactory

servlets

Categorias

WebContent

categorias.jsp

Page 168: Programacion web java

DAOFactory - CategoriaBean

Page 169: Programacion web java

DAOFactory - CategoriaDAO

Page 170: Programacion web java

DAOFactory – MySql_CategoriaDAO

Page 171: Programacion web java

DAOFactory – DAOFactory

Page 172: Programacion web java

DAOFactory – MySqlDAOFactory

Page 173: Programacion web java

DAOFactory – Categorias

Page 174: Programacion web java

DAOFactory – categorias.jsp

Page 175: Programacion web java

PROGRAMACIÓN I

2009-I

Semana 14

Docente : Ing. Carlos A. Quinto Cáceres

Correo : [email protected]

Page 176: Programacion web java

Agenda de la sesión

JavaScript

Page 177: Programacion web java

Objetivos de la sesión

Definir el concepto de JavaScript

Conocer la sintaxis JavaScript

Mostar la ubicación del código JavaScript

Page 178: Programacion web java

JavaScript

Page 179: Programacion web java

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.

Page 180: Programacion web java

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.

Page 181: Programacion web java

JavaScript

window

history

location

document

form

button, checkbox, hidden, radio, text, select (options),

etc

frame

navigator

Page 182: Programacion web java

JavaScript

Page 183: Programacion web java

JavaScript

Page 184: Programacion web java

JavaScript

Page 185: Programacion web java

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.

Page 186: Programacion web java

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.

Page 187: Programacion web java

JavaScript

Page 188: Programacion web java

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.

Page 189: Programacion web java

Frameworks JavaScript

MooTools

jQuery

Prototype

Dojo

Script.aculo.us

Page 190: Programacion web java

PROGRAMACIÓN I

2009-I

Semana 15

Docente : Ing. Carlos A. Quinto Cáceres

Correo : [email protected]

Page 191: Programacion web java

Agenda de la sesión

AJAX

XML y RSS

Page 192: Programacion web java

Objetivos de la sesión

Conocer nuevas técnicas de desarrollo Web

Resumen DaoFactory

Page 193: Programacion web java

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.

Page 194: Programacion web java

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>

Page 195: Programacion web java

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).

Page 196: Programacion web java

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

Page 197: Programacion web java

AJAX

Es un conjunto de tecnologías:

XHTML y CSS

Document Object Model

XML y XSLT

XMLHttpRequest

JavaScript

Page 198: Programacion web java

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.

Page 199: Programacion web java

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.

Page 200: Programacion web java

AJAX

Page 201: Programacion web java

AJAX

Page 202: Programacion web java

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.

Page 203: Programacion web java

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.

Page 204: Programacion web java

AJAX - Desventajas

http://www.jamesdam.com/ajax_login/login.html

http://joeabiraad.com/demos/ajax2/

http://www.ajaxdaddy.com/

Page 205: Programacion web java

PROGRAMACIÓN I

2009-I

Semana 15

Docente : Ing. Carlos A. Quinto Cáceres

Correo : [email protected]

Page 206: Programacion web java

Agenda de la sesión

Temas del curso

Page 207: Programacion web java

Objetivos de la sesión

Resumen de la 2da parte del curso

Page 208: Programacion web java

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.

Page 209: Programacion web java

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

Page 210: Programacion web java

MVC

Page 211: Programacion web java

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.

Page 212: Programacion web java

DAO

Client MySqlClienteDAO MYSQL

ClienteBean

encapsula usa

obtiene / modifica

crea / utiliza

I-ClienteDAO

Page 213: Programacion web java

DAO

/tiendavirtual

src

beans

ProductoBean

dao

MySqlDAO

ProductoDAO

MySql_ProductoDAO

servlets

ServletCompra

util

Page 214: Programacion web java

DAO - MySqlDAO

Page 215: Programacion web java

DAO - ProductoDAO

Page 216: Programacion web java

DAO - MySql_ProductoDAO

Page 217: Programacion web java

DAO - Compras

Page 218: Programacion web java

DAOFactory

MySqlClienteDAO

MYSQLDAO

MySqlProductoDAO

I-ClienteDAO I-ProductoDAO

SqlClienteDAO

SQLDAO

SqlProductoDAO

I-ClienteDAO I-ProductoDAO

Page 219: Programacion web java

DAOFactory

MySqlDAOFactory

lProductoDAO

DAOFactory

OracleDAOFactory SqlDAOFactory

MySqlProductoDAO SqllProductoDAO OraclelProductoDAO

Page 220: Programacion web java

DAOFactory /tiendavirtual

src

beans

CategoriaBean

dao

iface

CategoriaDAO

mysql

MySql_CategoriaDAO

daofactory

DAOFactory

MySqlDAOFactory

servlets

Categorias

WebContent

categorias.jsp

Page 221: Programacion web java

DAOFactory - CategoriaBean

Page 222: Programacion web java

DAOFactory - CategoriaDAO

Page 223: Programacion web java

DAOFactory – MySql_CategoriaDAO

Page 224: Programacion web java

DAOFactory – DAOFactory

Page 225: Programacion web java

DAOFactory – MySqlDAOFactory

Page 226: Programacion web java

DAOFactory – Categorias

Page 227: Programacion web java

DAOFactory – categorias.jsp

Page 228: Programacion web java

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.

Page 229: Programacion web java

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.

Page 230: Programacion web java

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).

Page 231: Programacion web java

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

Page 232: Programacion web java

AJAX

Page 233: Programacion web java
Page 234: Programacion web java
Page 235: Programacion web java