1. Información general
En este artículo rápido, crearemos una pequeña aplicación web que implementa el patrón de diseño Model View Controller (MVC), utilizando servlets y JSP básicos.
Exploraremos un poco sobre cómo funciona MVC y sus características clave antes de pasar a la implementación.
2. Introducción a MVC
Model-View-Controller (MVC) es un patrón utilizado en la ingeniería de software para separar la lógica de la aplicación de la interfaz de usuario. Como su nombre lo indica, el patrón MVC tiene tres capas.
El modelo define la capa empresarial de la aplicación, el controlador gestiona el flujo de la aplicación y la vista define la capa de presentación de la aplicación.
Aunque el patrón MVC no es específico de aplicaciones web, encaja muy bien en este tipo de aplicaciones. En un contexto Java, el modelo consta de clases Java simples, el controlador consta de servlets y la vista consta de páginas JSP.
Estas son algunas de las características clave del patrón:
- Separa la capa de presentación de la capa empresarial.
- El Controlador realiza la acción de invocar el Modelo y enviar datos a Ver
- El modelo ni siquiera es consciente de que lo utiliza alguna aplicación web o una aplicación de escritorio.
Echemos un vistazo a cada capa.
2.1. La capa de modelo
Ésta es la capa de datos que contiene la lógica empresarial del sistema y también representa el estado de la aplicación.
Es independiente de la capa de presentación, el controlador obtiene los datos de la capa Modelo y los envía a la capa Vista.
2.2. La capa del controlador
La capa de controlador actúa como una interfaz entre Vista y Modelo. Recibe solicitudes de la capa Ver y las procesa, incluidas las validaciones necesarias.
Las solicitudes se envían luego a la capa Modelo para el procesamiento de datos y, una vez que se procesan, los datos se envían de vuelta al Controlador y luego se muestran en la Vista.
2.3. La capa de vista
Esta capa representa el resultado de la aplicación, generalmente alguna forma de interfaz de usuario. La capa de presentación se utiliza para mostrar los datos del modelo obtenidos por el controlador.
3. MVC con servlets y JSP
Para implementar una aplicación web basada en el patrón de diseño MVC, crearemos las clases Student y StudentService , que actuarán como nuestra capa de modelo.
La clase S tudentServlet actuará como un controlador y, para la capa de presentación, crearemos la página student-record.jsp .
Ahora, escribamos estas capas una por una y comencemos con la clase de estudiante :
public class Student { private int id; private String firstName; private String lastName; // constructors, getters and setters goes here }
Escribamos ahora nuestro StudentService que procesará nuestra lógica empresarial:
public class StudentService { public Optional getStudent(int id) { switch (id) { case 1: return Optional.of(new Student(1, "John", "Doe")); case 2: return Optional.of(new Student(2, "Jane", "Goodall")); case 3: return Optional.of(new Student(3, "Max", "Born")); default: return Optional.empty(); } } }
Ahora creemos nuestra clase de controlador StudentServlet :
@WebServlet( name = "StudentServlet", urlPatterns = "/student-record") public class StudentServlet extends HttpServlet { private StudentService studentService = new StudentService(); private void processRequest( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String studentID = request.getParameter("id"); if (studentID != null) { int id = Integer.parseInt(studentID); studentService.getStudent(id) .ifPresent(s -> request.setAttribute("studentRecord", s)); } RequestDispatcher dispatcher = request.getRequestDispatcher( "/WEB-INF/jsp/student-record.jsp"); dispatcher.forward(request, response); } @Override protected void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } @Override protected void doPost( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { processRequest(request, response); } }
Este servlet es el controlador de nuestra aplicación web.
Primero, lee un ID de parámetro de la solicitud. Si se envía la identificación , se obtiene un objeto de estudiante de la capa empresarial.
Una vez que recupera los datos necesarios del modelo, coloca estos datos en la solicitud utilizando el método setAttribute () .
Finalmente, el controlador reenvía los objetos de solicitud y respuesta a una JSP, la vista de la aplicación.
A continuación, escribamos nuestra capa de presentación student-record.jsp :
Student Record ID: First Name: Last Name:
Y, por supuesto, la JSP es la vista de la aplicación; recibe toda la información que necesita del controlador, no necesita interactuar directamente con la capa empresarial.
4. Conclusión
En este tutorial, hemos aprendido sobre la arquitectura MVC, es decir, Model View Controller, y nos centramos en cómo implementar un ejemplo simple.
Como de costumbre, el código presentado aquí se puede encontrar en GitHub.