MVC σε JSP (Archiδομή)
Τι είναι το MVC;
Το MVC είναι μια αρχιτεκτονική που διαχωρίζει επιχειρηματική λογική, παρουσίαση και δεδομένα. Στο MVC,
- Το M σημαίνει Model
- Το V σημαίνει Προβολή
- Το C σημαίνει ελεγκτής.
Το MVC είναι ένας συστηματικός τρόπος χρήσης της εφαρμογής όπου η ροή ξεκινά από το επίπεδο προβολής, όπου το αίτημα εγείρεται και υποβάλλεται σε επεξεργασία στο επίπεδο ελεγκτή και αποστέλλεται στο επίπεδο μοντέλου για να εισαγάγετε δεδομένα και να λάβετε πίσω το μήνυμα επιτυχίας ή αποτυχίας. Το MVC Archiτο διάγραμμα δομής παρουσιάζεται παρακάτω:

Επίπεδο μοντέλου
- Αυτό είναι το επίπεδο δεδομένων που αποτελείται από την επιχειρηματική λογική του συστήματος.
- Αποτελείται από όλα τα δεδομένα της εφαρμογής
- Αντιπροσωπεύει επίσης την κατάσταση της εφαρμογής.
- Αποτελείται από κλάσεις που έχουν τη σύνδεση με το βάσεις δεδομένων.
- Ο ελεγκτής συνδέεται με το μοντέλο και ανακτά τα δεδομένα και τα στέλνει στο επίπεδο προβολής.
- Το μοντέλο συνδέεται επίσης με τη βάση δεδομένων και αποθηκεύει τα δεδομένα σε μια βάση δεδομένων που είναι συνδεδεμένη με αυτήν.
Προβολή επιπέδου
- Αυτό είναι ένα επίπεδο παρουσίασης.
- Αποτελείται από HTML, JSP, κ.λπ. σε αυτό.
- Συνήθως παρουσιάζει το UI της εφαρμογής.
- Χρησιμοποιείται για την εμφάνιση των δεδομένων που λαμβάνονται από τον ελεγκτή, ο οποίος με τη σειρά του λαμβάνει δεδομένα από κλάσεις επιπέδου μοντέλου.
- Αυτό το επίπεδο προβολής εμφανίζει τα δεδομένα στη διεπαφή χρήστη της εφαρμογής.
Επίπεδο ελεγκτή
- Λειτουργεί ως διεπαφή μεταξύ Προβολής και Μοντέλου.
- Αναχαιτίζει όλα τα αιτήματα που προέρχονται από το επίπεδο προβολής.
- Λαμβάνει τα αιτήματα από το επίπεδο προβολής και επεξεργάζεται τα αιτήματα και κάνει την απαραίτητη επικύρωση για το αίτημα.
- Αυτά τα αιτήματα αποστέλλονται περαιτέρω στο επίπεδο μοντέλου για επεξεργασία δεδομένων και μόλις υποβληθεί σε επεξεργασία το αίτημα, αποστέλλεται πίσω στον ελεγκτή με τις απαιτούμενες πληροφορίες και εμφανίζονται ανάλογα από την προβολή.
Πλεονεκτήματα του MVC Archiδομή
Τα πλεονεκτήματα του MVC είναι:
- Εύκολο να διατηρήσει
- Εύκολη επέκταση
- Εύκολο στη δοκιμή
- Ο έλεγχος πλοήγησης είναι κεντρικός
Παράδειγμα σχεδίασης εφαρμογών JSP με MVC Archiδομή
Σε αυτό το παράδειγμα, θα δείξουμε πώς να χρησιμοποιήσετε την αρχιτεκτονική MVC στο JSP.
- Παίρνουμε το παράδειγμα μιας φόρμας με δύο μεταβλητές "email" και "password" που είναι το επίπεδο προβολής μας.
- Μόλις ο χρήστης εισαγάγει το email και τον κωδικό πρόσβασης και κάνει κλικ στην υποβολή, η ενέργεια περνά στο mvc_servlet όπου περνούν το email και ο κωδικός πρόσβασης.
- Αυτό το mvc_servlet είναι επίπεδο ελεγκτή. Εδώ στο mvc_servlet το αίτημα αποστέλλεται στο αντικείμενο bean που λειτουργεί ως επίπεδο μοντέλου.
- Οι τιμές email και κωδικού πρόσβασης ορίζονται στο bean και αποθηκεύονται για περαιτέρω σκοπούς.
- Από το φασόλι, η τιμή λαμβάνεται και εμφανίζεται στο επίπεδο προβολής.
Mvc_example.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>MVC Guru Example</title> </head> <body> <form action="Mvc_servlet" method="POST"> Email: <input type="text" name="email"> <br /> Password: <input type="text" name="password" /> <input type="submit" value="Submit" /> </form> </body> </html>
Επεξήγηση του κώδικα:
Προβολή επιπέδου:
Κωδικός Γραμμή 10-15: Εδώ παίρνουμε μια φόρμα που έχει δύο πεδία ως παράμετρο "email" και "password" και αυτό το αίτημα πρέπει να προωθηθεί σε έναν ελεγκτή Mvc_servlet.java, ο οποίος μεταβιβάζεται σε δράση. Η μέθοδος μέσω της οποίας διέρχεται είναι η μέθοδος POST.
Mvc_servlet.java
package demotest; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * Servlet implementation class Mvc_servlet */ public class Mvc_servlet extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Mvc_servlet() { super(); // TODO Auto-generated constructor stub } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String email=request.getParameter("email"); String password=request.getParameter("password"); TestBean testobj = new TestBean(); testobj.setEmail(email); testobj.setPassword(password); request.setAttribute("gurubean",testobj); RequestDispatcher rd=request.getRequestDispatcher("mvc_success.jsp"); rd.forward(request, response); } }
Επεξήγηση του κώδικα:
Επίπεδο ελεγκτή
Κωδικός Γραμμή 14:Το mvc_servlet επεκτείνει το HttpServlet.
Κωδικός Γραμμή 26: Καθώς η μέθοδος που χρησιμοποιείται είναι POST, επομένως το αίτημα έρχεται σε μια μέθοδο doPost του servlet που επεξεργάζεται τις αιτήσεις και αποθηκεύει στο αντικείμενο bean ως testobj.
Κωδικός Γραμμή 34: Χρησιμοποιώντας το αντικείμενο request ορίζουμε το χαρακτηριστικό ως gurubean στο οποίο εκχωρείται η τιμή testobj.
Κωδικός Γραμμή 35: Εδώ χρησιμοποιούμε αντικείμενο αιτήματος αποστολέα για να περάσουμε το μήνυμα επιτυχίας στο mvc_success.jsp
TestBean.java
package demotest; import java.io.Serializable; public class TestBean implements Serializable{ public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } private String email="null"; private String password="null"; }
Επεξήγηση του κώδικα:
Επίπεδο μοντέλου:
Κωδικός Γραμμή 7-17: Περιέχει τους λήπτες και ρυθμιστές email και κωδικού πρόσβασης που είναι μέλη της κατηγορίας Test Bean
Κωδικός Γραμμή 19-20: Καθορίζει το email των μελών και τον κωδικό πρόσβασης τύπου συμβολοσειράς στην κλάση bean.
Mvc_success.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@page import="demotest.TestBean"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Success</title> </head> <body> <% TestBean testguru=(TestBean)request.getAttribute("gurubean"); out.print("Welcome, "+testguru.getEmail()); %> </body> </html>
Επεξήγηση του κώδικα:
Κωδικός Γραμμή 12: λαμβάνουμε το χαρακτηριστικό χρησιμοποιώντας το αντικείμενο request που έχει οριστεί στη μέθοδο doPost του servlet.
Κωδικός Γραμμή 13: Εκτυπώνουμε το μήνυμα καλωσορίσματος και το αναγνωριστικό email του οποίου έχουν αποθηκευτεί στο αντικείμενο bean
Παραγωγή:
Όταν εκτελείτε τον παραπάνω κώδικα, λαμβάνετε την ακόλουθη έξοδο:
Όταν κάνετε κλικ στο mvc_example.jsp, λαμβάνετε τη φόρμα με email και κωδικό πρόσβασης με το κουμπί υποβολή.
Αφού εισαγάγετε email και κωδικό πρόσβασης στη φόρμα και, στη συνέχεια, κάντε κλικ στο κουμπί Υποβολή
Αφού κάνετε κλικ στην υποβολή, το αποτέλεσμα εμφανίζεται όπως παρακάτω
Παραγωγή:
Όταν εισαγάγετε email και κωδικό πρόσβασης στην οθόνη και κάνετε κλικ στην υποβολή, στη συνέχεια, οι λεπτομέρειες αποθηκεύονται στο TestBean και από το TestBean ανακτώνται στην επόμενη οθόνη για να λάβετε το μήνυμα επιτυχίας.
Σύνοψη
Σε αυτό το άρθρο, μάθαμε για την αρχιτεκτονική MVC, δηλαδή Model View Controller.
JSP παίζει το ρόλο της παρουσίασης των δεδομένων και του ελεγκτή. Είναι μια διεπαφή μεταξύ μοντέλου και προβολής ενώ το μοντέλο συνδέεται τόσο με τον ελεγκτή όσο και με τη βάση δεδομένων. Η κύρια επιχειρηματική λογική είναι παρούσα στο επίπεδο μοντέλου.