servlets - oocities · de aplicaciones con información que puede tener un contexto más amplio que...

Post on 13-May-2020

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Servlets

Unidad: 4Laboratorio de Programación

Universidad Nacional de la Patagonia AustralUnidad Académica Río Gallegos

Servlet Laboratorio de Programacion 1

Indice

� Módulos Web: configuración, estructura básica, ejemplo.

� Sesiones con servlets� Diferencias con cookies� Servlets y base de datos� Ejemplos y ejercitación

Servlet Laboratorio de Programacion 2

Configuración de módulos web

� Los Servlets se crean y destruyen por iniciativa del contenedor web, que también activa sus métodos.

� Un fichero de configuración permite especificar estos procesos.

� El fichero web.xml contiene información utilizada por el servidor de aplicaciones y el contenedor web en su funcionamiento.

Servlet Laboratorio de Programacion 3

Proceso petición de servlet

� El navegador remite la solicitud al servidor web� Normalmente tras cumplimentar un formulario. El servlet a activar

es el indicado en la propiedad ‘action’ del formulario

� El servidor web determina quién debe servir la solicitud� Si corresponde a una página estática la sirve él� Si corresponde a una aplicación, delega en el contenedor de

servlets

� El contenedor determina el servlet adecuado, y redirige la petición a su método ‘service’:� El argumento ‘solicitud’ contiene los datos de la petición� El argumento ‘respuesta’ permite devolver datos al servidor web� Internamente, ‘service’ determina el tipo de solicitud e invoca

doGet o DoPost

� La respuesta llega al contenedor, que se la pasa al servidor web, y éste la reenvía al navegador

Servlet Laboratorio de Programacion 4

Información de configuración de módulos web

� Inicialización de parámetros de la aplicación

� Lista de servlets

� Inicialización de parámetros de los servlets

� Asociación de URLs a servlets

Servlet Laboratorio de Programacion 5

Estructura básica de fichero de configuración Web.xml

� Título

� Servlets:

� Nombre

� Clase

� URLs (plantillas)

// <web-app …>

// <display-name>

// <servlet>

// <servlet-name>

// <servlet-class>

// <servlet-mapping>

// <servlet-name>

// <url-pattern>

Servlet Laboratorio de Programacion 6

Ejemplo de fichero de configuración web.xml<?xml version="1.0" encoding="ISO-8859-1"?>

<web-app><display-name>Ejemplos tutorial</display-name><description>Servlets de ejemplos del tutorial de Servlets y JDBC.

</description><servlet>

<servlet-name>HolaMundo</servlet-name><servlet-class>HolaMundo</servlet-class>

</servlet><servlet-mapping>

<servlet-name>HolaMundo</servlet-name><url-pattern>/servlet/HolaMundo</url-pattern>

</servlet-mapping></web-app>

Servlet Laboratorio de Programacion 7

Recordatorio

� Los servlets no son aplicaciones, sino partes de aplicaciones con información que puede tener un contexto más amplio que el del código escrito por el desarrollador (contexto de sesión o de aplicación).

� Los servlets proporcionan medios para almacenar información válida en los contextos de sesión y de aplicación y para acceder a ella.

Servlet Laboratorio de Programacion 8

Sesiones

� Motivación

� Como controlar y realizar un seguimiento de un cliente que navega por diferentes páginas de la aplicación.

� Por ejemplo, en una tienda on-line añaden artículos a su carro de la compra. Cómo se sabe que hay en el carro ?.

Servlet Laboratorio de Programacion 9

Sesiones

� Las sesiones con servlet es un mecanismo para mantener información acerca del estado de los requests de un usuario durante una sesión

� Una sesión es un diálogo de una instancia de un browser cliente con el server en un período de tiempo limitado (normalmente 30 minutos).

� Se pueden asociar objetos de información a la sesión, los cuales se conservan en el servlet

� La sesión no la maneja el programador sino el elservidor web, el programador la consulta

Servlet Laboratorio de Programacion 10

Cookies o Sessions

� Con sessions la información la almacena y administra el servidor por lo que el servidortiene un estado que tiene que administrarcuidadosamente.

� Con Cookies es el cliente el que tiene la información, lo que implica que esta va y viene cada vez que se contacta al servidor.

� El cliente puede prohibir el uso de cookies siquiere.

Servlet Laboratorio de Programacion 11

Gestión de la Sesión.Mantenimiento del estado de la sesión.

� El protocolo HTTP no posee la capacidad de almacenar estados.

� Se complican mucho las tareas de guardar las acciones (p.e. las compras) de un usuario.

� Posibles soluciones:� Cookies

� Añadir información en la URL

� Usar campos ocultos de formularios (HIDDEN)

� Empleo del objeto HttpSession del servlet

Servlet Laboratorio de Programacion 12

Servlets: Seguimiento de sesión

� Los servlets proporcionan una solución técnica: la API HttpSession.

� Una interfaz de alto nivel construídasobre los cookies y la reescritura de las urls (pero transparente para el desarrollador).

� Permite almacenar objetos.

Servlet Laboratorio de Programacion 13

Sesiones

� Trabajar con sesiones:

� Buscar el objeto HttpSession asociado a una petición:

� Se usa el método "getSession" de "HttpServletRequest" que devuelve null si no hay una sesión asociada. Entonces para crear una sesión se pasa true.

Servlet Laboratorio de Programacion 14

Sesiones

� Métodos� getSession(): Retorna la sesión que esta asociada al usuario

que está haciendo un request. Si el usuario no tiene una sesión creada, puede crear una sesión si tiene por argumento a TRUE, o devolver un NULL si el argumento es FALSE.

� putValue():asigna un valor a un objeto especificado, si ya esta asignado, este es reemplazado.

� getValue():Recupera un objeto de una sesión.� getValueNames():retorna un arreglo que contienen los

nombres de todos los objetos relacionados con una sesión. En caso contrario retorna vacío.

� removeValue():remueve el objeto que está enlazado con el nombre especificado.

Servlet Laboratorio de Programacion 15

Servlets y base de datos

� Servlets� Son programas en Java que se ejecutan en servidores para

proveer páginas WEB dinámicas y personalizadas, accesandoa bases de datos y otros recursos.

� Base de datos relacional� Es una colección estructurada de datos o registros que se

almacena en un sistema informático.

� Objetivo� Implementar una página WEB dinámica utilizando servlets

trabajando de forma conjunta con una base de datos.

Servlet Laboratorio de Programacion 16

Servlets y base de datos

� Además del servlet existen otras herramientas para la conexión con una base de datos generando una aplicación WEB dinámica.

� Además de servlet, las herramientas más populares son: PHP, ASP .NET.

� Una de las principales desventajas de servletes la mayor utilización de recursos pues es necesario trabajar con una máquina virtual.

Servlet Laboratorio de Programacion 17

Servlets y base de datos

� Herramientas utilizadas

� El contenedor WEB (TomCat 6.0.18)

� La base de datos (MySql)

� JDK 1.5 o superior

� Driver JDBC adecuado

Servlet Laboratorio de Programacion 18

Configuración de variables deambiente

� Bajar el drive MySql JDBC

� Descargar el driver JDBC para MySQL.

� http://dev.mysql.com/downloads/connector/j/5.0.html

� Copiar el driver MySql JDBC en la carpeta:

� C:\Archivos de programa\Apache Software Foundation\Tomcat6.0\lib

Servlet Laboratorio de Programacion 19

Clases necesarias

import java.io.*;

import java.sql.*;

import java.util.*;

import javax.servlet.*;

import javax.servlet.http.*;

Servlet Laboratorio de Programacion 20

Conexión a la base de datos

� El siguiente objetivo es conectarse a la base de datos, para lo cual básicamente hay que realizar dos pasos:� En el método init() del servlet:

� Registrar (cargar en memoria) el controlador.� Class.forName("com.mysql.jdbc.Driver");

� Establecer la conexión por medio del método:� URL = "jdbc:mysql://localhost/bdjugadores";� con = DriverManager.getConnection(URL,"root","");

� Cerrar la conexión� En el método destroy()

� con.close()

� Realizar tratamientos de excepciones

Servlet Laboratorio de Programacion 21

Sentencias SQL

� Para definir y ejecutar las sentencias SQL, el procedimiento es el siguiente:� Lo primero es escribir una sentencia, almacenándola en un

String.� String select_query = "SELECT * FROM habitantes”;

� Crear un objeto de la clase Statement, por medio de la llamada CreateStatement() de la clase Connection.

� La clase Connection se instanció al realizar la conexión a la base de datos.

� Statement set = con.createStatement();� ResultSet rs = set.executeQuery("SELECT * FROM

Jugadores");� Esto es parte del método doPost() o doGet(), de acuerdo al tipo de

llamada al servlet.� No olvidar el manejo de excepciones en el uso de las sentencias

SQL

Servlet Laboratorio de Programacion 22

Ejemplo con acceso a base de datos (Servlet+JDBC)

� Página HTML que realiza la petición al servlet� La página HTML futbol.html permitirá que un cliente entre

su nombre y correo y solicite las estadística de los votos recibidos hasta el momento por jugadores de fútbol en la Base de Datos de MySQL BDJugadores que tendrá una tabla Jugadores. Se debe crear esta BD y sus tablas en MySQLcon la siguiente estructura:

Servlet Laboratorio de Programacion 23

Ejemplo import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

import java.sql.*;

public class TablaVotos extends HttpServlet {

private Connection con;

private Statement set;

private ResultSet rs;

public void init(ServletConfig cfg) throws ServletException {

String URL = "jdbc:mysql://localhost/BDJugadores";

String userName = "root";

String password = "";

try {

Class.forName("com.mysql.jdbc.Driver");

URL = "jdbc:mysql://localhost/bdjugadores";

con = DriverManager.getConnection(URL,userName,password);

set = con.createStatement();

System.out.println("Se ha conectado");

} catch (Exception e) {

System.out.println("No se ha conectado");

}

}

Servlet Laboratorio de Programacion 24

Ejemplo…public void doPost(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

String nombreP = (String) req.getParameter("txtNombre");

PrintWriter out = res.getWriter();

res.setContentType("text/html");

out.println("<html><head><title>JDBC</title></head>");

out.println("<body><font size=10>");

out.println("<h1>Ejemplo de JDBC</h1>");

out.println("<table border=1>");

out.println("<tr><td><b>Jugador</b></td><td><b>Votos” + "</b></td></tr>");

try {

String nombre;

int votos;

set = con.createStatement();

rs = set.executeQuery("SELECT * FROM Jugadores");

while (rs.next()) {

nombre = rs.getString("Nombre");

votos = rs.getInt("Votos");

out.println("<tr><td>" + nombre + "</td><td>" + votos + "</td></tr>");

}

rs.close();

set.close();

} catch (Exception e) {

System.out.println("No lee de la tabla");

}

out.println("</table>");

out.println("<h3>Muchas gracias " + nombreP + " por su visita</h3>");

out.println("</form></font></body></html>");

out.close();

}

Servlet Laboratorio de Programacion 25

Ejemplo…public void doGet(HttpServletRequest req, HttpServletResponse res)

throws ServletException, IOException {

try {

doPost(req, res);

} catch (Exception e) {}

}

public void destroy() {

try {

con.close();

} catch (Exception e) {}

super.destroy();

}

}// fin programa

Servlet Laboratorio de Programacion 26

Ejemplo…

� Pagina HTML<html>

<head>

<title>Estadísticas de futbol</title>

</head>

<body>

<center><H1>Estadísticas de Jugadores de Futbol</H1></center>

<form action="TablaVotos" method="POST" >

<p align="left">

Nombre del Visitante: <input type="text" size="20" name="txtNombre">

eMail: <input type="text" size="20" name="txtMail">

</p>

<p align="left"><input type="submit" name="B1" value="Mostrar Estadisticas">

<input type="reset" name="B2" value="Reset">

</p>

</form>

</body>

</html>

Servlet Laboratorio de Programacion 27

Ejemplo…

� Base de datos� Nombre de la BD: BDJugadores

� Tabla Jugadores

Servlet Laboratorio de Programacion 28

Consultas…

Servlet Laboratorio de Programacion 29

Ejercicio

� Crear una base de datos de libros con JDBC y MySQL, de modo que cada fila refleje la información de un libro (titulo, autor, año, paginas, precio)

� Crear un servlet para mantener (agregar, modificar, eliminar libros) esta base de datos

� Crear un servlet para hacer consultas sobre esta base de datos

� Las consultas son: � ver todos los libros de un autor dado� ver todos los libros que en el título tienen alguna expresión

dada por el usuario � ver todos los libros cuyo precio esté en un cierto rango dado

por el usuario

Servlet Laboratorio de Programacion 30

Próxima clase

� Práctica TP Servlet

top related