PDF de programación - Java EE - Servlets

Imágen de pdf Java EE - Servlets

Java EE - Servletsgráfica de visualizaciones

Publicado el 1 de Marzo del 2019
739 visualizaciones desde el 1 de Marzo del 2019
195,8 KB
16 paginas
Creado hace 10a (07/05/2013)
Java EE – Servlets

Aplicaciones Web/Sistemas Web

Juan Pavón Mestras
Dep. Ingeniería del Software e Inteligencia Artificial
Facultad de Informática
Universidad Complutense Madrid

Material bajo licencia Creative Commons

Java EE Servlets y JSPs

 Servlet

 Clase Java que implementa un modelo de programación petición-

respuesta
• Puede usarse para procesar cualquier tipo de petición

• Clase GenericServlet

• Definido en el paquete javax.servlet
• Hay subclases específicas para HTTP: paquete javax.servlet.http

• Clase HttpServlet

 Tiene un ciclo de vida concreto controlado por el contenedor en el que

se despliega

 Cada servlet se ejecuta como un thread independiente

 JSP (JavaServer Page)

 Fichero con código (X)HTML que incluye scripts codificados en Java
 Se compila y se convierte en un servlet
 Utiliza etiquetas especializadas (Custom Tags) que amplían la sintaxis

de HTML

Juan Pavón - UCM 2012-13

Servlets

2

Ciclo de vida de un servlet

 Lo controla el contenedor en el que se ha desplegado
 Al llegar una petición correspondiente a un servlet, el contenedor

1. Comprueba si existe una instancia del servlet

• Si no existe

• Carga la clase del servlet
• Crea una instancia del servlet
• Inicializa la instancia del servlet llamando al método init()

2. Se invoca al método de servicio, pasándole objetos de tipo request

y response
• El servlet usa estos objetos para inspeccionar la petición y generar la

respuesta

3. Si hay que eliminar el servlet, el contenedor llama al método destroy()

del servlet

Juan Pavón - UCM 2012-13

Servlets

Servlet

 Cualquier clase que implemente la interfaz

javax.servlet.Servlet
 Métodos para gestionar el ciclo de vida del servlet

 También suele ser necesaria la interfaz

javax.servlet.ServletConfig
 Tiene los parámetros de arranque e inicialización para el servlet que le

pasa el contenedor

 Normalmente los servlets se implementan a partir de una de las

dos subclases siguientes que implementan ambas interfaces:
 javax.servlet.GenericServlet

• Clase que define un servlet independiente del protocolo

 javax.servlet.http.HttpServlet

• Para servlets en aplicaciones web, que procesan las peticiones con el

protocolo HTTP

Juan Pavón - UCM 2012-13

Servlets

3

4

Métodos de la interfaz javax.servlet.Servlet

 init(ServletConfig config)

 Al arrancar un servlet, solo se ejecuta una vez
 Inicializa atributos y recursos del servlet

 getServletConfig()

 Devuelve el objeto ServletConfig que contiene parámetros de arranque e

inicialización para el servlet que le pasa el contenedor

 service(ServletRequest request, ServletResponse response)

 Cada vez que se invoca un servicio al servlet
 Dependiendo del tipo de servicio, invoca el método correspondiente al

servicio solicitado

 Normalmente no se reescribe este método, solo los correspondientes a

los servicios específicos

 Pueden invocarse concurrentemente los métodos de servicio, por ello

deben ser thread safe

 destroy()

 Al eliminar un servlet, solo se ejecuta una vez
 Tiene que ser thread-safe porque puede haber otros threads en

ejecución

Juan Pavón - UCM 2012-13

Servlets

Métodos de la clase javax.servlet.HTTPServlet

 El método service trata las siguientes peticiones:
 DELETE, GET, HEAD, OPTIONS, POST, PUT, y TRACE
 Invoca el método correspondiente doXXX

 Los más usados:

 doGet(HttpServletRequest request, HttpServletResponse response)
 doPost(HttpServletRequest request, HttpServletResponse response)

 Estos dos métodos son los que normalmente se tienen que

reescribir
 El objeto request tiene información enviada en la petición
 El objeto response permite crear la respuesta

• setContentType() – permite indicar el tipo MIME de lo que se va a

generar (por ejemplo, "text/html")

• getWriter() – devuelve el PrintWriter donde escribir lo que se genere

 Pueden producir dos excepciones:

• IOException, porque usan operaciones de E/S
• ServletException, cualquier otra excepción que se quiera

Juan Pavón - UCM 2012-13

Servlets

5

6

Creación de servlets con eclipse

 Crear un proyecto Web dinámica

 File  New  Project  Web  Dynamic Web Project

• Nombre, p.ej. PrimerosServlets
• Target runtime: Apache Tomcat v7.0

 En src, crear un paquete

• Nombre, p.ej. es.ucm.prueba

 Dentro del paquete, crear un servlet con el asistente de creación

 File  New  Other y seleccionar servlet en Web

• Nombre, p.ej. Saludo

 En el método doGet() incluir el código que aparece a continuación

• Habrá que importar la clase java.io.PrintWriter

Juan Pavón - UCM 2012-13

Servlets

7

Ejemplo de servlet elemental

package es.ucm.prueba;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/Saludo")
public class Saludo extends HttpServlet {
private static final long serialVersionUID = 1L;

URL relativo a la webapp

Método para tratar la
recepción de un HTTP GET

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException {

PrintWriter out = response.getWriter();
out.println("¡Bienvenido al mundo de los servlets!");

Salida generada para
enviar al navegador

}

}

Juan Pavón - UCM 2012-13

Generación de texto
Servlets

8

Creación de servlets con eclipse

 Ejecutar

 Run As...Run On Server

• La primera vez aparece una ventana para indicar en qué servidor se

quiere ejecutar
• Elegir Tomcat v7.0 Server at localhost
• En Add and remove, si no está en la lista de Configured, seleccionar el

proyecto en Available y pulsar el botón Add>

 Solicitar restart server

• Permite que el servidor arranque con la nueva configuración

 Aparece una pestaña en el área de trabajo con el resultado de ejecutar

el servlet en un navegador
• Si el URL que aparece es http://localhost:8080/PrimerosServlets/

saldrá el error 404 (recurso no disponible)

• Para que se vea la página, incluir en la URL el nombre del servlet

• http://localhost:8080/PrimerosServlets/Saludo

Juan Pavón - UCM 2012-13

Servlets

9

Primeros servlets con eclipse y tomcat

Juan Pavón - UCM 2012-13

Servlets

10

Ejercicios

 Añadir un fichero index.html en el proyecto en WebContent

 New  HTML file
 Ahora sí que se podrá ver la página

http://localhost:8080/PrimerosServlets/

 Crea otro servlet SaludoHTML, que genere código HTML correcto

 Para indicar el tipo de documento

• response.setContentType("text/html");
 Generar el texto HTML correspondiente

 En el fichero index.html añade enlaces para poder invocar a los

dos servlets

 Añadir un atributo int contador que permite al servlet llevar una

cuenta de las veces que se invoca
 Se define como un atributo normal en la clase
 Se puede visualizar en la página

Juan Pavón - UCM 2012-13

Servlets

11

Interacción con formularios

http://localhost:8080/PrimerosServlets/hola.html

hola.html

<p>Por favor, indique su nombre:</p>
<form method="get"    

action="/PrimerosServlets/ProcesaForm">

<p>Nombre: 
<input type="text" name="cliente" />
<input type="submit" value="Enviar"/></p>
</form>

ProcesaForm.java

...
out.println("<!DOCTYPE html>\n" +
//...
"<h1>Hola
"+request.getParameter("cliente")+"</h1>\n" +
//...

Juan Pavón - UCM 2012-13

Servlets

12

Formularios

 La página HTML con los formularios va en la carpeta WebContent

 En el ejemplo, el fichero hola.html irá en WebContent del proyecto

PrimerosServlets
• El URL para acceder será

http://localhost:8080/PrimerosServlets/hola.html

 El fuente del servlet se creará en src, dentro del paquete

correspondiente
 El servlet (compilado) irá en WEB_INF/classes

Juan Pavón - UCM 2012-13

Servlets

13

Ejemplo de proceso de formulario

package es.ucm.prueba;

import java.io.*;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;

@WebServlet("/ProcesaForm")
public class ProcesaForm extends HttpServlet {

private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request, HttpServletResponse response) 

throws ServletException, IOException {

response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println ("<!DOCTYPE html>\n" +

"<html>\n" +

"<head><title>Formulario de saludo</title></head>\n" +
"<body>\n" +
"<h1>Hola "+request.getParameter("cliente")+"</h1>\n" +
"</body></html>");

}

}
Juan Pavón - UCM 2012-13

Servlets

14

Parámetros de la petición

 Los parámetros que llegan con GET y POST los tiene el objeto

request y se pueden acceder con varios métodos:
 public Enumeration getParameterNames()

• Devuelve un Enumeration con los nombres de los parámetros
• Si no los hubiera, el Enumeration estará vacío

 public String getParameter(String name)

• Valor del parámetro como un String
• null si no existiera ese parámetro

 public String[] getParameterValues(name)

• Si un parámetro puede tener varios valores mejor usar este método

 Un objeto Enumeration se usa como un Iterador:

Enumeration e = request.getParameterNames();
while (e.hasMoreElements()) {

out.println(e.nextElement());

}

Juan Pavón - UCM 2012-13

Servlets

15

Parámetros de la petición

 Para pasar los valores de los parámetros de String al valor del

tipo correspondiente
 int n = new Integer(parametro).intValue();
 double d = new Double(parametro).doubleValue();
 byte b = new Byte(parametro).byteValue();

• Estas operaciones se tienen que hacer en un try para poder capturar

la excepción NumberFormatException

 boolean p = new Boolean(param).booleanValue();

Juan Pavón - UCM 2012-13

Servlets

16

Parámetros de la petición

 Hay que comprobar siempre que los parámetros recibidos son

correctos
 Si falt
  • Links de descarga
http://lwp-l.com/pdf15389

Comentarios de: Java EE - Servlets (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad