Servlets Servlets Son modulos que extienden las funcionalidades de un servidor “java-enabled” Normalmente generan código HTML dinámicamente, el cual se.

Slides:



Advertisements
Presentaciones similares
Java Enterprise Edition (Java EE)
Advertisements

FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 13 Ing. Ronald Criollo.
Curso de Java “Java para Web” Rogelio Ferreira Escutia.
Fernando Alonso Blázquez Servlets con acceso a Bases de Datos 29 de Abril de 2004.
Servlets 22 de Abril de 2004 Fernando Alonso Blázquez.
Java nos ofrece System.out para escribir en pantalla, pero también tenemos System.in para leer. System.in es un objeto de una clase de java que se llama.
DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN
"java del lado del servidor" Servlet y JSP Java Server Pages.
Introducción a la arquitectura Web
Servlets.
Servlets Servlets.
El Socket Un socket es un extremo de un link de comunicación entre dos programas que corren en una red. El socket esta asociado (amarrado, bound) a ub.
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Borland User Group - Guatemala Desarrollo de Servlets con Borland JBuilder 2006 Mario Enríquez Open Consult Diciembre 2006.
JAVA. Introducción Que es java?  Código reusable  Multiplataforma.
Archivos y Búsqueda Secuencial
Servlets y JSP Temas Selectos de Cómputo Cibernética 912 Agosto-Diciembre 2005.
HTTP, CGI, Applets, Servlets y SOAP
Servlets, JSP, JavaBEANS,JDBC
Servlets 18 de Marzo de Índice ¿Qué es un Servlet? ¿Cuándo y por qué usar Servlets? Estructura básica de un HttpServlet Servlet simple que genera.
JAVA: Servlets Diseño de aplicaciones web
TEMA 6. Applets y servlets
Fernando Alonso Blázquez Nicolás Serrano Bárcena Servlets 8 de Abril de 2008.
Aplicaciones Web M.C. Jorge Eduardo Ibarra Esquer
Parameters passed by client One of the most important features to make the web an interactive environment is the passing of parameters from client so the.
Desarrollo con Servlets. Servlets: Introducción  Módulos que amplían los servidores orientados a petición/respuesta.  La respuesta en el lenguaje Java.
Mario Osvaldo Bressano Servlets. Mario Osvaldo Bressano Arquitectura de 2 Capas.
JAVA: Servlets Diseño de servicios web © María de los Santos Pérez Hernández
Servlets Servlets son módulos que extienden a servidores “java- enabled” orientados a request/response, como por ejemplo Servidores Web Un servlet puede.
Servlets Servlets son módulos que extienden a servidores “java-enabled” orientados a request/response, como por ejemplo Servidores Web Un servlet puede.
Servlets Servlets son módulos que extienden a servidores orientados a request/response, como por ejemplo Servidores Web “java-enabled”. Un servlet puede.
Servlets 10 de Mayo de 2006.
Confidential // Neoris 1 Confidential // Do Not Reproduce without prior written permission from Neoris Servlets.
Servlets Servlets son módulos que extienden a servidores “java- enabled” orientados a request/response, como por ejemplo Servidores Web Un servlet puede.
 Módulos que amplían los servidores orientados a petición/respuesta.  La respuesta en el lenguaje Java a los CGIs (Common Gateway Interface) para construir.
Temario Java 2 Enterprise Edition Arquitectura Especificación Servlets Contenedores Cookies Sesiones.
1 Introducción a las Comunicaciones en Red. import java.net.InetAddress; import java.net.UnknownHostException; public class PruebaSockets { public static.
1 Tema 2.5 Cookies. Inicio 2 1.CookiesCookies La principal utilidad de las cookies (galletas) es la de solventar el problema de la falta de estado en.
Trabajar con SERVLETS. Índice Qué son los Servlets Para qué sirven Cómo se utilizan Ejemplo Cómo probar un Servlet.
Procesamiento de Formularios con Servlets de Java Aplicaciones Web con JSP y Servlets de Java.
Filtros HTTP.  Características de las aplicaciones web: TODOS los recursos están expuestos al exterior.  Problema: Estamos repitiendo código en todos.
Microsoft Office 2007 Introducción a Access. Una base de datos es una colección de información relacionada entre si y almacenada en una o más computadoras.
¿Que es PHP? PHP Hypertext Preprocessor Y solo porque me quiero hacer el profesor cool y meter un chiste: PHP también significa: Para Hacer Páginas.
Introducción a la Programación Multimedial
Clase1: lectura/escritura/asignación
PHP Hypertext Preprocessor
Introducción a Base de Datos
Ajax (ASYNCHRONOUS JAVASCRIPT AND XML)
Tutorial GMAIL.
Aplicaciones Web de Servidor
Sesiones 06 de Mayo de 2004 Fernando Alonso Blázquez.
Usando StreamReader y StreamWriter
Funcionamiento del servicio de correo electrónico
Usando StreamReader y StreamWriter
DOCENTE: EMILIO ISMAEL BUSTAMANTE MONTES
Parametros enviados por el cliente
Session Tracking.
La internet Unifica el lenguaje básico de los computadores para intercambiar datos Este lenguaje o protocolo se llama TCP/IP Consiste en un esquema de.
INTRODUCCIÓN A LAS APLICACIONES WEB Y TECNOLOGÍA JAVA Jaime Fernández Mayo 2006.
JDBC: comunicación Java-Base de Datos
String, random y stream en java
Parametros multivalores
Leyendo strings de la línea de comandos
Servlets Servlets son módulos que extienden a servidores “java-enabled” orientados a request/response, como por ejemplo Servidores Web Un servlet puede.
Clase1: lectura/escritura/asignación
Objetos con linea de ejecucion propia
Problemas de Strings boolean palindrome(String x) Ej: palindrome(“reconocer”)=true boolean alfabetico(String x) Ej: alfabetico(“hola”)=true,
Intr. a la creación y gestión de páginas web
Programación Orientada a Objetos
Servlets Servlets son módulos que extienden a servidores “java-enabled” orientados a request/response, como por ejemplo Servidores Web Un servlet puede.
Transcripción de la presentación:

Servlets Servlets Son modulos que extienden las funcionalidades de un servidor “java-enabled” Normalmente generan código HTML dinámicamente, el cual se manda al browser, quien lo muestra. Por ejemplo, pueden mandar una query a una base de datos, la que puede estar basada en parámetros que mandó el browser al servidor. El resultado se manda en formato HTML

Ambientes de Desarrollo Hay muchos ambientes de desarrollo que permiten escribir y testear los servlets cómodamente Incluyen un editor y un servidor web También incluyen los imports necesarios para poder compilar y correr los servlets Algunos de ellos son Eclipse (need to download plugins) y Netbeans (which also has full j2ee support

Anatomía de un Servlet Un Servlet se escribe extendiendo la clase HttpServlet la que tiene los siguientes métodos declarados pero vacíos init() Es invocado por el servidor cuando el servlet se usa por primera vez (cuándo sucede esto depende del servidor) doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException es invocado cada vez que un servlet es contactado po un requerimiento GET (por default) doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException es invocado cada vez que un servlet es contactado po un requerimiento POST

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet extends HttpServlet { public void init() { //Sobreescribir para que haga lo que queramos } public void doGet ( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { public void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

El parámetro HttpServletRequest HttpServletRequest es la clase del primer parametro que reciben los métodos doGet y doPost. Provee acceso a: Información acerca del cliente (por ejemplo, los parámetros que envió, la versión del protocolo que está usando, la IP del cliente, etc. Además da acceso a un, ServletInputStream que puede ser usado por el servidor para recibir información adicional (por ejemplo un archivo que el cliente quiere “uplodear” cuando se ha usado el método POST o PUT.

El parámetro HttpServletResponse HttpServletResponse es la clase del segundo argumento que reciben doGet y doPost. Provee métodos para : Decirle al browser cuál es el tipo MIME de la respuesta que se le va a dar al cliente Obtener un objeto ServletOutputStream y un PrintWriter través del cual podemos mandar código HTML dinámicamente al cliente. Mandar otras informaciones importantes (cookies, redireccionamineto, refresco, etc…)

Example 1 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Date; public class SimpleServlet extends HttpServlet { public void doGet ( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // set content type response.setContentType("text/html"); // open print writer to browser PrintWriter out = response.getWriter(); //send data out.println("<HTML>") out.println("<H1> Mi Primer Servlet </H1>"); out.println("<BR> <H2>Fecha y hora: "+(new Date())+"<H2>"); out.println("</HTML>"); out.close(); }

Example 1 Importar las clases necesarias Para usar la clase Date import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Date; public class SimpleServlet extends HttpServlet { public void doGet ( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // set content type response.setContentType("text/html"); // open print writer to browser PrintWriter out = response.getWriter(); //send data out.println("<HTML>") out.println("<H1> Mi Primer Servlet </H1>"); out.println("<BR> <H2>Fecha y hora: "+(new Date())+"<H2>"); out.println("</HTML>"); out.close(); } Importar las clases necesarias Para usar la clase Date

Example 1 Todo servlet extiende HttpServlet Sobreescribir método doGet import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Date; public class SimpleServlet extends HttpServlet { public void doGet ( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // set content type response.setContentType("text/html"); // open print writer to browser PrintWriter out = response.getWriter(); //send data out.println("<HTML>") out.println("<H1> Mi Primer Servlet </H1>"); out.println("<BR> <H2>Fecha y hora: "+(new Date())+"<H2>"); out.println("</HTML>"); out.close(); } Todo servlet extiende HttpServlet Sobreescribir método doGet

Example 1 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Date; public class SimpleServlet extends HttpServlet { public void doGet ( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // set content type response.setContentType("text/html"); // open print writer to browser PrintWriter out = response.getWriter(); //send data out.println("<HTML>") out.println("<H1> Mi Primer Servlet </H1>"); out.println("<BR> <H2>Fecha y hora: "+(new Date())+"<H2>"); out.println("</HTML>"); out.close(); } Decirle al browser el tipo de Contenido que va a recibir Como respuesta Obtiene una “linea directa” para escribirle al browser contenido HTML

Mandar (imprimir) info al browser Example 1 import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Date; public class SimpleServlet extends HttpServlet { public void doGet ( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // set content type response.setContentType("text/html"); // open print writer to browser PrintWriter out = response.getWriter(); //send data out.println("<HTML>") out.println("<H1> Mi Primer Servlet </H1>"); out.println("<BR> <H2>Fecha y hora: "+(new Date())+"<H2>"); out.println("</HTML>"); out.close(); } Mandar (imprimir) info al browser Obtiene la fecha del sistema Cerrar conexión (recién aquí se manda todo)

Corriendo el primer ejemplo Escribir un servlet con Netbeans es muy sencillo Tambien testearlo se puede hacer automáticamente Abrir netbeans Crear un proyecto web (lo cual creará una serie de directorios y archivos) Crear el servlet (new servlet) Copiar el código de SimpleServlet.java Correr el archivo

Ejemplo 2 Implementar un contador web Cuenta cuantas veces se contacta al servlet (con GET) Tambien le mostrará al cliente su número IP

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Count extends HttpServlet { int count = 0; // a counter starts in 0 public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter out = res.getWriter(); res.setContentType("text/html"); out.println("<H1> A web page counter </H1>"); out.println("<HR>"); out.println("This servlet was accessed "+count+" time(s)"); out.println("Your computer is "+req.getRemoteHost()); out.close(); }

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Count extends HttpServlet { int count = 0; // a counter starts in 0 public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter out = res.getWriter(); res.setContentType("text/html"); out.println("<H1> A web page counter </H1>"); out.println("<HR>"); out.println("This servlet was accessed "+count+" time(s)"); out.println("Your computer is "+req.getRemoteHost()); out.close(); }

Incrementa el contador cada vez que se ejecuta doGet import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Count extends HttpServlet { int count = 0; // a counter starts in 0 public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter out = res.getWriter(); res.setContentType("text/html"); out.println("<H1> A web page counter </H1>"); out.println("<HR>"); out.println("This servlet was accessed "+count+" time(s)"); out.println("Your computer is "+req.getRemoteHost()); out.close(); } Incrementa el contador cada vez que se ejecuta doGet

Totalmente necesario import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Count extends HttpServlet { int count = 0; // a counter starts in 0 public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter out = res.getWriter(); res.setContentType("text/html"); out.println("<H1> A web page counter </H1>"); out.println("<HR>"); out.println("This servlet was accessed "+count+" time(s)"); out.println("Your computer is "+req.getRemoteHost()); out.close(); } Totalmente necesario

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Count extends HttpServlet { int count = 0; // a counter starts in 0 public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter out = res.getWriter(); res.setContentType("text/html"); out.println("<H1> A web page counter </H1>"); out.println("<HR>"); out.println("This servlet was accessed "+count+" time(s)"); out.println("Your computer is "+req.getRemoteHost()); out.close(); } Print data to browser

Qué pasa si el servidor se cae y se reinicia el sistema ? Contador volverá a 0 Para recordar el valor que tenía esta variable incluso si se cae el sistema la iremos escribiendo en un archivo cada vez que cambia su valor. Al principio el servlet lee el valor inicial de la variable desde un archivo (si existía), si no, vamos a empezar con el valor = 0

public class Count extends HttpServlet { int count = 0; // a counter for the object public void init() { try { BufferedReader in = new BufferedReader( newFileReader(„count.txt“)); String l = in.readLine(); count = Integer.parseInt(l); } catch (FileNotFoundException e) { //no need to do anything here } public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter outFile = new PrintWriter( new Filereader(„count.txt“)); outFile.println(count); outFile.close(); PrintWriter outBrowser = res.getWriter(); res.setContentType("text/html"); outBrowser.println("<H1> A web page counter </H1>"); outBrowser.println("<HR>"); .....

Tratar de abrir el archivo public class Count extends HttpServlet { int count = 0; // a counter for the object public void init() { try { BufferedReader in = new BufferedReader( newFileReader(„count.txt“)); String l = in.readLine(); count = Integer.parseInt(l); } catch (FileNotFoundException e) { //no need to do anything here } public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter outFile = new PrintWriter( new Filereader(„count.txt“)); outFile.println(count); outFile.close(); PrintWriter outBrowser = res.getWriter(); res.setContentType("text/html"); outBrowser.println("<H1> A web page counter </H1>"); outBrowser.println("<HR>"); ..... Tratar de abrir el archivo

Convrtir lo leido a valor entero public class Count extends HttpServlet { int count = 0; // a counter for the object public void init() { try { BufferedReader in = new BufferedReader( newFileReader(„count.txt“)); String l = in.readLine(); count = Integer.parseInt(l); } catch (FileNotFoundException e) { //no need to do anything here } public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter outFile = new PrintWriter( new Filereader(„count.txt“)); outFile.println(count); outFile.close(); PrintWriter outBrowser = res.getWriter(); res.setContentType("text/html"); outBrowser.println("<H1> A web page counter </H1>"); outBrowser.println("<HR>"); ..... Leer una linea Convrtir lo leido a valor entero

public class Count extends HttpServlet { int count = 0; // a counter for the object public void init() { try { BufferedReader in = new BufferedReader( newFileReader(„count.txt“)); String l = in.readLine(); count = Integer.parseInt(l); } catch (FileNotFoundException e) { //no need to do anything here } public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter outFile = new PrintWriter( new Filereader(„count.txt“)); outFile.println(count); outFile.close(); PrintWriter outBrowser = res.getWriter(); res.setContentType("text/html"); outBrowser.println("<H1> A web page counter </H1>"); outBrowser.println("<HR>"); .....

Despues de incrementar, abrir el archivo (sobreescribirlo) public class Count extends HttpServlet { int count = 0; // a counter for the object public void init() { try { BufferedReader in = new BufferedReader( newFileReader(„count.txt“)); String l = in.readLine(); count = Integer.parseInt(l); } catch (FileNotFoundException e) { //no need to do anything here } public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter outFile = new PrintWriter( new Filereader(„count.txt“)); outFile.println(count); outFile.close(); PrintWriter outBrowser = res.getWriter(); res.setContentType("text/html"); outBrowser.println("<H1> A web page counter </H1>"); outBrowser.println("<HR>"); ..... Despues de incrementar, abrir el archivo (sobreescribirlo) Escribir el nuevo número Cerrar archivo

public class Count extends HttpServlet { int count = 0; // a counter for the object public void init() { try { BufferedReader in = new BufferedReader( newFileReader(„count.txt“)); String l = in.readLine(); count = Integer.parseInt(l); } catch (FileNotFoundException e) { //no need to do anything here } public void doGet ( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { count++; PrintWriter outFile = new PrintWriter( new Filereader(„count.txt“)); outFile.println(count); outFile.close(); PrintWriter outBrowser = res.getWriter(); res.setContentType("text/html"); outBrowser.println("<H1> A web page counter </H1>"); outBrowser.println("<HR>"); ..... El resto es igual

Ejemplo 3 Escriba un servlet que genere un número aleatorio entre 1 y 100 cada vez que es contactado y lo muestra al cliente junto con la IP del computador del cliente Además muestra el número más grande generado hasta ahora y la IP del computador para el cual lo generó La dirección del computador del cliente puede ser obtenida String s = request.getRemoteHost(); returns the IP number (like 133.8.109.158 String s = request.getRemoteAddress(); returns the name if it can be retrieved (like www.waseda.jp) Un número aleatorio entre 1 y 100 se genera con la siguiente instrucción en Java int numero = (int)(1 + Math.random()*100);

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class NewServlet extends HttpServlet { int maxNumber = 0; String maxIP = ""; public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { int aleatorio = (int)(1 + Math.random()*100); String ip = request.getRemoteAddr(); if (aleatorio > maxNumber) { maxNumber = aleatorio; maxIP = ip; } response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<h1> Bienvenido </h1><br>"); out.println("<h2> Su dirección IP es "+ ip+ "<br>"); out.println("Su número es "+aleatorio+"<br><br>"); out.println("El numero mayor generado es "+maxNumber); out.println("<br>Fue generado para "+maxIP); out.close();

Inicializacion variables para guardar La IP y el valor del máximo import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class NewServlet extends HttpServlet { int maxNumber = 0; String maxIP = ""; public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { int aleatorio = (int)(1 + Math.random()*100); String ip = request.getRemoteAddr(); if (aleatorio > maxNumber) { maxNumber = aleatorio; maxIP = ip; } response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<h1> Bienvenido </h1><br>"); out.println("<h2> Su dirección IP es "+ ip+ "<br>"); out.println("Su número es "+aleatorio+"<br><br>"); out.println("El numero mayor generado es "+maxNumber); out.println("<br>Fue generado para "+maxIP); out.close(); Inicializacion variables para guardar La IP y el valor del máximo

Generación número aleatorio import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class NewServlet extends HttpServlet { int maxNumber = 0; String maxIP = ""; public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { int aleatorio = (int)(1 + Math.random()*100); String ip = request.getRemoteAddr(); if (aleatorio > maxNumber) { maxNumber = aleatorio; maxIP = ip; } response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<h1> Bienvenido </h1><br>"); out.println("<h2> Su dirección IP es "+ ip+ "<br>"); out.println("Su número es "+aleatorio+"<br><br>"); out.println("El numero mayor generado es "+maxNumber); out.println("<br>Fue generado para "+maxIP); out.close(); Generación número aleatorio Obtencion ip del cliente

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class NewServlet extends HttpServlet { int maxNumber = 0; String maxIP = ""; public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { int aleatorio = (int)(1 + Math.random()*100); String ip = request.getRemoteAddr(); if (aleatorio > maxNumber) { maxNumber = aleatorio; maxIP = ip; } response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<h1> Bienvenido </h1><br>"); out.println("<h2> Su dirección IP es "+ ip+ "<br>"); out.println("Su número es "+aleatorio+"<br><br>"); out.println("El numero mayor generado es "+maxNumber); out.println("<br>Fue generado para "+maxIP); out.close(); Actualización de los datos del máximo generado

import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class NewServlet extends HttpServlet { int maxNumber = 0; String maxIP = ""; public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { int aleatorio = (int)(1 + Math.random()*100); String ip = request.getRemoteAddr(); if (aleatorio > maxNumber) { maxNumber = aleatorio; maxIP = ip; } response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<h1> Bienvenido </h1><br>"); out.println("<h2> Su dirección IP es "+ ip+ "<br>"); out.println("Su número es "+aleatorio+"<br><br>"); out.println("El numero mayor generado es "+maxNumber); out.println("<br>Fue generado para "+maxIP); out.close(); Enviar info al cliente