Arquitectura MVC en Java con ejemplo de diseño de aplicación JSP

¿Qué es MVC?

MVC es una arquitectura que separa la lógica empresarial, la presentación y los datos. En MVC,

  • M significa modelo
  • V significa Ver
  • C significa controlador.

MVC es una forma sistemática de utilizar la aplicación donde el flujo comienza desde la capa de vista, donde la solicitud se genera y procesa en la capa de controlador y se envía a la capa de modelo para insertar datos y recibir el mensaje de éxito o fracaso. El diagrama de Arquitectura MVC se representa a continuación:

Arquitectura MVC
Diagrama de arquitectura MVC

Capa de modelo

  • Esta es la capa de datos que consta de la lógica empresarial del sistema.
  • Consta de todos los datos de la aplicación.
  • También representa el estado de la aplicación.
  • Consta de clases que tienen la conexión con el base de datos.
  • El controlador se conecta con el modelo, recupera los datos y los envía a la capa de vista.
  • El modelo también se conecta con la base de datos y almacena los datos en una base de datos que está conectada a él.

Ver capa

  • Esta es una capa de presentación.
  • Consta de HTML, JSP, etc.
  • Normalmente presenta la interfaz de usuario de la aplicación.
  • Se utiliza para mostrar los datos que se obtienen del controlador, que a su vez obtiene datos de las clases de capa del modelo.
  • Esta capa de vista muestra los datos de la interfaz de usuario de la aplicación.

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 necesaria para la solicitud.
  • Estas solicitudes se envían además a la capa del modelo para el procesamiento de datos y, una vez procesada la solicitud, se envía de regreso al controlador con la información requerida y la vista la muestra en consecuencia.

Ventajas de la arquitectura MVC

Las ventajas de MVC son:

  • Mantenimiento fácil
  • Fácil de extender
  • Fácil de probar
  • El control de navegación está centralizado.

Ejemplo de diseño de aplicaciones JSP con arquitectura MVC

En este ejemplo, mostraremos cómo utilizar la arquitectura MVC en JSP.

  • Estamos tomando el ejemplo de un formulario con dos variables “email”y “contraseña”, que es nuestra capa de vista.
  • Una vez que el usuario ingresa email, y contraseña y hace clic en enviar, luego la acción se pasa en mvc_servlet donde email y contraseña se pasan.
  • Este mvc_servlet es la capa de controlador. Aquí, en mvc_servlet, la solicitud se envía al objeto bean que actúa como capa de modelo.
  • El email y los valores de contraseña se establecen en el bean y se almacenan para fines posteriores.
  • Del bean, el valor se recupera y se muestra en la capa de vista.

Mvc_ejemplo.jsp

<%@ 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:

Línea de código 10-15: Aquí estamos tomando un formulario que tiene dos campos como parámetro “email” y “contraseña” y esta solicitud debe reenviarse a un controlador Mvc_servlet.java, que se pasa DE ACTUAR!. El método por el que se pasa es el método POST.

mvc_servlet.java

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

Línea de código 14:mvc_servlet está ampliando HttpServlet.

Línea de código 26: Como el método utilizado es POST, la solicitud entra en un método doPost del servlet que procesa las solicitudes y las guarda en el objeto bean como testobj.

Línea de código 34: Usando el objeto de solicitud, configuramos el atributo como gurubean al que se le asigna el valor de testobj.

Línea de código 35: Aquí estamos utilizando el objeto despachador de solicitudes para pasar el mensaje de éxito a mvc_success.jsp

TestBean.java

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:

Línea de código 7-17: Contiene los captadores y definidores de e.mail y contraseña que son miembros de la clase Test Bean

Línea de código 19-20: Define los miembros email y contraseña de tipo cadena en la clase de bean.

Mvc_éxito.jsp

<%@ 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:

Línea de código 12: Obtenemos el atributo utilizando el objeto de solicitud que se ha configurado en el método doPost del servlet.

Línea de código 13: Estamos imprimiendo el mensaje de bienvenida y email ID de los cuales se han guardado en el objeto bean.

Salida:

Cuando ejecutas el código anterior, obtienes el siguientewing salida:

Cuando haces clic en mvc_example.jsp obtienes el formulario con email y contraseña con el botón enviar.

Una vez que ingresa email y contraseña al formulario y luego haga clic en enviar

Diseño de aplicaciones JSP

Después de hacer clic en enviar, el resultado se muestra a continuación

Diseño de aplicaciones JSP

Salida:

Cuando ingresas email y contraseña en la pantalla y haga clic en enviar luego, el details se guardan en TestBean y desde TestBean se recuperan en la siguiente pantalla para recibir el mensaje de éxito.

Resumen

En este artículo, hemos aprendido sobre MVC, es decir, la arquitectura Model View Controller.

JSP desempeña el papel de presentación de los datos y responsable del tratamiento. Es una interfaz entre el modelo y la vista, mientras que el modelo se conecta tanto al controlador como a la base de datos. La lógica empresarial principal está presente en la capa del modelo.