C'è un buon esempio del pattern MVC applicato al mondo JSP e Servlet nei Servlet HeadFirst e JSP libro.
Fondamentalmente, la parte Controller è rappresentata da un servlet. Il JSP è la vista e le funzioni del modello sono eseguite da Plain Old Java Object, ovvero una normale classe Java. Nel libro mostrano come è possibile scrivere una semplice app di BeerExpert come illustrazione del pattern MVC supportato naturalmente dal livello Web di J2EE.
Il codice HTML della pagina iniziale.
<html><body>
<h1 align=”center”>Beer Selection Page</h1>
<form method=”POST”
action=”SelectBeer.do”>
Select beer characteristics<p>
Color:
<select name=”color” size=”1”>
<option value=”light”> light </option>
<option value=”amber”> amber </option>
<option value=”brown”> brown </option>
<option value=”dark”> dark </option>
</select>
<br><br>
<center>
<input type=”SUBMIT”>
</center>
</form></body></html>
Il codice JSP (utilizzato per visualizzare i risultati)
<%@ page import=”java.util.*” %>
<html>
<body>
<h1 align=”center”>Beer Recommendations JSP</h1>
<p>
<%
List styles = (List)request.getAttribute(“styles”);
Iterator it = styles.iterator();
while(it.hasNext()) {
out.print(“<br>try: “ + it.next());
}
%>
</body>
</html>
Il codice servlet (utilizzato per inizializzare il modello, ottenere il risultato dei suoi calcoli e inoltrarlo al componente View)
package com.example.web;
import com.example.model.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class BeerSelect extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
String c = request.getParameter(“color”);
BeerExpert be = new BeerExpert();
List result = be.getBrands(c);
request.setAttribute(“styles”, result);
RequestDispatcher view = request.getRequestDispatcher(“result.jsp”);
view.forward(request, response);
Il modello (utilizzato per eseguire i calcoli effettivi e contenere la logica aziendale, può anche contenere l'interazione con il database)
package com.example.model;
import java.util.*;
public class BeerExpert {
public List getBrands(String color) {
List brands = new ArrayList();
if (color.equals(“amber”)) {
brands.add(“Jack Amber”);
brands.add(“Red Moose”);
}
else {
brands.add(“Jail Pale Ale”);
brands.add(“Gout Stout”);
}
return(brands);
}
}
Si prega di fare riferimento al libro citato per una descrizione più dettagliata.
UPDATE - July 01, 2013
Per quanto riguarda l'architettura a tre livelli. Ci sono molti modi possibili per affrontare questa domanda. Il modello di progettazione a 3 livelli significa che il software è strutturato in tre parti: il livello di presentazione (la parte dell'interfaccia utente dell'app può essere un browser, l'app SWING, l'app per Android / iOS, ecc.), Il livello di business logic (il server app lato-composto composta da servlet, POJO, EJB, ecc.) e il livello dell'archivio dati (potrebbe essere un database relazionale o oggetto, database NoSQL, ecc.).
Pertanto, l'architettura a tre livelli descrive come è organizzato il tuo sistema / applicazione intero . Ci sono anche i cosiddetti modelli di progettazione che vengono utilizzati per organizzare i livelli / livelli particolari del tuo sistema applicativo / software. Ad esempio, il livello Business Logic e Presentation della tua app può essere organizzato in un pattern MVC (come nell'esempio precedente, dove JSP e HTML erano la parte UI / View che costituisce il livello Presentation della tua architettura, mentre Servlet (la parte Controller ) e POJOs (la parte Model) erano collettivamente il tuo livello di business logic.Il livello di archiviazione dei dati potrebbe essere coperto dai server di database Oracle o MySQL o PostgreSQL e mentre diventano parte della tua architettura thee-tier, non hanno nulla a che fare con il Pattern MVC che hai usato per organizzare la tua logica di business.Se hai usato un'app SWING come Presentation Tier, potresti anche scrivere quell'app da solo nello stile MVC.
Sai che ci sono molte altre opzioni oltre a MVC. Ad esempio, potresti creare la tua logica aziendale + livelli di presentazione in Model-View-Presenter , Model-View-ViewModel e molti altri modelli di progettazione.
Infine, potresti anche scrivere un'applicazione a un livello (come un MS Access) in un modo MVC. Il modo in cui l'architettura dell'intero sistema (quali livelli hai, ecc.) Non ha nulla a che fare con il modo in cui ciascuno dei livelli è progettato (MVC, MVP, ecc.).