Et MVC-eksempel med Servlets og JSP

1. Oversikt

I denne raske artikkelen oppretter vi en liten webapplikasjon som implementerer Model View Controller (MVC) designmønsteret ved hjelp av grunnleggende Servlets og JSP.

Vi vil utforske litt om hvordan MVC fungerer, og dets viktigste funksjoner før vi går videre til implementeringen.

2. Introduksjon til MVC

Model-View-Controller (MVC) er et mønster som brukes i programvareteknikk for å skille applikasjonslogikken fra brukergrensesnittet. Som navnet antyder, har MVC-mønsteret tre lag.

Modellen definerer forretningslaget til applikasjonen, kontrolleren styrer applikasjonsflyten, og visningen definerer presentasjonslaget for applikasjonen.

Selv om MVC-mønsteret ikke er spesifikt for webapplikasjoner, passer det veldig bra i denne typen applikasjoner. I en Java-sammenheng består modellen av enkle Java-klasser, kontrolleren består av servlets og View består av JSP-sider.

Her er noen viktige trekk ved mønsteret:

  • Det skiller presentasjonslaget fra virksomhetslaget
  • Kontrolleren utfører handlingen med å påkalle modellen og sende data til View
  • Modellen er ikke engang klar over at den brukes av noe webapplikasjon eller et skrivebordsprogram

La oss ta en titt på hvert lag.

2.1. Modellaget

Dette er datalaget som inneholder forretningslogikken til systemet, og også representerer applikasjonens tilstand.

Det er uavhengig av presentasjonslaget, kontrolleren henter dataene fra modellaget og sender dem til View-laget.

2.2. Kontrollerlaget

Kontrollerlag fungerer som et grensesnitt mellom View og Model. Den mottar forespørsler fra View-laget og behandler dem, inkludert de nødvendige valideringene.

Forespørslene sendes videre til modellaget for databehandling, og når de er behandlet, blir dataene sendt tilbake til kontrolleren og deretter vises på visningen.

2.3. Utsiktslaget

Dette laget representerer utdataene fra applikasjonen, vanligvis en eller annen form for brukergrensesnitt. Presentasjonslaget brukes til å vise modelldata hentet av kontrolleren.

3. MVC Med Servlets og JSP

For å implementere en webapplikasjon basert på MVC-designmønster, oppretter vi Student og StudentService klasser - som vil fungere som vårt modellag.

StudentServlet klasse vil fungere som en kontroller, og for presentasjonslaget lager vi student-rekord.jsp side.

La oss nå skrive disse lagene ett etter ett og begynne med Student klasse:

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

La oss nå skrive vår StudentService som vil behandle forretningslogikken vår:

public class StudentService {public Optional getStudent (int id) {switch (id) {case 1: return Optional.of (new Student (1, "John", "Doe")); tilfelle 2: retur Optional.of (ny student (2, "Jane", "Goodall")); sak 3: retur Optional.of (ny Student (3, "Max", "Born")); standard: returner Optional.empty (); }}}

La oss nå opprette kontrollerklassen vår StudentServlet:

@WebServlet (name = "StudentServlet", urlPatterns = "/ student-record") offentlig klasse StudentServlet utvider HttpServlet {privat StudentService studentService = ny StudentService (); privat ugyldig prosessRequest (HttpServletRequest forespørsel, 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 (forespørsel, svar); } @ Override beskyttet ugyldig doGet (HttpServletRequest forespørsel, HttpServletResponse respons) kaster ServletException, IOException {processRequest (forespørsel, svar); } @ Override beskyttet ugyldig doPost (HttpServletRequest forespørsel, HttpServletResponse respons) kaster ServletException, IOException {processRequest (forespørsel, svar); }}

Denne servletten er kontrolleren av webapplikasjonen vår.

Først leser den en parameter id fra forespørselen. Hvis den id er sendt inn, a Student objekt hentes fra virksomhetslaget.

Når den henter de nødvendige dataene fra modellen, setter den disse dataene i forespørselen ved hjelp av setAttribute () metode.

Endelig kontrolleren fremover forespørselen og svaret motsetter seg en JSP, visningen av applikasjonen.

Deretter la oss skrive presentasjonslaget vårt student-rekord.jsp:

  Studentjournal ID: Fornavn: Etternavn: 

Og selvfølgelig er JSP synet på applikasjonen; den mottar all informasjonen den trenger fra kontrolleren, den trenger ikke å samhandle med forretningslaget direkte.

4. Konklusjon

I denne veiledningen har vi lært om MVC, dvs. Model View Controller-arkitektur, og vi fokuserte på hvordan du implementerer et enkelt eksempel.

Som vanlig kan koden som presenteres her, bli funnet på GitHub.


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