Et MVC-eksempel med servlets og JSP

1. Oversigt

I denne hurtige artikel opretter vi en lille webapplikation, der implementerer Model View Controller (MVC) designmønster ved hjælp af grundlæggende Servlets og JSP'er.

Vi undersøger lidt om, hvordan MVC fungerer, og dets nøglefunktioner, inden vi går videre til implementeringen.

2. Introduktion til MVC

Model-View-Controller (MVC) er et mønster, der anvendes i softwareteknik til at adskille applikationslogikken fra brugergrænsefladen. Som navnet antyder, har MVC-mønsteret tre lag.

Modellen definerer applikationens forretningslag, controlleren administrerer applikationens flow, og visningen definerer applikationsets præsentationslag.

Selvom MVC-mønsteret ikke er specifikt for webapplikationer, passer det meget godt i denne type applikationer. I en Java-sammenhæng består modellen af ​​enkle Java-klasser, controlleren består af servlets og visningen består af JSP-sider.

Her er nogle nøglefunktioner i mønsteret:

  • Det adskiller præsentationslaget fra forretningslaget
  • Controlleren udfører handlingen med at påkalde modellen og sende data til View
  • Modellen er ikke engang klar over, at den bruges af nogle webapplikationer eller en desktopapplikationer

Lad os se på hvert lag.

2.1. Modellaget

Dette er datalaget, der indeholder systemets forretningslogik og også repræsenterer applikationens tilstand.

Det er uafhængigt af præsentationslaget, controlleren henter dataene fra modelaget og sender det til visningslaget.

2.2. Controller-laget

Controller-lag fungerer som en grænseflade mellem visning og model. Det modtager anmodninger fra View-laget og behandler dem, herunder de nødvendige valideringer.

Anmodningerne sendes yderligere til modelaget til databehandling, og når de er behandlet, sendes dataene tilbage til controlleren og vises derefter i visningen.

2.3. Visningslaget

Dette lag repræsenterer output fra applikationen, normalt en form for brugergrænseflade. Præsentationslaget bruges til at vise de modeldata, der er hentet af controlleren.

3. MVC med servlets og JSP

For at implementere en webapplikation baseret på MVC-designmønster opretter vi Studerende og StudentService klasser - som fungerer som vores modelag.

StudentServlet klasse fungerer som en controller, og for præsentationslaget opretter vi student-rekord.jsp side.

Lad os nu skrive disse lag et efter et og starte med Studerende klasse:

offentlig klasse Student {privat int id; privat streng fornavn; privat streng efternavn; // konstruktører, getters og settere går her} 

Lad os nu skrive vores StudentService som behandler vores forretningslogik:

public class StudentService {public Optional getStudent (int id) {switch (id) {case 1: return Optional.of (new Student (1, "John", "Doe")); tilfælde 2: returnere Optional.of (ny studerende (2, "Jane", "Goodall")); tilfælde 3: returner Optional.of (ny studerende (3, "Max", "Born")); standard: returner Optional.empty (); }}}

Lad os nu oprette vores Controller-klasse StudentServlet:

@WebServlet (name = "StudentServlet", urlPatterns = "/ student-record") offentlig klasse StudentServlet udvider HttpServlet {privat StudentService studentService = ny StudentService (); privat ugyldighed processRequest (HttpServletRequest anmodning, HttpServletResponse svar) kaster ServletException, IOException {String studentID = request.getParameter ("id"); hvis (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 (anmodning, svar); } @ Override beskyttet ugyldigt doGet (HttpServletRequest anmodning, HttpServletResponse svar) kaster ServletException, IOException {processRequest (anmodning, svar); } @ Override beskyttet ugyldigt doPost (HttpServletRequest anmodning, HttpServletResponse svar) kaster ServletException, IOException {processRequest (anmodning, svar); }}

Denne servlet er controller til vores webapplikation.

For det første læser den en parameter id fra anmodningen. Hvis den id indsendes, a Studerende objekt hentes fra forretningslaget.

Når den henter de nødvendige data fra modellen, placerer den disse data i anmodningen ved hjælp af setAttribute () metode.

Endelig controlleren fremad anmodningen og svaret modsætter sig en JSP, visningen af ​​applikationen.

Lad os derefter skrive vores præsentationslag student-rekord.jsp:

  Studenterjournal-id: Fornavn: Efternavn: 

Og selvfølgelig er JSP opfattelsen af ​​applikationen; den modtager al den information, den har brug for fra controlleren, den behøver ikke at interagere direkte med forretningslaget.

4. Konklusion

I denne vejledning har vi lært om MVC, dvs. Model View Controller-arkitektur, og vi fokuserede på, hvordan man implementerer et simpelt eksempel.

Som sædvanlig kan koden, der præsenteres her, findes på GitHub.


$config[zx-auto] not found$config[zx-overlay] not found