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.