Primjer MVC-a s servletima i JSP-om
1. Pregled
U ovom brzom članku stvorit ćemo malu web aplikaciju koja implementira obrazac dizajna upravljača pogleda modela (MVC), koristeći osnovne servlete i JSP-ove.
Istražit ćemo malo o tome kako MVC radi i njegove ključne značajke prije nego što prijeđemo na implementaciju.
2. Uvod u MVC
Model-View-Controller (MVC) je obrazac koji se koristi u softverskom inženjerstvu za odvajanje aplikacijske logike od korisničkog sučelja. Kao što naziv govori, MVC uzorak ima tri sloja.
Model definira poslovni sloj aplikacije, kontroler upravlja protokom aplikacije, a pogled definira prezentacijski sloj aplikacije.
Iako MVC obrazac nije specifičan za web aplikacije, on se vrlo dobro uklapa u ovu vrstu aplikacija. U Java kontekstu, Model se sastoji od jednostavnih Java klasa, Controller se sastoji od servleta, a View se sastoji od JSP stranica.
Evo nekoliko ključnih značajki uzorka:
- Odvaja prezentacijski sloj od poslovnog
- Upravljač izvodi radnju pozivanja na model i slanja podataka u View
- Model uopće nije svjestan da ga koristi neka web aplikacija ili stolna aplikacija
Pogledajmo svaki sloj.
2.1. Sloj modela
Ovo je podatkovni sloj koji sadrži poslovnu logiku sustava i također predstavlja stanje aplikacije.
Neovisan je o prezentacijskom sloju, kontroler dohvaća podatke iz sloja Model i šalje ih sloju View.
2.2. Sloj kontrolera
Sloj kontrolera djeluje kao sučelje između prikaza i modela. Prima zahtjeve od sloja View i obrađuje ih, uključujući potrebne provjere valjanosti.
Zahtjevi se dalje šalju sloju Modela za obradu podataka, a nakon obrade, podaci se vraćaju upravljaču i zatim prikazuju u prikazu.
2.3. Sloj pogleda
Ovaj sloj predstavlja izlaz aplikacije, obično neki oblik korisničkog sučelja. Prezentacijski sloj koristi se za prikaz podataka o modelu koje je dohvatio upravljač.
3. MVC s servletima i JSP-om
Da bismo implementirali web aplikaciju koja se temelji na uzorku dizajna MVC, stvorit ćemo Student i StudentService klase - koji će djelovati kao naš sloj Modela.
StudentServlet klasa će djelovati kao kontrolor, a za prezentacijski sloj ćemo stvoriti student-record.jsp stranica.
A sada, napišite ove slojeve jedan po jedan i započnimo s tim Student razred:
javni razred student {private int id; private String firstName; private String lastName; // ovdje idu konstruktori, getteri i postavljači}
Napišimo sada svoj StudentService koji će obraditi našu poslovnu logiku:
javna klasa StudentService {public Neobvezna getStudent (int id) {switch (id) {slučaj 1: povratak Neobvezna.of (novi Student (1, "John", "Doe")); slučaj 2: povratak Neobvezno.of (novi student (2, "Jane", "Goodall")); slučaj 3: povratak Neobvezno.of (novi student (3, "Max", "Rođen")); zadana vrijednost: return Optional.empty (); }}}
Ajmo sada stvoriti našu klasu Controller StudentServlet:
@WebServlet (name = "StudentServlet", urlPatterns = "/ student-record") javna klasa StudentServlet proširuje HttpServlet {private StudentService studentService = new StudentService (); private void processRequest (HttpServletRequest zahtjev, HttpServletResponse odgovor) baca 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.naprijed (zahtjev, odgovor); } @Override zaštićen void doGet (zahtjev HttpServletRequest, odgovor HttpServletResponse) baca ServletException, IOException {processRequest (zahtjev, odgovor); } @Override zaštićen void doPost (zahtjev HttpServletRequest, odgovor HttpServletResponse) baca ServletException, IOException {processRequest (zahtjev, odgovor); }}
Ovaj je servlet upravljač naše web aplikacije.
Prvo, čita parametar iskaznica iz zahtjeva. Ako je iskaznica podnese se, a Student objekt se preuzima iz poslovnog sloja.
Nakon što dohvati potrebne podatke iz Modela, stavlja ih u zahtjev pomoću setAttribute () metoda.
Konačno, kontroler naprijed zahtjev i odgovor prigovaraju JSP-u, pogledu aplikacije.
Dalje, napišite svoj prezentacijski sloj student-record.jsp:
ID studentske evidencije: Ime: Prezime:
I, naravno, JSP je pogled na aplikaciju; prima sve potrebne informacije od kontrolera, ne treba izravno komunicirati s poslovnim slojem.
4. Zaključak
U ovom uputstvu saznali smo o MVC-u, tj. Arhitekturi upravljača modela prikaza, i usredotočili smo se na to kako implementirati jednostavan primjer.
Kao i obično, ovdje predstavljeni kod možete pronaći na GitHubu.