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.