Een MVC-voorbeeld met Servlets en JSP

1. Overzicht

In dit korte artikel maken we een kleine webtoepassing die het ontwerppatroon Model View Controller (MVC) implementeert, met behulp van standaardservlets en JSP's.

We zullen een klein beetje onderzoeken over hoe MVC werkt en de belangrijkste functies ervan voordat we verder gaan met de implementatie.

2. Inleiding tot MVC

Model-View-Controller (MVC) is een patroon dat in software-engineering wordt gebruikt om de applicatielogica te scheiden van de gebruikersinterface. Zoals de naam al aangeeft, heeft het MVC-patroon drie lagen.

Het model definieert de bedrijfslaag van de applicatie, de controller beheert de stroom van de applicatie en de view definieert de presentatielaag van de applicatie.

Hoewel het MVC-patroon niet specifiek is voor webapplicaties, past het heel goed in dit soort applicaties. In een Java-context bestaat het model uit eenvoudige Java-klassen, de controller bestaat uit servlets en de weergave bestaat uit JSP-pagina's.

Hier zijn enkele belangrijke kenmerken van het patroon:

  • Het scheidt de presentatielaag van de bedrijfslaag
  • De controller voert de actie uit door het model aan te roepen en gegevens naar View te verzenden
  • Het model is zich er niet eens van bewust dat het wordt gebruikt door een webapplicatie of een desktopapplicatie

Laten we elke laag eens bekijken.

2.1. De modellaag

Dit is de datalaag die de bedrijfslogica van het systeem bevat en ook de status van de applicatie weergeeft.

Het is onafhankelijk van de presentatielaag, de controller haalt de gegevens op uit de modellaag en verzendt deze naar de weergavelaag.

2.2. De controllerlaag

De controllerlaag fungeert als een interface tussen weergave en model. Het ontvangt verzoeken van de View-laag en verwerkt deze, inclusief de nodige validaties.

De verzoeken worden verder naar de modellaag gestuurd voor gegevensverwerking, en zodra ze zijn verwerkt, worden de gegevens teruggestuurd naar de controller en vervolgens weergegeven in de weergave.

2.3. De weergavelaag

Deze laag vertegenwoordigt de uitvoer van de applicatie, meestal een vorm van gebruikersinterface. De presentatielaag wordt gebruikt om de modelgegevens weer te geven die door de controller zijn opgehaald.

3. MVC met servlets en JSP

Om een ​​webtoepassing op basis van MVC-ontwerppatroon te implementeren, maken we het Leerling en StudentService klassen - die zullen fungeren als onze modellaag.

StudentServlet class zal fungeren als een controller, en voor de presentatielaag maken we student-record.jsp bladzijde.

Laten we deze lagen nu een voor een schrijven en beginnen met Leerling klasse:

openbare klas Student {privé int id; private String voornaam; private String achternaam; // constructeurs, getters en setters gaan hier} 

Laten we nu onze schrijven StudentService die onze bedrijfslogica zal verwerken:

openbare klas StudentService {openbaar Optioneel getStudent (int id) {switch (id) {case 1: return Optioneel.of (nieuwe student (1, "John", "Doe")); geval 2: retourneer Optioneel.of (nieuwe student (2, "Jane", "Goodall")); geval 3: retourneer Optioneel.of (nieuwe student (3, "Max", "Geboren")); standaard: return Optioneel.empty (); }}}

Laten we nu onze Controller-klasse maken StudentServlet:

@WebServlet (name = "StudentServlet", urlPatterns = "/ student-record") openbare klas StudentServlet breidt HttpServlet uit {privé StudentServlet studentService = nieuwe StudentService (); private void processRequest (HttpServletRequest-verzoek, HttpServletResponse-reactie) gooit ServletException, IOException {String studentID = request.getParameter ("id"); if (studentID! = null) {int id = Integer.parseInt (studentID); studentService.getStudent (id) .ifPresent (s -> request.setAttribute ("studentRecord", s)); } RequestDispatcher dispatcher = request.getRequestDispatcher ("/WEB-INF/jsp/student-record.jsp"); dispatcher.forward (verzoek, antwoord); } @Override beschermde ongeldige doGet (verzoek HttpServletRequest, antwoord HttpServletResponse) gooit ServletException, IOException {processRequest (verzoek, antwoord); } @Override beschermde ongeldige doPost (verzoek HttpServletRequest, antwoord HttpServletResponse) gooit ServletException, IOException {processRequest (verzoek, antwoord); }}

Deze servlet is de controller van onze webapplicatie.

Ten eerste leest het een parameter ID kaart van het verzoek. Als het ID kaart wordt ingediend, een Leerling object wordt opgehaald uit de bedrijfslaag.

Zodra het de benodigde gegevens uit het model heeft opgehaald, plaatst het deze gegevens in het verzoek met behulp van de setAttribute () methode.

Eindelijk, de Controller vooruit het verzoek en de reactie maakt bezwaar tegen een JSP, de weergave van de applicatie.

Laten we vervolgens onze presentatielaag schrijven student-record.jsp:

  Studentrecord-ID: Voornaam: Achternaam: 

En natuurlijk is de JSP de weergave van de applicatie; het ontvangt alle informatie die het nodig heeft van de controller, het hoeft niet rechtstreeks met de bedrijfslaag te communiceren.

4. Conclusie

In deze tutorial hebben we geleerd over de MVC, d.w.z. Model View Controller-architectuur, en hebben we ons gericht op het implementeren van een eenvoudig voorbeeld.

Zoals gewoonlijk is de hier gepresenteerde code te vinden op GitHub.