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