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.

ยฟ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:

ยฟ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:
Tras hacer clic en Enviar, el resultado se muestra a continuaciรณn:
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.


