MVC példa Servletekkel és JSP-vel

1. Áttekintés

Ebben a rövid cikkben létrehozunk egy kis webalkalmazást, amely az alapvető kiszolgálókkal és JSP-kkel implementálja a Model View Controller (MVC) tervezési mintáját.

Mielőtt továbblépnénk a megvalósításra, egy kicsit megvizsgáljuk az MVC működését és legfontosabb jellemzőit.

2. Bevezetés az MVC-be

A Model-View-Controller (MVC) a szoftvertervezésben használt minta az alkalmazáslogika és a felhasználói felület elkülönítésére. Ahogy a neve is mutatja, az MVC mintának három rétege van.

A Modell meghatározza az alkalmazás üzleti rétegét, a Vezérlő kezeli az alkalmazás folyamatát, a Nézet pedig az alkalmazás bemutatási rétegét.

Bár az MVC minta nem kifejezetten a webalkalmazásokra jellemző, nagyon jól illeszkedik az ilyen típusú alkalmazásokba. Java környezetben a Modell egyszerű Java osztályokból áll, a Vezérlő szervletekből, a Nézet pedig JSP oldalakból áll.

A minta néhány fő jellemzője:

  • Elválasztja a prezentációs réteget az üzleti rétegtől
  • A Vezérlő végrehajtja a Modell meghívásának és az adatok Nézetbe küldésének műveletét
  • A modell nem is tudja, hogy valamilyen webalkalmazás vagy asztali alkalmazás használja

Vessünk egy pillantást az egyes rétegekre.

2.1. A modellréteg

Ez az az adatréteg, amely a rendszer üzleti logikáját tartalmazza, és az alkalmazás állapotát is képviseli.

A prezentációs rétegtől független, a vezérlő lekéri az adatokat a Modell rétegből, és elküldi a Nézet rétegnek.

2.2. A vezérlő réteg

A vezérlő réteg interfészként működik a Nézet és a Modell között. Kéréseket fogad a Nézet rétegtől és feldolgozza azokat, beleértve a szükséges ellenőrzéseket is.

A kéréseket továbbküldik a Model rétegbe adatfeldolgozás céljából, és miután feldolgozták, az adatokat visszaküldik a Vezérlőnek, majd a Nézetben jelennek meg.

2.3. A Nézet réteg

Ez a réteg az alkalmazás kimenetét reprezentálja, általában a felhasználói felület valamilyen formáját. A bemutató réteg a Vezérlő által letöltött Model adatok megjelenítésére szolgál.

3. MVC Servletekkel és JSP-vel

Az MVC tervezési mintáján alapuló webalkalmazás létrehozásához létrehozzuk a Diák és StudentService osztályok - amelyek a Model rétegünkként fognak működni.

StudentServlet osztály Vezérlőként fog működni, és a bemutató réteg számára létrehozunk hallgatói feljegyzés.jsp oldalt.

Most írjuk ezeket a rétegeket egyenként, és kezdjük a következővel: Diák osztály:

nyilvános osztály Diák {private int id; privát karakterlánc keresztnév; privát karakterlánc vezetéknév; // konstruktorok, szerelők és telepítők ide mennek} 

Most írjuk meg a mi StudentService amely feldolgozza üzleti logikánkat:

public class StudentService {public Opcionális getStudent (int id) {switch (id) {case 1: return Opcionális.of (new Student (1, "John", "Doe")); 2. eset: return Opcionális.of (új hallgató (2, "Jane", "Goodall")); 3. eset: return Opcionális.of (new Student (3, "Max", "Született")); alapértelmezett: return Opcionális.empty (); }}}

Most hozzuk létre a Controller osztályunkat StudentServlet:

@WebServlet (név = "StudentServlet", urlPatterns = "/ student-record") nyilvános osztály A StudentServlet kiterjeszti a HttpServlet {private StudentService studentService = új StudentService (); private void processRequest (HttpServletRequest kérés, HttpServletResponse válasz) dobja a 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 diszpécser = request.getRequestDispatcher ("/WEB-INF/jsp/student-record.jsp"); diszpécser.forward (kérés, válasz); } @Orride védett void doGet (HttpServletRequest kérés, HttpServletResponse válasz) dobja a ServletException, IOException {processRequest (kérés, válasz); } @Orride védett void doPost (HttpServletRequest kérés, HttpServletResponse válasz) dobja a ServletException, IOException {processRequest (kérés, válasz); }}

Ez a szervlet a webalkalmazásunk vezérlője.

Először egy paramétert olvas le id a kérésből. Ha a id benyújtják, a Diák az objektum lekérésre kerül az üzleti rétegből.

Miután lekérte a szükséges adatokat a Modellből, ezeket az adatokat a kérésbe helyezi a setAttribute () módszer.

Végül a Vezérlő előre a kérés és a válasz kifogásolja a JSP-t, az alkalmazás nézetét.

Ezután írjuk meg a bemutató rétegünket hallgatói feljegyzés.jsp:

  Hallgatói nyilvántartási azonosító: keresztnév: vezetéknév: 

És természetesen a JSP az alkalmazás nézete; minden szükséges információt megkap a Vezérlőtől, nem kell közvetlenül az üzleti réteggel lépnie.

4. Következtetés

Ebben az oktatóanyagban megismertük az MVC, azaz a Model View Controller architektúrát, és arra összpontosítottunk, hogy miként valósítsunk meg egy egyszerű példát.

Szokás szerint az itt bemutatott kód megtalálható a GitHub oldalon.