Servlets. Unidad: 4 Laboratorio de Programación. Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

Servlets Unidad: 4 Laboratorio de Programación Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos Indice      Módulos

0 downloads 18 Views 148KB Size

Recommend Stories


BIENVENIDO A LA UNIDAD 4
BIENVENIDO A LA UNIDAD 4 Lección 1: Animaciones Durante el desarrollo de esta lección el aprendiz aprenderá a insertar, modificar animaciones y aplic

Unidad 4: Estrategias de continuidad
Unidad 4: Estrategias de continuidad 0. Contenido 1. Introducción y Objetivos 1. ¿Qué son las estrategias de continuidad? El objetivo principal de

Story Transcript

Servlets Unidad: 4 Laboratorio de Programación Universidad Nacional de la Patagonia Austral Unidad Académica Río Gallegos

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

1

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

2

Proceso petición de servlet 

El navegador remite la solicitud al servidor web 



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’:   



Normalmente tras cumplimentar un formulario. El servlet a activar es el indicado en la propiedad ‘action’ del formulario

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

3

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

4

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

Título Servlets:  Nombre  Clase  URLs (plantillas)

Servlet

// // // // // // // //

Laboratorio de Programacion

5

Ejemplo de fichero de configuración web.xml Ejemplos tutorial Servlets de ejemplos del tutorial de Servlets y JDBC. HolaMundo HolaMundo HolaMundo /servlet/HolaMundo

Servlet

Laboratorio de Programacion

6

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

7

Sesiones 

Motivación 



Servlet

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

Laboratorio de Programacion

8

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 el servidor web, el programador la consulta

Servlet

Laboratorio de Programacion

9

Cookies o Sessions 





Con sessions la información la almacena y administra el servidor por lo que el servidor tiene un estado que tiene que administrar cuidadosamente. 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 si quiere.

Servlet

Laboratorio de Programacion

10

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:    

Servlet

Cookies Añadir información en la URL Usar campos ocultos de formularios (HIDDEN) Empleo del objeto HttpSession del servlet Laboratorio de Programacion

11

Servlets: Seguimiento de sesión 





Los servlets proporcionan una solución técnica: la API HttpSession. Una interfaz de alto nivel construída sobre los cookies y la reescritura de las urls (pero transparente para el desarrollador). Permite almacenar objetos.

Servlet

Laboratorio de Programacion

12

Sesiones  

Trabajar con sesiones: Buscar el objeto HttpSession asociado a una petición: 

Servlet

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.

Laboratorio de Programacion

13

Sesiones 

Métodos 



 



Servlet

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.

Laboratorio de Programacion

14

Servlets y base de datos 

Servlets 



Base de datos relacional 



Son programas en Java que se ejecutan en servidores para proveer páginas WEB dinámicas y personalizadas, accesando a bases de datos y otros recursos. Es una colección estructurada de datos o registros que se almacena en un sistema informático.

Objetivo 

Servlet

Implementar una página WEB dinámica utilizando servlets trabajando de forma conjunta con una base de datos.

Laboratorio de Programacion

15

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 servlet es la mayor utilización de recursos pues es necesario trabajar con una máquina virtual.

Servlet

Laboratorio de Programacion

16

Servlets y base de datos 

Herramientas utilizadas    

Servlet

El contenedor WEB (TomCat 6.0.18) La base de datos (MySql) JDK 1.5 o superior Driver JDBC adecuado

Laboratorio de Programacion

17

Configuración de variables de ambiente 

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: 

Servlet

C:\Archivos de programa\Apache Software Foundation\Tomcat 6.0\lib

Laboratorio de Programacion

18

Clases necesarias import import import import import

Servlet

java.io.*; java.sql.*; java.util.*; javax.servlet.*; javax.servlet.http.*;

Laboratorio de Programacion

19

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. 



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



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

con.close()

Realizar tratamientos de excepciones

Servlet

Laboratorio de Programacion

20

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

21

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

Página HTML que realiza la petición al servlet 

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 MySQL con la siguiente estructura:

Laboratorio de Programacion

22

Ejemplo import import import import

java.io.*; javax.servlet.*; javax.servlet.http.*; 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

23

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("JDBC"); out.println(""); out.println("Ejemplo de JDBC"); out.println(""); out.println(""); 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(""); } rs.close(); set.close(); } catch (Exception e) { System.out.println("No lee de la tabla"); } out.println("
JugadorVotos” + "
" + nombre + "" + votos + "
"); out.println("Muchas gracias " + nombreP + " por su visita"); out.println(""); out.close(); }

Servlet

Laboratorio de Programacion

24

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

25

Ejemplo… 

Pagina HTML Estadísticas de futbol Estadísticas de Jugadores de Futbol

Nombre del Visitante: eMail:



Servlet

Laboratorio de Programacion

26

Ejemplo… 

Base de datos  

Servlet

Nombre de la BD: BDJugadores Tabla Jugadores

Laboratorio de Programacion

27

Consultas…

Servlet

Laboratorio de Programacion

28

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:  



Servlet

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 Laboratorio de Programacion

29

Próxima clase 

Práctica TP Servlet

Servlet

Laboratorio de Programacion

30

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.