Príklad MVC s servletmi a JSP

1. Prehľad

V tomto rýchlom článku vytvoríme malú webovú aplikáciu, ktorá implementuje návrhový vzor Model View Controller (MVC) pomocou základných servletov a JSP.

Skôr ako prejdeme k implementácii, trochu si ukážeme, ako funguje MVC, a jeho kľúčové vlastnosti.

2. Úvod do MVC

Model-View-Controller (MVC) je vzor používaný v softvérovom inžinierstve na oddelenie aplikačnej logiky od používateľského rozhrania. Ako už z názvu vyplýva, vzor MVC má tri vrstvy.

Model definuje obchodnú vrstvu aplikácie, kontrolór riadi tok aplikácie a pohľad definuje prezentačnú vrstvu aplikácie.

Aj keď vzor MVC nie je špecifický pre webové aplikácie, v tomto type aplikácií sa veľmi dobre hodí. V kontexte Java Model pozostáva z jednoduchých tried Java, radič z servletov a pohľad z JSP stránok.

Tu uvádzame niektoré kľúčové vlastnosti vzoru:

  • Oddeľuje prezentačnú vrstvu od obchodnej vrstvy
  • Kontrolór vykonáva akciu vyvolanú Modelom a odosielajúcim údaje do View
  • Model ani nevie, že ho používa nejaká webová aplikácia alebo desktopová aplikácia

Pozrime sa na každú vrstvu.

2.1. Vrstva modelu

Toto je dátová vrstva, ktorá obsahuje obchodnú logiku systému a predstavuje tiež stav aplikácie.

Je nezávislý na prezentačnej vrstve, radič načíta údaje z vrstvy modelu a odošle ich do vrstvy Zobraziť.

2.2. Vrstva radiča

Ovládacia vrstva funguje ako rozhranie medzi zobrazením a modelom. Prijíma požiadavky z vrstvy Zobraziť a spracúva ich vrátane potrebných overení.

Požiadavky sa ďalej odosielajú do modelovej vrstvy na spracovanie údajov a po ich spracovaní sa údaje odošlú späť správcovi a potom sa zobrazia v zobrazení.

2.3. Vrstva pohľadu

Táto vrstva predstavuje výstup aplikácie, zvyčajne ide o určitú formu používateľského rozhrania. Prezentačná vrstva sa používa na zobrazenie údajov modelu získaných kontrolórom.

3. MVC s servletmi a JSP

Na implementáciu webovej aplikácie založenej na dizajnovom vzore MVC vytvoríme Študent a StudentService triedy - ktoré budú fungovať ako naša modelová vrstva.

StudentServlet trieda bude fungovať ako radič a pre prezentačnú vrstvu vytvoríme student-record.jsp stránke.

Teraz napíšme tieto vrstvy jednu po druhej a začneme s Študent trieda:

public class Student {private int id; private String meno; private String priezvisko; // konštruktory, getre a setre idú sem} 

Poďme teraz napísať naše StudentService ktorá spracuje našu obchodnú logiku:

public class StudentService {public Optional getStudent (int id) {switch (id) {case 1: return Optional.of (new Student (1, "John", "Doe")); prípad 2: návrat Optional.of (nový študent (2, "Jane", "Goodall")); prípad 3: návrat Optional.of (nový študent (3, "Max", "Born")); predvolené: návrat Optional.empty (); }}}

Teraz vytvorme našu triedu Controller StudentServlet:

@WebServlet (name = "StudentServlet", urlPatterns = "/ student-record") verejná trieda StudentServlet rozširuje HttpServlet {private StudentService studentService = nový StudentService (); private void processRequest (požiadavka HttpServletRequest, odpoveď HttpServletResponse) hodí 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 dispečer = request.getRequestDispatcher ("/WEB-INF/jsp/student-record.jsp"); dispečer.predal (požiadavka, odpoveď); } @Override protected void doGet (požiadavka HttpServletRequest, odpoveď HttpServletResponse) hodí ServletException, IOException {processRequest (požiadavka, odpoveď); } @Override protected void doPost (požiadavka HttpServletRequest, odpoveď HttpServletResponse) hodí ServletException, IOException {processRequest (požiadavka, odpoveď); }}

Tento servlet je ovládačom našej webovej aplikácie.

Najskôr načíta parameter id zo žiadosti. Ak id sa podáva, a Študent objekt je načítaný z obchodnej vrstvy.

Akonáhle načíta potrebné údaje z modelu, dá ich do žiadosti pomocou setAttribute () metóda.

Nakoniec kontrolór dopredu objekty požiadavky a odpovede na JSP, pohľad na aplikáciu.

Ďalej napíšeme našu prezentačnú vrstvu student-record.jsp:

  ID záznamu študenta: Meno: Priezvisko: 

A samozrejme, JSP je pohľadom na aplikáciu; prijíma všetky potrebné informácie od kontrolóra, nemusí priamo komunikovať s obchodnou vrstvou.

4. Záver

V tomto tutoriáli sme sa dozvedeli o architektúre MVC, tj. Model View Controller, a zamerali sme sa na to, ako implementovať jednoduchý príklad.

Tu uvedený kód nájdete ako obvykle na GitHub.


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