MVC en JSP (Architectura)

โšก Resumen inteligente

MVC en JSP separa las preocupaciones de la aplicaciรณn en capas de Modelo, Vista y Controlador, donde JSP renderiza la Vista, un Servlet actรบa como Controlador y JavaLos beans encapsulan el modelo para crear aplicaciones web limpias, comprobables y fรกciles de mantener.

  • ๐Ÿงฑ Separaciรณn de intereses: El modelo contiene los datos y la lรณgica de negocio, la vista renderiza la interfaz de usuario y el controlador enruta las solicitudes entre ellos.
  • ๐Ÿ“ Rol de JSP: Las pรกginas JSP renderizan el marcado dinรกmico para la capa de vista, mientras que un servlet se encarga del procesamiento de las solicitudes en la capa del controlador.
  • ๐Ÿ”€ Flujo de solicitud: El navegador envรญa un formulario, el servlet valida las entradas y rellena un campo. JavaEl Bean, a continuaciรณn, transfiere el control a una vista JSP para obtener la respuesta.
  • โœ… La facilidad de mantenimiento es clave: La arquitectura MVC en JSP facilita el mantenimiento, la ampliaciรณn, las pruebas unitarias y la navegaciรณn centralizada de las aplicaciones web.
  • ๐Ÿงช Ejemplo de trabajo: Un formulario de inicio de sesiรณn envรญa los datos a Mvc_servlet, que almacena el correo electrรณnico y la contraseรฑa en TestBean, y luego los reenvรญa a mvc_success.jsp.
  • ๐Ÿค– Modernizaciรณn de la IA: Los asistentes de IA ahora ayudan a refactorizar el cรณdigo JSP MVC heredado a Spring MVC, generando controladores, DTO y pruebas bajo demanda.

MVC en JSP (Architectura)

ยฟQuรฉ es MVC?

MVC significa Modelo-Vista-Controlador. Es un patrรณn de diseรฑo de software que separa una aplicaciรณn en tres capas interconectadas: lรณgica de negocio, presentaciรณn y datos. En MVC:

  • M significa Modelo
  • V significa Vista
  • C significa Controlador

MVC es una metodologรญa sistemรกtica para construir aplicaciones donde el flujo comienza en la capa de Vista. El usuario realiza la solicitud, que se procesa en la capa de Controlador y se envรญa a la capa de Modelo para insertar u obtener datos. El Modelo devuelve una respuesta de รฉxito o fracaso que la Vista muestra al usuario. El diagrama de la arquitectura MVC se representa a continuaciรณn:

MVC Architectura
MVC ArchiDiagrama de tecnologรญa

ยฟPor quรฉ usar MVC? ArchiยฟTectura en JSP?

Antes de saltarping Para entender cรณmo funciona MVC en JSP, es รบtil comprender por quรฉ los desarrolladores adoptan este patrรณn. Mezclar lรณgica de negocio, llamadas a la base de datos y HTML dentro de una sola pรกgina JSP produce rรกpidamente cรณdigo espagueti difรญcil de mantener. MVC soluciona esto al asignar a cada aspecto su propia capa:

  • Code Resulta mรกs fรกcil de leer porque cada archivo tiene una รบnica responsabilidad.
  • Los equipos pueden trabajar en la Vista, el Controlador y el Modelo en paralelo sin conflictos.
  • Las pruebas unitarias se dirigen directamente al modelo, sin modificar la representaciรณn JSP.
  • Intercambio ping Crear una vista JSP para una respuesta JSON o un motor de plantillas diferente es sencillo.

Cรณmo funciona MVC en JSP

En una aplicaciรณn MVC basada en JSP, cada capa se asigna a una funciรณn especรญfica. Java tecnologรญa. Los archivos JSP renderizan la Vista, un Servlet actรบa como Controlador y JavaLos beans encapsulan el modelo. Las secciones siguientes explican las responsabilidades de cada capa.

Capa de modelo

  • Esta es la capa de datos que contiene la lรณgica de negocio del sistema.
  • Consta de todos los datos de la aplicaciรณn.
  • Tambiรฉn representa el estado de la aplicaciรณn.
  • Estรก construido a partir de JavaBeans o POJOs que se conectan a la base de datos de CRISPR Medicine News.
  • El controlador se comunica con el modelo para obtener los datos y los reenvรญa a la capa de vista.
  • El modelo se conecta a la base de datos y almacena los datos en ella.

Ver capa

  • Esta es la capa de presentaciรณn de la aplicaciรณn.
  • Consta de HTML, JSP, CSS y JavaGuiรณn.
  • Normalmente, muestra la interfaz de usuario de la aplicaciรณn.
  • Muestra los datos que se obtienen del controlador, que a su vez obtiene datos de las clases de la capa del modelo.
  • La capa de vista muestra los datos en la interfaz de usuario de la aplicaciรณn sin contener lรณgica de negocio.

Capa controladora

  • Actรบa como una interfaz entre Vista y Modelo.
  • Intercepta todas las solicitudes que provienen de la capa de vista.
  • Recibe las solicitudes de la capa de vista, las procesa y realiza la validaciรณn de la solicitud.
  • La solicitud se envรญa a la capa del modelo para su procesamiento. Una vez procesada, el modelo devuelve el resultado al controlador con la informaciรณn requerida, que la vista muestra posteriormente.

Ventajas de MVC Architectura

Las ventajas de MVC son:

  • Mantenimiento fรกcil
  • Fรกcil de extender
  • Fรกcil de probar
  • El control de navegaciรณn estรก centralizado.
  • El acoplamiento flexible entre capas hace que la refactorizaciรณn sea mรกs segura.
  • Es posible el desarrollo en paralelo por parte de varios miembros del equipo.

Ejemplo de diseรฑo de aplicaciones JSP con MVC Architectura

En este ejemplo, vamos a mostrar cรณmo utilizar la arquitectura MVC en una aplicaciรณn JSP.

  • Tomaremos como ejemplo un formulario con dos variables, "correo electrรณnico" y "contraseรฑa", que representan nuestra capa de vista.
  • Una vez que el usuario ingresa su correo electrรณnico y contraseรฑa y hace clic en Enviar, la acciรณn se pasa a Mvc_servlet, donde se le pasan el correo electrรณnico y la contraseรฑa.
  • Mvc_servlet es la capa del controlador. Aquรญ, en Mvc_servlet, la solicitud se envรญa al objeto bean, que actรบa como la capa del modelo.
  • Los valores de correo electrรณnico y contraseรฑa se establecen en el bean y se almacenan para su uso posterior.
  • Desde el bean, se obtiene el valor y se muestra en la capa de vista.

Mvc_example.jsp (Vista)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>MVC Guru Example</title>
</head>
<body>
<form action="Mvc_servlet" method="POST">
Email: <input type="text" name="email">
<br />
Password: <input type="text" name="password" />
<input type="submit" value="Submit" />
</form>
</body>
</html>

Explicaciรณn del cรณdigo:

Ver capa:

Code Lรญnea 10-15: Aquรญ estamos utilizando un formulario con dos campos como parรกmetros, "correo electrรณnico" y "contraseรฑa". Esta solicitud debe enviarse a un controlador, Mvc_servlet.java, que se especifica en el atributo action. El mรฉtodo HTTP utilizado es POST.

Mvc_servlet.java (Controlador)

package demotest;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Mvc_servlet
 */
public class Mvc_servlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public Mvc_servlet() {
        super();
        // TODO Auto-generated constructor stub
    }


	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		String email=request.getParameter("email");
        String password=request.getParameter("password");

        TestBean testobj = new TestBean();
        testobj.setEmail(email);
        testobj.setPassword(password);
        request.setAttribute("gurubean",testobj);
        RequestDispatcher rd=request.getRequestDispatcher("mvc_success.jsp");
        rd.forward(request, response);
	}

}

Explicaciรณn del cรณdigo:

Capa de controlador:

Code Lรญnea 14: Mvc_servlet extiende HttpServlet.

Code Lรญnea 26: Como el mรฉtodo utilizado es POST, la solicitud entra en el mรฉtodo doPost del Servlet, que procesa la solicitud y la guarda en el objeto bean como testobj.

Code Lรญnea 34: Utilizando el objeto de solicitud, estamos configurando el atributo โ€œgurubeanโ€ al que se le asigna el valor de testobj.

Code Lรญnea 35: Aquรญ estamos utilizando el objeto RequestDispatcher para reenviar el mensaje de รฉxito a mvc_success.jsp.

TestBean.java (Modelo)

package demotest;

import java.io.Serializable;

public class TestBean implements Serializable{

	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	private String email="null";
	private String password="null";


}

Explicaciรณn del cรณdigo:

Capa de modelo:

Code Lรญnea 7-17: Contiene los mรฉtodos getter y setter de email y password, que son miembros de la clase TestBean.

Code Lรญnea 19-20: Define el correo electrรณnico y la contraseรฑa de los miembros, de tipo String, en la clase bean.

Mvc_success.jsp (Vista de resultados)

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
    <%@page import="demotest.TestBean"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Guru Success</title>
</head>
<body>
<%
TestBean testguru=(TestBean)request.getAttribute("gurubean");
out.print("Welcome, "+testguru.getEmail());
%>
</body>
</html>

Explicaciรณn del cรณdigo:

Code Lรญnea 12: Estamos recuperando el atributo utilizando el objeto de solicitud que se estableciรณ en el mรฉtodo doPost del Servlet.

Code Lรญnea 13: Estamos imprimiendo el mensaje de bienvenida y la direcciรณn de correo electrรณnico que se ha guardado en el objeto bean.

Resultado

Cuando ejecuta el cรณdigo anterior, obtiene el siguiente resultado:

Al abrir mvc_example.jsp, aparece el formulario con los campos de correo electrรณnico y contraseรฑa, y el botรณn de enviar.

Una vez que ingrese su correo electrรณnico y contraseรฑa en el formulario y haga clic en Enviar:

Diseรฑo de aplicaciones JSP

Tras hacer clic en Enviar, el resultado se muestra a continuaciรณn:

Diseรฑo de aplicaciones JSP

Al introducir el correo electrรณnico y la contraseรฑa en la pantalla y hacer clic en Enviar, los datos se guardan en TestBean. Desde TestBean, se recuperan en la siguiente pantalla para mostrar el mensaje de รฉxito. JSP desempeรฑa el papel de presentar los datos y proporcionar la Vista, mientras que el Servlet actรบa como el Controlador y el JavaBean actรบa como el Modelo. La lรณgica de negocio principal se encuentra en la capa del Modelo.

Preguntas Frecuentes

MVC en JSP es un patrรณn de diseรฑo que divide una aplicaciรณn web en tres capas: Modelo (datos y lรณgica de negocio), Vista (pรกginas JSP que muestran la interfaz de usuario) y Controlador (un Servlet que procesa las solicitudes y enruta las respuestas).

JSP pertenece principalmente a la capa de Vista porque renderiza HTML dinรกmico para el usuario. En el patrรณn JSP Modelo 2, un Servlet maneja el rol de Controlador y JavaLos frijoles manejan el rol de Modelo, keeping JSP sin lรณgica de negocio.

El modelo 1 coloca la lรณgica de negocio, el acceso a los datos y la presentaciรณn directamente dentro de las pรกginas JSP. El modelo 2 sigue MVC: un Servlet actรบa como controlador, JavaLos beans conforman el modelo, y los archivos JSP generan la vista. El modelo 2 es el enfoque recomendado.

MVC mejora la mantenibilidad, la capacidad de prueba y la productividad del equipo. Cada capa evoluciona de forma independiente, la lรณgica de negocio se mantiene fuera de los archivos JSP, la navegaciรณn se centraliza en el Servlet y las pruebas unitarias cubren el Modelo sin necesidad de iniciar un contenedor web.

El navegador envรญa un formulario a un Servlet. El Servlet valida las entradas, crea o actualiza un JavaEl programa toma el objeto Bean y lo almacena como un atributo de la solicitud. Luego, transfiere el control a una pรกgina JSP, que lee el objeto Bean y genera la respuesta.

Los asistentes de codificaciรณn de IA analizan archivos JSP y Servlets heredados, por ejemplotract lรณgica de negocio integrada en servicios limpios, genera controladores y DTO de Spring MVC y produce JUnit pruebas. Esto acelera la migraciรณn del modelo JSP 2 a los marcos de trabajo modernos con menos reescritura manual.

Las herramientas de IA generan controladores Spring MVC y mapas de solicitudes.pingSugieren anotaciones de validaciรณn, escriben plantillas Thymeleaf y crean pruebas de integraciรณn. Tambiรฉn detectan problemas de seguridad, como la falta de protecciรณn CSRF o el manejo inseguro de entradas en los mรฉtodos del controlador.

Resumir este post con: