Issuu on Google+

Programación web con Java

Autor: Carlos Carreño

Sesión 3 1.Fundamentos de Java Servlets Los Servlets son programas java (*.class) , que se encuentran almacenados en el servidor (configurado para ejecutar Servlets) y que son invocados en forma remota desde un “browser”, se ejecutan y retornan una pagina web generada dinámicamente, al cliente remoto .

Para crear un servlet se va a utilizar el package javax.servlet que contiene todas las interfaces y clases que se necesitan.

1


Programación web con Java

Autor: Carlos Carreño

La figura anterior grafica que todos los programas del tipo Servlets que queramos crear deben implementar la interfase HttpServlet que a su vez implementa la interfase genérica Servlets. Los programas Servlets del tipo HttpServlet controlan el requerimiento y la respuesta a través de las interfaces. HttpServletRequest Permite leer los valores de las variables enviadas por los formularios. HttpServletResponse Se utiliza para enviar la pagina de respuesta al usuario remoto. Entre otras capacidades de los Servlets permiten realizar un seguimiento del estado de las peticiones utilizando cookies que almacenan variable y valores en la computadora del cliente.

2


Programación web con Java

Autor: Carlos Carreño

2.Ejemplo de Servlets public class SimpleServlet extends HttpServlet { /*** Manipula el método HTTP GET para construir una simple pagina web. */ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException { PrintWriter out; String title = "Simple Servlet"; //setea el tipo de contenido de la //respuesta. response.setContentType("text/html"); // escribe la data de la respuesta out = response.getWriter();

out.println("<HTML><HEAD><TITLE>"); out.println(title); out.println("</TITLE></HEAD><BODY>"); out.println("<H1>" + title + "</H1>"); out.println("<P>Esta es la salida del Simple Servlet."); out.println("</BODY></HTML>"); out.close(); } }

3


Programación web con Java

Autor: Carlos Carreño

3.Request y Response. Objeto HttpServletRequest. Un objeto permite acceder a los argumentos enviados por el cliente. Asi: § El metodo getParameter(“Parametro”) retorna el valor de un parámetro si un parámetro retorna mas de un valor, utiliza el metodo getParametersValues(“Parametro”) que retorna un arreglo de valores de un parámetro. § El metodo que provee los nombres de los parámetros es getParameterNames(). Objeto HttpServletResponse. Un objeto HttpServletResponse provee dos métodos para retornar la data al usuario •

El metodo getWriter() que retorna un objeto Writer

El metodo getOutputStream que retorna un ServletOutputStream

Usa getWriter para retornar data tipo texto al usuario, y getOutputStream para data binaria 4


Programación web con Java

Autor: Carlos Carreño

Cerrando el Writer o ServletOutputStream después de enviar la respuesta la usuario permite al servidor conocer cuando la respuesta esta completa. 4. Manipulado GET import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class BookDetail extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>" +"<head><title>Book Description</title></head>" +...); String bookId = request.getParameter("bookId"); if (bookId != null) { //imprime informacion del libro print... } out.println("</body></html>"); out.close(); } ... } 5


Programaci贸n web con Java

Autor: Carlos Carre帽o

5. Manipulando POST. public class ReceiptServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ... response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html>" + "<head><title> Receipt </title>" + ...); out.println("<h3>Thank you for purchasing"+ "your books from us" + request.getParameter("cardname") + ...); out.close(); } ... }

6. Proveyendo Descripci贸n del Servlet. public class BookStoreServlet extends HttpServlet { ... public String getServletInfo() { return "The BookStore servlet returns the " + "main web page for Duke's Bookstore."; } }

6


Programación web con Java

Autor: Carlos Carreño

7. Ciclo de vida de un Servlet.

8. Información de la sesión de usuario. En general se necesita implementar un mecanismo para mantener el estado de una serie de Request del mismo usuario remoto a traves de un periodo de tiempo. Para realizar el seguimiento de una sesion se sugiere § Capturar la sesion del usuario en un objeto de la clase HttpSession. § Almacenar o recuperar los datos desde el objeto HttpSession. § Invalidar la session (opcional).

7


Programaci贸n web con Java

Autor: Carlos Carre帽o

9. Seguimiento de la sesi贸n con HttpSession. import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class SessionServlet extends HttpServlet{ PrintWriter out=(PrintWriter) null; HttpSession session =(HttpSession)null; public void service(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException{ //es necesario que capture la session antes de escribir en res session=req.getSession(true); session.putValue(session.getId(),"Escorpion Rojo"); res.setContentType("text/html"); out=res.getWriter(); session.putValue(session.getId(),"the Matrix"); out.println("<html><head><title>Session User</title></head>" +"<body bgcolor=\"#CCFF99\">" +" <font size=2 color=Blue>" +"Administrador de Sesion <hr><br>" +" Session ID :"+session.getId() +" Valor: "+session.getValue(session.getId()) +"</font></body></html>" ); out.close();

} public void destroy(){ if(session != null ){ session.invalidate(); } } }

8


Programación web con Java

10.

Autor: Carlos Carreño

Usando Cookies.

Los cookies son un metodo de enviar alguna información al cliente y almacenarla para que el servidor pueda después recuperarla desde el cliente, los clientes retornan los cookies añadiendo los campos en el http request Header (Cabecera del requerimiento). Para enviar un Cookie: § Instancia un Cookie § Setea cualquier atributo. § Envia el cookie. Para recuperar infotrmacion del cookie § Lee todos los cookies desde el request del usuario. § Busca el cookie o todos los cookies con el mismo el nombre que te interesa usa las técnicas estandar de programación. § Trae los valores de los cookies que encuentras.

9


Programaci贸n web con Java

Autor: Carlos Carre帽o

Enviando un cookie import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class CookieServlet extends HttpServlet{ PrintWriter out=(PrintWriter) null; HttpSession session =(HttpSession)null; public void service(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException{ res.setContentType("text/html"); out=res.getWriter(); Cookie cookieUserID= new Cookie("userid","US1234"); out.println("<html><head><title>Usando Cookie</title></head>" +"<body bgcolor=blue>" +"Se Creo el cookie: " + cookieUserID.getName() +" Con Valor : " + cookieUserID.getValue() +"</body></html>"); res.addCookie(cookieUserID); out.close(); } public void destroy(){ } }

Leyendo el cookie. import javax.servlet.*; import javax.servlet.http.*; import java.io.*;

10


Programaci贸n web con Java

Autor: Carlos Carre帽o

public class GetCookieServlet extends HttpServlet{ PrintWriter out=(PrintWriter) null; HttpSession session =(HttpSession)null; public void service(HttpServletRequest req,HttpServletResponse res) throws ServletException, IOException{ res.setContentType("text/html"); out=res.getWriter(); String nomCookie="userid"; String valCookie="US1234"; out.println("<html><head><title>Get Cookies</title></head>" +"<body bgcolor=\"#CCFFCC\">"); out.println("Buscando Cookies"); Cookie[] cookies=req.getCookies(); for(int i=0 ; i<cookies.length; i++){ Cookie thiscookie = cookies[i]; out.println("<br> Cookie :"+thiscookie.getName() +" Valor : "+thiscookie.getValue() +"<br>"); if(thiscookie.getName().equals(nomCookie) && thiscookie.getValue().equals(valCookie)) { out.println("Cookie encontrado "+thiscookie.getValue()); // lo que sigue elimna el cookie //thiscookie.setMaxAge(0); } } out.println("</body></html>"); out.close(); } public void destroy(){ } }

11


LENGUAJE JAVA