Anda di halaman 1dari 0

Curso: "Java EE y Frameworks" 2013

Servlet: Filtros, Ciclo de Vida y


Control de Eventos
Mdulo 1 / parte 3

Todos los logos y marcas utilizados en este
documento, estn registrados y pertenecen a
sus respectivos dueos.
AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 1

Curso: "Java EE y Frameworks" 2013

Objetivo
El objetivo de esta prctica es descubrir las funciones avanzadas de los Servlets utilizando NetBeans IDE.
En especial la implementacin de filtros en los servlets y ciclos de vida mediante eventos controlados
por mtodos especializados segn los contextos que se quieran controlar, de aplicacin, de sesin o de
peticin HTTP.
En el primer ejercicio vamos a construir, y ejecutar una sencilla aplicacin implementada por dos
servlets que interactan mediante el envo de datos de formularios.
En el Segundo ejercicio, vamos a agregar un filtro o dos a nuestra aplicacin Web y observaremos como
el mtodo doFilter() de la clase de filtro es llamado por el contenedor de despliegue.
En nuestra ltima prctica, vamos a construir un ciclo de vida al los sevlets para el control de eventos de
la aplicacin y observaremos cmo estos son llamado segn su contexto.



AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 2

Curso: "Java EE y Frameworks" 2013

Ejercicio 1: Construir y ejecutar una aplicacin Hola Mundo Servlet:
1. Iniciamos NetBeans IDE.
2. Crear el proyecto hola-mundo.

Seleccionar File->New Project (Ctrl+Maysculas+N).


AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 3

Curso: "Java EE y Frameworks" 2013

Aparece una Nueva Venta New Proyect
Seleccionar Projecto->Choose Project -> Seleccionamos Java Web-> Web Application.


Aparece una Nueva Venta New Web Application
En el Nombre (Proyect Name) escribimos hola-mundo-servlet
Clic en Siguiente (Next)
El Servidor lo dejamos tal cual en Glassfish v3
Es importante seleccionar la versin de Java EE 5 (Al final del curso veremos Servlet 3.0 de
Java EE6).
Y clic en Finalizar (Finish)
AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 4

Curso: "Java EE y Frameworks" 2013



AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 5

Curso: "Java EE y Frameworks" 2013

Lugo en el panel de la izquierda de NetBeans, en la pestaa Projects aparece nuestro
proyecto recin creado hola-mundo-servlet


Lugo cerramos el archivo creado automticamente index.jsp con la cruz (x)
Sombre el nombre del proyecto hola-mundo-servlet botn derecho del mouse.
Botn derecho: Clic en New -> Other
AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 6

Curso: "Java EE y Frameworks" 2013


Aparece una nueva ventana New File Seleccionamos categora Web -> Servlet (en tipo de
archivo)
AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 7

Curso: "Java EE y Frameworks" 2013


Una nueva ventana aparece New Sevlet
Ingresamos el nombre de la Clase Servlet SaludarServlet
En Package colocamos saludar
Next>
AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 8

Curso: "Java EE y Frameworks" 2013



En la siguiente ventana nos permite configurar el archivo web.xml que es el Servlet Deployment
o archivo de configuracin del archivo de despliegue.
Finalmente hacemos un clic en Finish
AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 9

Curso: "Java EE y Frameworks" 2013



Aparece nuestra clase Java Servlet SaludarServlet con una estructura de contenido por
defecto.
Dentro del mtodo processRequest cambiamos el contenido por el siguiente, reemplazndolo:

protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Hola Mundo SaludarServlet</title>");
out.println("</head>");
out.println("<body>");

out.println("<h2>Hola, mi nombre es Zsamer. Cul es tu nombre?</h2>"
+ "<form action=\"ResponderServlet\" method=\"post\">"
+ "<input type=\"text\" name=\"nombre\" size=\"25\">" + "<p></p>"
+ "<input type=\"submit\" value=\"Submit\">"
+ "<input type=\"reset\" value=\"Reset\">" + "</form>");
out.println("</body>");
out.println("</html>");
} finally {
AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 10

Curso: "Java EE y Frameworks" 2013

out.close();
}
}

Luego de la misma forma en que creamos el servlet SaludarServlet, ahora creamos al servlet
encargado de procesar el formulario y obteniendo el valor del nombre ingresado en el
formulario.
Sombre el nombre del proyecto hola-mundo-servlet botn derecho del mouse.
Botn derecho: Clic en New -> Sevlet
Ingresamos el nombre de la Clase Servlet ResponderServlet
En Package colocamos saludar, el mismo del anterior.
Finish



AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 11

Curso: "Java EE y Frameworks" 2013

Dentro del mtodo processRequest cambiamos el contenido por el siguiente, reemplazndolo:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {

// obtenemos el parmetro de la peticin
String nombre = request.getParameter("nombre");

if ((nombre != null) && (nombre.length() > 0)) {
out.println("<h2>Hola, " + nombre + "!</h2>");
}
} finally {
out.close();
}
}

Finalmente seleccionamos SaludarServlet, clic botn derecho del mouse
Seleccionar Run File


AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 12

Curso: "Java EE y Frameworks" 2013


Ejercisio 2: Creando y configurando un Servlet Filters (Filtros)
En este paso, vamos a agregar un filtro al ejercicio anterior usando NetBeans.
1. Click-Derecho en el proyecto hola-mundo-servlet y seleccionar New->Other.
2. Escoger Web bajo Categoras (Categories) y seleccionar Filter bajo File Types.
3. ClicNext. (ver Figura-Abajo)


AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 13

Curso: "Java EE y Frameworks" 2013

Bajo Name (Location pane), para el nombre de Clase (Class Name), escriban MiPropioFilter y for
el Package, tipe mipackage. (ver Figura abajo)


AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 14

Curso: "Java EE y Frameworks" 2013

Clicen Finish para aceptar los valores por defecto de Filter Name y Filter Mappings de la
configuracin del archivo de despliegue. Esto modificar automticamente el archivo de
despliegue web.xml. (ver Figura abajo)



AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 15

Curso: "Java EE y Frameworks" 2013

En la clase Filter MiPropioFilter, desde el nmero de lnea 87 hasta 125, buscar el mtodo
doFilter() como se muestra el Cdigo ms abajo.

/**
*
* @param request The servlet request we are processing
* @param response The servlet response we are creating
* @param chain The filter chain we are processing
*
* @exception IOException if an input/output error occurs
* @exception ServletException if a servlet error occurs
*/
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {

if (debug) log("MiPropioFilter:doFilter()");

doBeforeProcessing(request, response);

Throwable problem = null;
try {
chain.doFilter(request, response);
}
catch(Throwable t) {
// If an exception is thrown somewhere down the filter chain,
// we still want to execute our after processing, and then
// rethrow the problem after that.
problem = t;
t.printStackTrace();
}

doAfterProcessing(request, response);

// If there was a problem, we want to rethrow it if it is
// a known type, otherwise log it.
if (problem != null) {
if (problem instanceof ServletException) throw (ServletException)problem;
if (problem instanceof IOException) throw (IOException)problem;
sendProcessingError(problem, response);
}
}


AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 16

Curso: "Java EE y Frameworks" 2013



AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 17

Curso: "Java EE y Frameworks" 2013

Des-comentar el fragmento de cdigo tal como se muestra en el texto de abajo (lnea 44-59). Se
destacan en negrita.
private void doBeforeProcessing(ServletRequest request, ServletResponse response)
throws IOException, ServletException {
if (debug) log("MiPropioFilter:DoBeforeProcessing");

// Write code here to process the request and/or response before
// the rest of the filter chain is invoked.

// For example, a logging filter might log items on the request object,
// such as the parameters.
// ------------- descomentar el siguiente fragmento de cdigo -----------------
for (Enumeration en = request.getParameterNames(); en.hasMoreElements(); ) {
String name = (String)en.nextElement();
String values[] = request.getParameterValues(name);
int n = values.length;
StringBuffer buf = new StringBuffer();
buf.append(name);
buf.append("=");
for(int i=0; i < n; i++) {
buf.append(values[i]);
if (i < n-1)
buf.append(",");
}
log(buf.toString());
}
// -------------- final del descomentado fragmento de codigo ------------------

}

private void doAfterProcessing(ServletRequest request, ServletResponse response)
throws IOException, ServletException {
if (debug) log("MiPropioFilter:DoAfterProcessing");

// Write code here to process the request and/or response after
// the rest of the filter chain is invoked.

// For example, a logging filter might log the attributes on the
// request object after the request has been processed.
// ------------- descomentar el siguiente fragmento de cdigo -----------------
for (Enumeration en = request.getAttributeNames(); en.hasMoreElements(); ) {
String name = (String)en.nextElement();
Object value = request.getAttribute(name);
log("attribute: " + name + "=" + value.toString());
}
// -------------- final del descomentado fragmento de codigo ------------------
// For example, a filter might append something to the response.
/*
PrintWriter respOut = new PrintWriter(response.getWriter());
respOut.println("<P><B>This has been appended by an intrusive filter.</B>");
*/
}

AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 18

Curso: "Java EE y Frameworks" 2013



AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 19

Curso: "Java EE y Frameworks" 2013

Finalmente, Clic- Boton Derecho -> Fix Imports
Guardamos
Con esto importa las clases faltantes en el contexto.

Clic-Derecho en el proyecto hola-mundo-servlet y seleccionar Run.
Se abre el Navegador con la ruta base y cambiamos la url a: http://localhost:8080/hola-mundo-
servlet/SaludarServlet -> Enter.
Tipe su nombre en el campo (input form) y Clicel botn Submit. Esto enviar una peticin
(HTTP request)hacia la aplicacin, la cual pasar a travs de filtro.

AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 20

Curso: "Java EE y Frameworks" 2013

Clicen el Tab de GlassFish Domain (Log) y observe que nombre=zsamer (o el que haya tipiado)
son mostrado en el fichero de log de la plataforma de despliegue, en ste caso, servidor de
aplicaciones GlassFish v3. (ver Figura de abajo)




AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 21

Curso: "Java EE y Frameworks" 2013

Una Mirada al archivo de despliegue web.xml

1. Doble-Clicweb.xml bajo hola-mundo-servlet ->Configuration Files para abrir ste en el editor.
2. Clicen la pestaa Filters tab y observe las configuraciones del filtro. (ver Figura de abajo)


AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 22

Curso: "Java EE y Frameworks" 2013

Clicpestaa XML par ver en formato de xml.
Observe el filtro de configuracin mediante los elementos <filter> y <filter-mapping> en el
archivo web.xml. (ver Figura de abajo)

AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 23

Curso: "Java EE y Frameworks" 2013

Agregar otro filtro en la aplicacin hola-mundo-servlet

Aadir otro filtro a la aplicacin hola-mundo-servlet siguiendo los pasos mencionados en el
punto anterior. Nombre del filtro como MiPropioFiltro2.
Genere y ejecute la aplicacin y observe que los mensajes de registro del filtro se muestran en el
archivo de log de GlassFish de ambos MiPropioFiltro1 y MiPropioFiltro2.



AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 24

Curso: "Java EE y Frameworks" 2013

Ejercicio 3: Eventos del ciclo de vida de un Servlet
Se pueden monitorizar y reaccionar a eventos en el ciclo de vida de un servlet definiendo objetos
listener cuyos mtodos sern invocados cuando un evento life-cycle se suceda. Para utilizar estos
objetos listener se debe definir y especificar la clase listener.

Agregar un Evento al ciclo de vida de la aplicacin hola-mundo-servlet-> ClicBotn derecho y
seleccionar New->Other.
Seleccionar Web bajo Categorias y seleccionar Web Application Listener bajo File Types.
ClicNext. (Ver figura de abajo)


AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 25

Curso: "Java EE y Frameworks" 2013

Par el nombre de clase (campo Class Name), escriba MiPropioEventListener. Para el campo
Package, tipe mipackage.
Bajo la seccin Interface to implement o Interface a implementar, seleccione lo siguiente.
(ver Figura-abajo):
o ContextListener
o HTTP Session Listener
o Request Listener (J2EE 1.4)

Modificar el Event Listener MiPropioEventListener.java, tal como se muestra en el cdigo de
abajo. El fragmento de cdigo que necesita ser agregado est en azul y negrita. Bsicamente
estamos agregando un sistema de log o bitcora de eventos para cada mtodo de manejador
de eventos.

AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 26

Curso: "Java EE y Frameworks" 2013

El cdigo que viene por defecto en los mtodos de manejos eventos los comentamos.
package mipackage;

import javax.servlet.ServletContext;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;

/**
* Web application lifecycle listener.
* @author Andrs Guzmn F
*/
public class MiPropioEventListener implements ServletContextListener, HttpSessionListener, ServletRequestListener {

ServletContext servletContext;

public void contextInitialized(ServletContextEvent sce) {
//throw new UnsupportedOperationException("Not supported yet.");

servletContext = sce.getServletContext();
servletContext.log("contextInitialized() method is invoked");
}

public void contextDestroyed(ServletContextEvent sce) {
//throw new UnsupportedOperationException("Not supported yet.");
servletContext.log("contextDestroyed() method is invoked");
}

public void sessionCreated(HttpSessionEvent se) {
//throw new UnsupportedOperationException("Not supported yet.");
servletContext.log("sessionCreated() method is invoked");
}

public void sessionDestroyed(HttpSessionEvent se) {
//throw new UnsupportedOperationException("Not supported yet.");
servletContext.log("sessionDestroyed() method is invoked");
}

public void requestDestroyed(ServletRequestEvent sre) {
//throw new UnsupportedOperationException("Not supported yet.");
servletContext.log("requestDestroyed() method is invoked");
}

public void requestInitialized(ServletRequestEvent sre) {
//throw new UnsupportedOperationException("Not supported yet.");
servletContext.log("requestInitialized() method is invoked");
}
}


AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 27

Curso: "Java EE y Frameworks" 2013

Click-Derecho en proyecto hola-mundo-servlet y seleccionar Run.
Clicen la pestaa GlassFish Log y observe los mensajes desplegados en el archivo de log de
Glassfish. (ver Figura de abajo) Ntese que el controlador de evento contextIntialized() se
invoca por primera vez , ste es llamado una vez desplegada la aplicacin.
Observe tambin que ha ocurrido la primera peticin/respuesta HTTP (request/response) entre
el navegador y la aplicacin, y el de cmo son llamados los controladores de eventos
requestInitialized() y requestDestroyed() . (ver Figura de abajo)


En el navegador, ejecute la direccin URL del Servlet Saludar:
http://localhost:8080/hola-mundo-servlet/SaludarServlet
Escriba su nombre en el formulario y clic en botn Submit. Esto ejecutar, la segunda
peticin HTTP request/response, entre en navegador y la aplicacin.
Clic en la pestaa de GlassFish Log y observe los mensajes del log. (ver figura de abajo)

AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 28

Curso: "Java EE y Frameworks" 2013

Si desea ver los mensajes de logs desde cero, haga clic derecho en el rea de
visualizacin y seleccione Clear.





AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 29

Curso: "Java EE y Frameworks" 2013

Modifique SaludarServlet.java bajo el proyecto actual
hola-mundo-servlet ->Source Package->saludar, tal como se muestra en el cdigo de abajo. La
nueva pieza de cdigo que se agregar estar destacada en negrita y de color azul. Esto
gatillar la creacin de un objeto de sesin HttpSession (si no ha sido creada anteriormente), a
su vez producir un llamado al controlador de evento sessionCreated().
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();

// Get a session
HttpSession session = request.getSession();

try {
out.println("<html>");
out.println("<head>");
out.println("<title>Hola Mundo SaludarServlet</title>");
out.println("</head>");
out.println("<body>");

out.println("<h2>Hola, mi nombre es Zsamer. Cul es tu nombre?</h2>"
+ "<form action=\"ResponderServlet\" method=\"post\">"
+ "<input type=\"text\" name=\"nombre\" size=\"25\">" + "<p></p>"
+ "<input type=\"submit\" value=\"Submit\">"
+ "<input type=\"reset\" value=\"Reset\">" + "</form>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}


AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 30

Curso: "Java EE y Frameworks" 2013

Clic Botn Derecho -> Fix Imports.
De similar forma Modificamos el Servlet de respuesta ResponderServlet.java bajo hola-mundo-
servlet ->Source Package->saludar, tal como se muestra en el cdigo de abajo. El nuevo cdigo
agregado estar destacada en negrita y de color azul. Esto gatillar el cierre de la sesin del
objeto de sesin HttpSession, a su vez producir un llamado al controlador de evento
sessionDestroyed().
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {

// obtenemos el parmetro de la peticin
String nombre = request.getParameter("nombre");

if ((nombre != null) && (nombre.length() > 0)) {
out.println("<h2>Hola, " + nombre + "!</h2>");
}
// Close the HttpSession
request.getSession().invalidate();
} finally {
out.close();
}
}



AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 31

Curso: "Java EE y Frameworks" 2013

Sobre el hola-mundo-servlet Clic botn derecho y seleccionar Run.
En el navegador, ejecute la direccin URL del Servlet Saludar: http://localhost:8080/hola-
mundo-servlet/SaludarServlet
En output, Clic en la pestaa GlassFish Log y observe sol mensajes mostrados en el los de la
plataforma de despliegue, en este caso, GlassFish. Ntese que el controlador de eventos
sessionCreated() fue invocado. (ver Figura de abajo)


Escriba su nombre en el formulario y clic en botn Submit. Esto ejecutar, la segunda peticin
HTTP request/response, entre en navegador y la aplicacin.
Clic en la pestaa de GlassFish Log y observe los mensajes del log. Ntese que el controlador de
eventos sessionDestroyed () fue invocado. (ver Figura de abajo)
AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 32

Curso: "Java EE y Frameworks" 2013




AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 33

Curso: "Java EE y Frameworks" 2013

Undeploy la aplicacin Des Publicar

Se emplea al comando undeploy para detener y eliminar la aplicacin del servidor, en otras
palabras se refiere a eliminar su publicacin.
o Seleccionar la pestaa Services, (Panel izquierdo de netbenas justo al lado de la pestaa
Projects)
o Expander Servers->GlassFish v3 Domain->Applications-> Applications y clic boton
derecho en hola-mundo-servlet.
o Seleccionar Undeploy.



AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 34

Curso: "Java EE y Frameworks" 2013

Clic en la pestaa de GlassFish Log y observe los mensajes del log. Ntese que el controlador de
eventos contextDestroyed () fue invocado. (ver Figura de abajo)

AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 35

Curso: "Java EE y Frameworks" 2013

Ejercicio 4: Abrir, modificar y ejecutar una aplicacin de ejemplo de
Apache.

1. Abrir el proyecto NetBeans ServletExamples (ste viene como parte del laboratorio de sta
semana como archivo de descarga ServletExamples.rar).


AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 36

Curso: "Java EE y Frameworks" 2013

2. Seleccionar File->Open Project (Ctrl+Shift+O).
Descargar proyecto ServletExamples.rar de la semana.
o Windows: Descomprimir el archivo ServletExamples.rar bajo el directorio
C:\curso\javaee\servlet, antes tener creado el directorio.
o Solaris/Linux: Descomprimir el archivo ServletExamples.rar bajo el directorio
$HOM/curso/javaee/servlet, antes tener creado el directorio.
Seleccionar File->Open Project (Ctrl+Shift+O). La ventana de dilogo Open Project
aparece.
o Buscar proyecto descomprimido en el paso anterior en
\curso\javaee\servlet
Seleccionar ServletExamples
Clic en Open Project. El Nuevo Proyecto es agregado bajo la pestaa Projects

Observe que el nodo del proyecto ServletExamples aparece en ventana de la pestaa
Projects.

3. Construir y ejecutar el proyecto ServletExamples:
o Clic-derecho en proyecto ServletExamples y seleccionar Run.
o El navegador se abre, mostrando una pantalla.
4. Clic en Execute para ejecutar el Sevlet "Hello World". (Ver Figura abajo)
5. Clic en Source para ver el correspondiente cdigo fuente. (Ver Figura abajo)



AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 37

Curso: "Java EE y Frameworks" 2013


6. Tambien ejecutar y ver el cdigo fuente de Request Info, Request Headers y Request
Parameters.
7. Modificar parte de la aplicacin Hello World
Modificar HelloWorldExample.java bajo ServletExamples->Source Packages-><default
package> como se muestra en el codigo de abajo. El fragment de cdigo que sera
agregado estar marcado en negrita y de color azul.

AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 38

Curso: "Java EE y Frameworks" 2013


public class HelloWorldExample extends HttpServlet {


public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
ResourceBundle rb =
ResourceBundle.getBundle("LocalStrings",request.getLocale());
response.setContentType("text/html");
PrintWriter out = response.getWriter();

out.println("<html>");
out.println("<head>");

String title = rb.getString("helloworld.title");

out.println("<title>" + title + "</title>");
out.println("</head>");
out.println("<body bgcolor=\"white\">");

// note that all links are created to be relative. this
// ensures that we can move the web application that this
// servlet belongs to to a different place in the url
// tree and not have any harmful side effects.

// XXX
// making these absolute till we work out the
// addition of a PathInfo issue

out.println("<a href=\"../helloworld.html\">");
out.println("<img src=\"../images/code.gif\" height=24 " +
"width=24 align=right border=0 alt=\"view code\"></a>");
out.println("<a href=\"../index.html\">");
out.println("<img src=\"../images/return.gif\" height=24 " +
"width=24 align=right border=0 alt=\"return\"></a>");
out.println("<h1>" + title + "</h1>");
out.println("mi propio mensaje de saludo: Hola Mundo, que tal!");
out.println("</body>");
out.println("</html>");
}
}
Clic-derecho en el proyecto ServletExamples y seleccionar Run
Right click ServletExamples project node and select Run
Clic Execute para ejecutar los cambios en el servlet "Hello World".
Observe en el navegador los cambios:

AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 39

Curso: "Java EE y Frameworks" 2013





AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 40

Curso: "Java EE y Frameworks" 2013

Resumen

En este ejercicio, hemos creado y agregado dos Clases Servlet, SaludarServlet y RespuestaServlet, para
implementar una aplicacin Web que permite interactuar un usuario mediante un formulario y la
aplicacin que se encarga de procesar la informacin ingresada por el usuario.
Luego agregamos un Servlet filter, el cual se encarga de mostrar los parmetros de la peticin en la
consola y log del servidor de aplicaciones o plataforma de despliegue.
Finalmente, hemos agregado unos cuantos ciclos de vida a los servlets implementado controladores de
eventos en una clase EventListener de Java EE, en diferentes mbitos, en el de contexto de la aplicacin,
en las sesiones y en las peticiones o request.
Enva tus consultas a los foros!
Aqu es cuando debes sacarte todas las dudas
haciendo consultas en los foros
correspondientes
AUTORES: andresguzf@gmail.com WEB: http://formacion-java.bolsadeideas.cl | | Servlet Workshop 41

Anda mungkin juga menyukai