lunes, 30 de enero de 2012

Servlet y JSP – 1. Introducción


Empiezo con el primer artículo Java. En primer lugar decir que los ejemplos que vaya poniendo en estos artículos los he comprobado y funcionan correctamente. Yo he usado Netbeans 7.0 como entorno de trabajo (lo recomienda Oracle), aunque podeis usar cualquier otro, como Eclipse. Así pues, empezamos con los servlets:
El funcionamiento del servlet se puede resumir en esta figura:
El servlet se utiliza para recibir peticiones, operar con esas peticiones y redireccionar a un JSP. Un JSP es código HTML con código Java incrustado que se compila en estos servlet.
Por ejemplo, esto es el código necesario para hacer un conversor de divisas, donde el cliente rellena un formulario y lo envía al servlet, el cual hará el cálculo y mostrará el resultado:

Código jsp:
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h1>Ejercicio 2.1</h1>
        <h2>Conversor de divisas</h2>
        <form method="POST" action="Ejercicio2Servlet">
            Dolares
            <input type="text" id="txtDolares" name="txtDolares"/>
            <br>
            <input type="submit" value="Convertir a Euros" />
            <br>
            Euros
            <input type="text" id="txtEuros" name="txtEuros"/>
            <br>
            <input type="submit" value="Convertir a Dolares" />
        </form>
    </body>
</html>
Código servlet
package org;

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;

/**
 *
 * @author Tarde
 */
@WebServlet(name = "Ejercicio2Servlet", urlPatterns = {"/Ejercicio2Servlet"})
public class Ejercicio2Servlet extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();

        double dolares,euros;
        String dolaresQueEnvia, eurosQueEnvia, dolaresQueDevuelve,eurosQueDevuelve;

        try {
            out.println("<html>");
            out.println("<head>");
            out.println("</head>");
            out.println("<body>");

            dolaresQueEnvia=request.getParameter("txtDolares");
   eurosQueEnvia=request.getParameter("txtEuros");
            if(!dolaresQueEnvia.equals("")){
               dolares = Double.valueOf(dolaresQueEnvia).doubleValue();
               euros=dolares*0.71;
               eurosQueDevuelve=Double.toString(euros);
               out.println(dolaresQueEnvia + " dolares son " + eurosQueDevuelve + " euros.<br>");
            }
            if(!eurosQueEnvia.equals("")){
               euros = Double.valueOf(eurosQueEnvia).doubleValue();
               dolares=euros*1.73;
               dolaresQueDevuelve=Double.toString(dolares);
               out.println(eurosQueEnvia + " euros son " + dolaresQueDevuelve + " dolares.<br>");
            }
            out.println("</body>");
            out.println("</html>");

        } finally {
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
    /**
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
Lo que esta marcado en rojo indica la forma en que el servlet recibe los parámetros que le envió el JSP, es decir, los valores que el usuario introdujo en los campos de texto.

No hay comentarios:

Publicar un comentario