Código - The Servlet Technology Model

HttpServletRequest
package manning.cap_04;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import javax.servlet.ServletException;
import java.io.IOException;

import java.io.PrintWriter;

import java.util.Enumeration;

public class HeadersParametersServlet extends HttpServlet {

 protected void service (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
  PrintWriter out = res.getWriter();
  String title = "HeadersParametersServlet";
  
  out.println("<html>");
  out.println("<head><title>"+title+"</title></head>");
  out.println("<body>");
  out.println("<h1>"+title+"</h1>");
  
  out.println("<h2>HEADERS</h2>");
  Enumeration headers = req.getHeaderNames();
  while (headers.hasMoreElements()) {
   String header = (String) headers.nextElement();
   String value = req.getHeader(header);
   out.println("<br>    <b>"+header+"</b>: "+value);
  }
  
  out.println("<h2>PARAMETERS</h2>");
  Enumeration parameters = req.getParameterNames();
  while (parameters.hasMoreElements()) {
   String parameter = (String) parameters.nextElement();
   String value = req.getParameter(parameter);
   out.println("<br>    <b>"+parameter+"</b>: "+value);
  }
  
  out.println("</body>");
  out.println("</html>");
 }
} 

El código anterior es un ejemplo el cuál muestra como iterar a través de los encabezados y parámetros de una petición. Es decir,se utilizan los métodos:
  • HttpServletRequest.getHeaderNames()
  • HttpServletRequest.getParameterNames()
Ambos métodos devuelve un objeto Enumeration el cuál contiene todos los nombres de los encabezados y parámetros en la petición.

HttpServletResponse
package manning.cap_04;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import javax.servlet.ServletException;
import java.io.IOException;

import java.util.Date;
import java.util.Enumeration;
import java.io.PrintWriter;

public class UsingHttpServletResponse extends HttpServlet {
 public void doGet (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { // Puede ser protected o public
 
  if ("yes".equals(req.getParameter("redirect")))
   res.sendRedirect("GetImageServlet");
  else if ("post".equals(req.getParameter("redirect")))
   doPost(req, res);
   
  res.setHeader("HeaderDePrueba", "valorDelHeader");
  res.setIntHeader("IntHeader", 20438);
  res.setDateHeader("Last-Modified", 1000000);
  res.addHeader("HeaderDePrueba", "OtroValorDelHeader");
  
  PrintWriter out = res.getWriter();
  
  out.println("<h2>HEADERS</h2>");
  Enumeration headers = req.getHeaderNames();
  while (headers.hasMoreElements()) {
   String header = (String) headers.nextElement();
   String value = req.getHeader(header);
   out.println("<br>    <b>"+header+"</b>: "+value);
  }  
 }
 
 protected void doPost (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
  res.sendError(500, "Error en el servlet creado por Matías Emiliano Alvarez Durán!!!");
 }
}

Este otro ejemplo muestra la utilización del objeto HttpServletResponse. Se utilizan los métodos:
  • HttpServletResponse.sendRedirect ()
  • HttpServletResponse.setHeader ()
  • HttpServletResponse.setIntHeader ()
  • HttpServletResponse.setDateHeader ()
  • HttpServletResponse.addHeader () 
  • HttpServletResponse.sendError ()
En la última parte del método doGet(), se itera sobre los headers de la petición para visualizar los valores seteados anteriormente. Es decir, este servlet debe ser invocado dos veces. En la primera invocación se setearan los headers: "HeaderDePrueba", "IntHeader", "Last-Modified" y "HeaderDePrueba", y se visualizarán los headers por defecto. En la segunda, se visualizarán los headers por defecto y los headers seteados por el servlet.
En caso de que se realice una petición por el método POST, se devolverá al cliente un error 500 con un mensaje personalizado.
package manning.cap_04;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import javax.servlet.ServletException;
import java.io.IOException;

import java.io.File;
import java.io.FileInputStream;
import java.io.OutputStream;

public class GetImageServlet extends HttpServlet {
 protected void service (HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {
  res.setContentType("image/jpeg");
  
  File f = new File("../webapps/scwcd/WEB-INF/classes/manning/cap_04/image.jpg"); // Directorio por defecto: /bin del tomcat
  byte[] bytearray = new byte[(int) f.length()];
  FileInputStream fis = new FileInputStream(f);
  fis.read(bytearray);
  
  OutputStream os = res.getOutputStream();
  os.write(bytearray);
  os.flush();
 }
}
Por último, el servlet GetImageServlet, es un ejemplo de utilización del método HttpServletResponse.getOutputStream(). Dicho método retorna un objeto OutputStream, el cuál es utilizado para escribir un arreglo de bytes en el flujo de salida.
En este caso, el código escribe los bytes de una imagen en el OutputStream. Una vez finalizada la escritura, se envía la información al cliente a través del método OutputStream.flush().

0 comentarios :: Código - The Servlet Technology Model

Publicar un comentario en la entrada