Ejercicio completo desde 0 (VI)

Una vez nos funcione la lista de préstamos vamos a añadir el botón de nuevo préstamo.

Este es un circuito en dos partes:
1) MOstramos una página para introducir los datos del préstamo
2) Recuperamos los datos y los introducimos en la base de datos.

Todo lo vamos hacer desde el mismo servlet a través de un parámetro accion como en el ejemplo de Categorias.

Si nos pasan la accion ‘nuevo’ mostramos la página para introducir los datos
Si nos pasan la acción insertar recuperamos los parámetros, creamos un objeto préstamo, lo añadimos a la base de datos y redirigimos a la lista.

package com.prestamos.controller;

import java.io.IOException;
import java.sql.Date;

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;

import com.prestamos.dao.Prestamos;
import com.prestamos.dao.PrestamosDAO;

/**
 * Servlet implementation class PrestamosController
 */
@WebServlet("/prestamos")
public class PrestamosController extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private PrestamosDAO modelo;

	/**
	 * @see HttpServlet#HttpServlet()
	 */
	public PrestamosController() {
		super();
		modelo = new PrestamosDAO();
	}

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
	 *      response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		String accion = request.getParameter("accion");
		System.out.println(accion);
		if (accion==null) {
			accion="";
		}
		if (accion.equals("nuevo")) {
			// Pondré el código para mostrar la página para introducir los nuevos datos
			RequestDispatcher dispatcher = request.getRequestDispatcher("nuevo.jsp");
			dispatcher.forward(request, response);
		} else if (accion.equals("insertar")) {
			// Aquí recuperaré los datos y los añadiré a la base de datos
			System.out.println("Hola, preparado para insertar");
			
			// Recupero los datos que me pasan
			String nombre=request.getParameter("nombre");
			String titulo=request.getParameter("titulo");
			Date fecha=Date.valueOf(request.getParameter("fecha"));
			
			// Tengo que darlos de alta en la base de datos ¿Cómo?
			// Con el modelo
			Prestamos nuevo=new Prestamos(0,nombre,titulo,fecha);
			modelo.addPrestamo(nuevo);
			request.setAttribute("prestamos", modelo.getPrestamos());
			RequestDispatcher dispatcher = request.getRequestDispatcher("prestamos.jsp");
			dispatcher.forward(request, response);
			
		} else if (accion.equals("borrar")) {
			// Recupero el id y elimino el registro
			System.out.println("Aquí hay que borrar");
			
			int id=Integer.parseInt(request.getParameter("id"));
			System.out.println(id);
			
		} else if (accion.equals("editar")) {
			// Recuperaré el registro que tenga el id que me pasan y
			// Mandaré los datos a una página para que el usuario los modifique
			System.out.println("recuperar los datos (id) y formulario editar");
		} else if (accion.equals("modificar")) {
			// Recupero los datos que me pasan y modifico el registro en la base de datos
			System.out.println("recuperar los datos (id,nombre,titulo,fecha) y modificar en la base de datos");
		} else {
			request.setAttribute("prestamos", modelo.getPrestamos());
			RequestDispatcher dispatcher = request.getRequestDispatcher("prestamos.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="UTF-8">
<title>Mantenimiento prestamos</title>
<link rel="stylesheet"
	href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">

<!-- jQuery library -->
<script
	src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<!-- Popper JS -->
<script
	src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

<!-- Latest compiled JavaScript -->
<script
	src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
<div class="container">
	<h1>Lista de préstamos</h1>
	<a href="./prestamos?accion=nuevo" class="btn btn-primary">Nuevo préstamo</a>
	<table class="table table-bordered">
		<thead>
			<tr>
				<th>ID</th>
				<th>Nombre</th>
				<th>Titulo</th>
				<th>Fecha</th>
				<th>Acciones</th>
			</tr>
		</thead>
		<tbody>
			<c:forEach var="prestamo" items="${prestamos}">
				<tr>
					<td><c:out value="${prestamo.idprestamos}" /></td>
					<td><c:out value="${prestamo.nombre}" /></td>
					<td><c:out value="${prestamo.titulo}" /></td>
					<td><c:out value="${prestamo.fecha}" /></td>
					<td><a href="./prestamos?accion=editar&id=${prestamo.idprestamos}">Editar</a> | 
					<a href="./prestamos?accion=borrar&id=${prestamo.idprestamos}">Borrar</a> </td>
				</tr>
			</c:forEach>
		</tbody>

	</table>
	</div>
</body>
</html>
<%@ 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="UTF-8">
<title>Mantenimiento prestamos</title>
<link rel="stylesheet"
	href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">

<!-- jQuery library -->
<script
	src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

<!-- Popper JS -->
<script
	src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>

<!-- Latest compiled JavaScript -->
<script
	src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
	<div class="container">
		<h1>Nuevo préstamo</h1>
		<form action="./prestamos?accion=insertar" method="post">
			<div class="form-group">
				<label for="nombre">Nombre:</label> <input type="text"
					class="form-control" placeholder="Nombre" name="nombre">
			</div>
			<div class="form-group">
				<label for="titulo">Título:</label> <input type="text"
					class="form-control" placeholder="Titulo" name="titulo">
			</div>
			<div class="form-group">
				<label for="fecha">Fecha:</label> <input type="text"
					class="form-control" placeholder="Fecha" name="fecha">
			</div>
			<input type="submit"/>
		</form>
	</div>
</body>
</html>