MVC σε JSP (Archiδομή)
⚡ Έξυπνη Σύνοψη
Το MVC σε JSP διαχωρίζει τα ζητήματα της εφαρμογής σε επίπεδα Model, View και Controller, όπου το JSP αποδίδει την View, ένα Servlet λειτουργεί ως Controller και JavaΤα Beans ενσωματώνουν το μοντέλο για καθαρές, ελέγξιμες και συντηρήσιμες εφαρμογές ιστού.

Τι είναι το MVC;
Το MVC σημαίνει Model-View-Controller. Είναι ένα μοτίβο σχεδίασης λογισμικού που χωρίζει μια εφαρμογή σε τρία διασυνδεδεμένα επίπεδα: επιχειρηματική λογική, παρουσίαση και δεδομένα. Στο MVC:
- M σημαίνει μοντέλο
- V σημαίνει Θέα
- C σημαίνει Ελεγκτής
Το MVC είναι ένας συστηματικός τρόπος δημιουργίας εφαρμογών όπου η ροή ξεκινά από το επίπεδο View. Το αίτημα υποβάλλεται από τον χρήστη, υποβάλλεται σε επεξεργασία στο επίπεδο Controller και αποστέλλεται στο επίπεδο Model για την εισαγωγή ή την ανάκτηση δεδομένων. Το Model επιστρέφει στη συνέχεια μια απόκριση επιτυχίας ή αποτυχίας που η View αποδίδει στον χρήστη. Το διάγραμμα αρχιτεκτονικής MVC παρουσιάζεται παρακάτω:

Γιατί να χρησιμοποιήσετε MVC ArchiΤεχνολογία σε JSP;
Πριν το άλμαping Σχετικά με το πώς λειτουργεί το MVC σε JSP, βοηθάει στην κατανόηση του γιατί οι προγραμματιστές υιοθετούν αυτό το μοτίβο. Η ανάμειξη επιχειρηματικής λογικής, κλήσεων βάσης δεδομένων και HTML μέσα σε μία μόνο σελίδα JSP παράγει γρήγορα μη συντηρήσιμο κώδικα spaghetti. Το MVC διορθώνει αυτό δίνοντας σε κάθε πρόβλημα το δικό του επίπεδο:
- Code γίνεται πιο εύκολο στην ανάγνωση επειδή κάθε αρχείο έχει μία μόνο ευθύνη.
- Οι ομάδες μπορούν να εργαστούν παράλληλα στην Προβολή, τον Ελεγκτή και το Μοντέλο χωρίς διενέξεις.
- Οι δοκιμές μονάδας στοχεύουν απευθείας στο μοντέλο, χωρίς να αγγίζουν την απόδοση JSP.
- ανταλλαγήςping Μια προβολή JSP για μια απόκριση JSON ή για μια διαφορετική μηχανή προτύπων είναι απλή.
Πώς λειτουργεί το MVC σε JSP
Σε μια εφαρμογή MVC που βασίζεται σε JSP, κάθε επίπεδο αντιστοιχεί σε ένα συγκεκριμένο Java τεχνολογία. Τα αρχεία JSP αποδίδουν την Προβολή, ένα Servlet λειτουργεί ως Ελεγκτής και JavaΤα Beans ενσωματώνουν το Μοντέλο. Οι παρακάτω ενότητες εξηγούν τις αρμοδιότητες κάθε επιπέδου.
Επίπεδο μοντέλου
- Αυτό είναι το επίπεδο δεδομένων που περιέχει την επιχειρηματική λογική του συστήματος.
- Αποτελείται από όλα τα δεδομένα της εφαρμογής.
- Αντιπροσωπεύει επίσης την κατάσταση της εφαρμογής.
- Είναι κατασκευασμένο από JavaΦασόλια ή POJO που συνδέονται με το βάσεις δεδομένων.
- Ο Ελεγκτής επικοινωνεί με το Μοντέλο για να ανακτήσει δεδομένα και τα προωθεί στο επίπεδο View.
- Το μοντέλο συνδέεται με τη βάση δεδομένων και αποθηκεύει δεδομένα σε αυτήν.
Προβολή επιπέδου
- Αυτό είναι το επίπεδο παρουσίασης της εφαρμογής.
- Αποτελείται από HTML, JSP, CSS και JavaΓραφή.
- Συνήθως παρουσιάζει τη διεπαφή χρήστη της εφαρμογής.
- Εμφανίζει τα δεδομένα που ανακτώνται από τον Ελεγκτή, ο οποίος με τη σειρά του ανακτά δεδομένα από τις κλάσεις επιπέδου μοντέλου.
- Το επίπεδο προβολής αποδίδει δεδομένα στο περιβάλλον χρήστη της εφαρμογής χωρίς να περιέχει επιχειρηματική λογική.
Επίπεδο ελεγκτή
- Λειτουργεί ως διεπαφή μεταξύ Προβολής και Μοντέλου.
- Παρακολουθεί όλα τα αιτήματα που προέρχονται από το επίπεδο View.
- Λαμβάνει τα αιτήματα από το επίπεδο View, τα επεξεργάζεται και εκτελεί επικύρωση στο αίτημα.
- Το αίτημα προωθείται στο επίπεδο Model για επεξεργασία δεδομένων. Μόλις ολοκληρωθεί η επεξεργασία του αιτήματος, το Model στέλνει το αποτέλεσμα πίσω στον Controller με τις απαιτούμενες πληροφορίες, τις οποίες στη συνέχεια εμφανίζει η View.
Πλεονεκτήματα του MVC Archiδομή
Τα πλεονεκτήματα του MVC είναι:
- Εύκολο να διατηρήσει
- Εύκολη επέκταση
- Εύκολο στη δοκιμή
- Ο έλεγχος πλοήγησης είναι κεντρικός
- Η χαλαρή σύζευξη μεταξύ των στρώσεων καθιστά την ανακατασκευή ασφαλέστερη
- Είναι δυνατή η παράλληλη ανάπτυξη από πολλά μέλη της ομάδας
Παράδειγμα σχεδίασης εφαρμογών JSP με MVC Archiδομή
Σε αυτό το παράδειγμα, θα δείξουμε πώς να χρησιμοποιήσουμε την αρχιτεκτονική MVC σε μια εφαρμογή JSP.
- Παίρνουμε το παράδειγμα μιας φόρμας με δύο μεταβλητές, "email" και "password", οι οποίες αντιπροσωπεύουν το επίπεδο προβολής μας.
- Μόλις ο χρήστης εισαγάγει το email και τον κωδικό πρόσβασης και κάνει κλικ στην επιλογή Υποβολή, η ενέργεια διαβιβάζεται στο Mvc_servlet όπου διαβιβάζονται το email και ο κωδικός πρόσβασης.
- Το Mvc_servlet είναι το επίπεδο Controller. Εδώ στο Mvc_servlet, το αίτημα αποστέλλεται στο αντικείμενο bean το οποίο λειτουργεί ως επίπεδο Model.
- Οι τιμές email και κωδικού πρόσβασης ορίζονται στο bean και αποθηκεύονται για περαιτέρω χρήση.
- Από το bean, η τιμή ανακτάται και εμφανίζεται στο επίπεδο View.
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>
Επεξήγηση του κώδικα:
Προβολή επιπέδου:
Code Γραμμή 10-15: Εδώ παίρνουμε μια φόρμα που έχει δύο πεδία ως παραμέτρους, "email" και "password", και αυτό το αίτημα πρέπει να προωθηθεί σε έναν ελεγκτή, το Mvc_servlet.java, ο οποίος διαβιβάζεται στο χαρακτηριστικό action. Η μέθοδος HTTP μέσω της οποίας διαβιβάζεται είναι η 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); } }
Επεξήγηση του κώδικα:
Επίπεδο ελεγκτή:
Code Γραμμή 14: Το Mvc_servlet επεκτείνει το HttpServlet.
Code Γραμμή 26: Καθώς η μέθοδος που χρησιμοποιείται είναι η POST, το αίτημα εισέρχεται στη μέθοδο doPost του Servlet, η οποία επεξεργάζεται το αίτημα και το αποθηκεύει στο αντικείμενο bean ως testobj.
Code Γραμμή 34: Χρησιμοποιώντας το αντικείμενο request, ορίζουμε το χαρακτηριστικό "gurubean" στο οποίο έχει εκχωρηθεί η τιμή testobj.
Code Γραμμή 35: Εδώ χρησιμοποιούμε το αντικείμενο RequestDispatcher για να προωθήσουμε το μήνυμα επιτυχίας στο 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"; }
Επεξήγηση του κώδικα:
Επίπεδο μοντέλου:
Code Γραμμή 7-17: Περιέχει τους getters και τους setters του email και του κωδικού πρόσβασης, οι οποίοι είναι μέλη της κλάσης TestBean.
Code Γραμμή 19-20: Ορίζει το email και τον κωδικό πρόσβασης των μελών τύπου String στην κλάση 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>
Επεξήγηση του κώδικα:
Code Γραμμή 12: Ανακτούμε το χαρακτηριστικό χρησιμοποιώντας το αντικείμενο request που ορίστηκε στη μέθοδο doPost του Servlet.
Code Γραμμή 13: Εκτυπώνουμε το μήνυμα καλωσορίσματος και το email id που έχουν αποθηκευτεί στο αντικείμενο bean.
Παραγωγή
Όταν εκτελείτε τον παραπάνω κώδικα, λαμβάνετε την ακόλουθη έξοδο:
Όταν ανοίγετε το mvc_example.jsp, εμφανίζεται η φόρμα με τα πεδία email και κωδικού πρόσβασης και το κουμπί Υποβολή.
Αφού εισαγάγετε το email και τον κωδικό πρόσβασης στη φόρμα και κάνετε κλικ στην επιλογή Υποβολή:
Αφού κάνετε κλικ στην επιλογή Υποβολή, το αποτέλεσμα εμφανίζεται ως εξής:
Όταν εισαγάγετε email και κωδικό πρόσβασης στην οθόνη και κάνετε κλικ στην επιλογή Υποβολή, οι λεπτομέρειες αποθηκεύονται στο TestBean. Από το TestBean, ανακτώνται στην επόμενη οθόνη για να εμφανιστεί το μήνυμα επιτυχίας. JSP παίζει τον ρόλο της παρουσίασης των δεδομένων και της παροχής της προβολής, ενώ το Servlet λειτουργεί ως Ελεγκτής και JavaΤο Bean χρησιμεύει ως Μοντέλο. Η κύρια επιχειρηματική λογική περιέχεται στο επίπεδο Μοντέλου.


