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> € </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); } }