MVC in JSP (Architecnologia)

Che cos'è MVC?

MVC è un'architettura che separa la logica aziendale, la presentazione e i dati. In MVC,

  • M sta per Modello
  • V sta per Vista
  • C sta per controllore.

MVC è un modo sistematico di utilizzare l'applicazione in cui il flusso inizia dal livello di visualizzazione, dove la richiesta viene sollevata ed elaborata nel livello del controller e inviata al livello del modello per inserire i dati e recuperare il messaggio di successo o fallimento. Il MVC Archiil diagramma della struttura è rappresentato di seguito:

MVC Architectura
MVC Archidiagramma della struttura

Livello modello

  • Questo è il livello dati che costituisce la logica aziendale del sistema.
  • È costituito da tutti i dati dell'applicazione
  • Rappresenta anche lo stato dell'applicazione.
  • È costituito da classi che hanno la connessione a banca dati.
  • Il controller si connette al modello, recupera i dati e li invia al livello di visualizzazione.
  • Il modello si connette anche al database e memorizza i dati in un database ad esso collegato.

Visualizza livello

  • Questo è un livello di presentazione.
  • È costituito da HTML, JSP, ecc.
  • Normalmente presenta l'interfaccia utente dell'applicazione.
  • Viene utilizzato per visualizzare i dati recuperati dal controller che a sua volta recupera i dati dalle classi del livello del modello.
  • Questo livello di visualizzazione mostra i dati sull'interfaccia utente dell'applicazione.

Livello di controllo

  • Funziona come un'interfaccia tra Vista e Modello.
  • Intercetta tutte le richieste che provengono dal livello di visualizzazione.
  • Riceve le richieste dal livello di visualizzazione, le elabora ed esegue la convalida necessaria per la richiesta.
  • Questa richiesta viene ulteriormente inviata al livello del modello per l'elaborazione dei dati e, una volta elaborata, la richiesta viene rinviata al responsabile del trattamento con le informazioni richieste e visualizzate di conseguenza dalla vista.

Vantaggi di MVC Architectura

I vantaggi di MVC sono:

  • Facilità di manutenzione
  • Facile da estendere
  • Facile da testare
  • Il controllo della navigazione è centralizzato

Esempio di progettazione di applicazioni JSP con MVC Architectura

In questo esempio mostreremo come utilizzare l'architettura MVC in JSP.

  • Prendiamo come esempio un modulo con due variabili "email" e "password", che rappresenta il nostro livello di visualizzazione.
  • Una volta che l'utente inserisce l'email e la password e clicca su Invia, l'azione viene passata in mvc_servlet, dove vengono passati l'email e la password.
  • Questo mvc_servlet è il livello del controller. Qui in mvc_servlet la richiesta viene inviata all'oggetto bean che funge da livello del modello.
  • I valori email e password vengono impostati nel bean e memorizzati per ulteriori scopi.
  • Dal bean, il valore viene recuperato e mostrato nel livello di visualizzazione.

Mvc_esempio.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>

Spiegazione del codice:

Visualizza livello:

Riga di codice 10-15: Qui stiamo prendendo un modulo che ha due campi come parametro "email" e "password" e questa richiesta deve essere inoltrata a un controller Mvc_servlet.java, che viene passato in azione. Il metodo attraverso cui viene passato è il metodo 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); 
	}

}

Spiegazione del codice:

Livello di controllo

Riga di codice 14:mvc_servlet sta estendendo HttpServlet.

Riga di codice 26: Poiché il metodo utilizzato è POST, la richiesta entra in un metodo doPost del servlet che elabora le richieste e le salva nell'oggetto bean come testobj.

Riga di codice 34: Utilizzando l'oggetto richiesta stiamo impostando l'attributo come gurubean a cui viene assegnato il valore di testobj.

Riga di codice 35: Qui stiamo utilizzando l'oggetto dispatcher della richiesta per passare il messaggio di successo 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";


}

Spiegazione del codice:

Strato del modello:

Riga di codice 7-17: Contiene i getter e i setter di email e password che sono membri della classe Test Bean

Riga di codice 19-20: Definisce i membri email e password di tipo stringa nella classe bean.

Mvc_success.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>

Spiegazione del codice:

Riga di codice 12: stiamo ottenendo l'attributo utilizzando l'oggetto richiesta che è stato impostato nel metodo doPost del servlet.

Riga di codice 13: Stiamo stampando il messaggio di benvenuto e l'ID e-mail che sono stati salvati nell'oggetto bean

Produzione:

Quando esegui il codice sopra, ottieni il seguente output:

Cliccando su mvc_example.jsp si ottiene il modulo con l'email e la password con il pulsante Invia.

Dopo aver inserito l'email e la password nel modulo, fare clic su Invia

Progettazione di applicazioni JSP

Dopo aver fatto clic su Invia, l'output viene mostrato come di seguito

Progettazione di applicazioni JSP

Produzione:

Quando inserisci e-mail e password nella schermata e clicchi su Invia, i dettagli vengono salvati in TestBean e da TestBean vengono recuperati nella schermata successiva per ottenere il messaggio di successo.

Sommario

In questo articolo abbiamo imparato a conoscere l'architettura MVC, ovvero Model View Controller.

JSP svolge il ruolo di presentatore dei dati e di responsabile del trattamento. È un'interfaccia tra modello e vista mentre il modello si connette sia al controller che al database. La logica aziendale principale è presente nel livello del modello.