## Manejar Peticiones GET y POST

Para manejar peticiones HTTP en un servlet, extendemos la clase HttpServlet y sobreescribimos los métodos del servlet que manejan las peticiones HTTP que queremos soportar. Esta página ilustra el manejo de peticiones GET y POST. Los métodos que manejan estas peticiones son doGet y doPost.

### Manejar Peticiones GET

Manejar peticiones GET implica sobreescribir el método doGet. El siguiente ejemplo muestra a BookDetailServlet haciendo esto. Los métodos explicados en Peticiones y Respuestas se muestran en negrita:

    public class BookDetailServlet extends HttpServlet {

        public void doGet (HttpServletRequest request,
                           HttpServletResponse response)
            throws ServletException, IOException
        {
            ...
    	// selecciona el tipo de contenido en la cabecera antes de acceder a Writer
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();

    	// Luego escribe la respuesta
            out.println("<html>" +
                        "<head><title>Book Description</title></head>" +
                        ...);

            //Obtiene el identificador del libro a mostrar
            String bookId = request.getParameter("bookId");
            if (bookId != null) {
                // Y la información sobre el libro y la imprime
                ...
            }
            out.println("</body></html>");
            out.close();
        }
        ...
    }

El servlet extiende la clase HttpServlet y sobreescribe el método doGet. Dentro del método doGet, el método getParameter obtiene los argumentos esperados por el servlet.

Para responder al cliente, el método doGet utiliza un Writer del objeto HttpServletResponse para devolver datos en formato texto al cliente. Antes de acceder al writer, el ejemplo selecciona la cabecera del tipo del contenido. Al final del método doGet, después de haber enviado la respuesta, el Writer se cierra.

### Manejar Peticiones POST

Manejar peticiones POST implica sobreescribir el método doPost. El siguiente ejemplo muestra a ReceiptServlet haciendo esto. De nuevo, los métodos explicados en Peticiones y Respuestas se muestran en negrita:

    public class ReceiptServlet extends HttpServlet {

        public void doPost(HttpServletRequest request,
                           HttpServletResponse response)
    	throws ServletException, IOException
        {
            ...
            // selecciona la cabecera de tipo de contenido antes de acceder a Writer
            response.setContentType("text/html");
            PrintWriter out = response.getWriter();

            // Luego escribe la respuesta
            out.println("<html>" +
                        "<head><title> Receipt </title>" +
                        ...);

            out.println("<h3>Thank you for purchasing your books from us " +
                        request.getParameter("cardname") +
                        ...);
            out.close();
        }
        ...
    }

El servlet extiende la clase HttpServlet y sobreescribe el método doPost. Dentro del método doPost, el método getParameter obtiene los argumentos esperados por el servlet.

Para responder al cliente, el método doPost utiliza un Writer del objeto HttpServletResponse para devolver datos en formato texto al cliente. Antes de acceder al writer, el ejemplo selecciona la cabecera del tipo de contenido. Al final del método doPost, después de haber enviado la respuesta, el Writer se cierra.

Ozito