Ejercicio JSTL

Vamos a crear un servlet que nos muestre datos de una factura (lo podemos llamar Factura).

Se pasan a la página los siguientes datos:

nombre: Nombre del cliente: ‘Supermercados Pérez’
fecha: Fecha de hoy
productos: Una lista con los siguientes productos: ‘pera’,’higo’,’patata’
precio: Una lista con los siguientes precios: 10,30,5

Esto lo envía todo a una página factura.jsp que nos mostrará una factura lo más bonita posible en la que se muestren los datos. En el ejemplo sería:

Factura a Supermercados Pérez
Fecha: 22/4/2021

Producto Precio
pera 10
higo 30
patata 5
total: 45
iva: 9,45

Ejemplo con POJO

package ejercicioJstl;

 

import java.io.IOException;

import java.time.LocalDate;

 

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

 

/**

* Servlet implementation class Factura

*/

@WebServlet("/factura")

public class Factura extends HttpServlet {

           private static final long serialVersionUID = 1L;

      

    /**

     * @see HttpServlet#HttpServlet()

     */

    public Factura() {

        super();

        // TODO Auto-generated constructor stub

    }

 

           /**

           * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

           */

           protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

                       Pojo_factura Perez = new Pojo_factura("Supermercados Perez",LocalDate.now());

                      

                       Perez.agregar("pera",10);

                       Perez.agregar("higo",30);

                       Perez.agregar("patata",5);

                      

                       request.setAttribute("perez", Perez);

                       RequestDispatcher dispatcher = request.getRequestDispatcher("factura.jsp");

        dispatcher.forward(request, response);

           }

 

           /**

           * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

           */

           protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

                       // TODO Auto-generated method stub

                       doGet(request, response);

           }

 

}
<%@ page language="java" contentType="text/html; charset=utf-8"

           pageEncoding="utf-8"%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="ISO-8859-1">

<title>Insert title here</title>

<link rel="stylesheet"

           href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css"

           integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm"

           crossorigin="anonymous">

</head>

 

<body>

           <c:forEach var="producto" items="${perez.productos}">

                       <c:set value="${res=res+producto.value}" var="sumaProductos" />

           </c:forEach>

 

 

           <c:set value="${sumaProductos*.21 }" var="iva" />

 

           <div class="container">

                       <div class="row">

                                  <div class="col-md-6">

                                             <img alt="" src="">

                                             <h2>

                                                         <c:out value="${perez.nombre}" />

                                             </h2>

                                  </div>

                                  <div class="col-md-6 text-right">

                                             <h2>FACTURA</h2>

                                             <h3>Factura #001</h3>

                                             <p>

                                                         <c:out value="${perez.fecha}" />

                                             </p>

                                  </div>

 

 

                       </div>

 

                       <div class="row justify-content-center">

                                  <div class="col-md-10 ">

                                             <div class="border-bottom border-dark">

                                                         <h5>Listado productos</h5>

                                             </div>

                                             <div class="mb-2">

                                                         <c:forEach var="producto" items="${perez.productos}">

                                                                    <c:out value="${producto.key}" />

                                                                    <c:out value="${producto.value}" />

                                                                    <br>

                                                         </c:forEach>

                                             </div>

                                             <div>

                                                         <p>

                                                                    Total:

                                                                    <c:out value="${sumaProductos}"></c:out>

                                                                    €

                                                         </p>

                                                         <p>

                                                                    IVA:

                                                                    <c:out value="${iva}"></c:out>

                                                                    &#8364

                                                         </p>

                                             </div>

                                  </div>

                       </div>

 

 

           </div>

</body>

 

</html>
package ejercicioJstl;

import java.time.LocalDate;

import java.util.*;

public class Pojo_factura {

private String nombre;

private LocalDate fecha;

private Map<String, Integer> productos;

 

 

public Pojo_factura(String nombre, LocalDate fecha) {

           super();

           this.nombre = nombre;

           this.fecha = fecha;

           productos =  new HashMap<String, Integer>();

          

}

 

 

public String getNombre() {

           return nombre;

}

 

 

public void setNombre(String nombre) {

           this.nombre = nombre;

}

 

 

public LocalDate getFecha() {

           return fecha;

}

 

 

public void setFecha(LocalDate fecha) {

           this.fecha = fecha;

}

 

 

public Map<String, Integer> getProductos() {

           return productos;

}

 

 

public void setProductos(Map<String, Integer> productos) {

           this.productos = productos;

}

 

public void agregar(String nombre, int precio) {

           productos.put(nombre,precio);

}

}

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos