MVC σε JSP (Archiδομή)

⚡ Έξυπνη Σύνοψη

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

  • 🧱 Διαχωρισμός ανησυχιών: Το μοντέλο διατηρεί δεδομένα και επιχειρηματική λογική, το View αποδίδει το UI και ο Controller δρομολογεί αιτήματα μεταξύ τους.
  • 📐 Ρόλος JSP: Οι σελίδες JSP αποδίδουν δυναμική σήμανση για το επίπεδο View, ενώ ένα Servlet χειρίζεται την επεξεργασία αιτημάτων στο επίπεδο Controller.
  • 🔀 Ροή αιτήματος: Το πρόγραμμα περιήγησης υποβάλλει μια φόρμα, το Servlet επικυρώνει τις εισόδους, συμπληρώνει μια JavaBean, στη συνέχεια προωθεί τον έλεγχο σε μια προβολή JSP για απόκριση.
  • Η Συντηρησιμότητα Κερδίζει: Η αρχιτεκτονική MVC σε JSP διευκολύνει τη συντήρηση, την επέκταση, τη δοκιμή μονάδων και την κεντρική πλοήγηση των εφαρμογών ιστού.
  • 🧪 Παράδειγμα εργασίας: Μια φόρμα σύνδεσης δημοσιεύεται στο Mvc_servlet, το οποίο αποθηκεύει το email και τον κωδικό πρόσβασης στο TestBean και στη συνέχεια την προωθεί στο mvc_success.jsp.
  • 🤖 Εκσυγχρονισμός Τεχνητής Νοημοσύνης: Οι βοηθοί τεχνητής νοημοσύνης βοηθούν πλέον στην αναδιάρθρωση του παλαιού κώδικα JSP MVC σε Spring MVC, δημιουργώντας ελεγκτές, DTO και δοκιμές κατ' απαίτηση.

MVC σε JSP (Archiδομή)

Τι είναι το MVC;

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

  • M σημαίνει μοντέλο
  • V σημαίνει Θέα
  • C σημαίνει Ελεγκτής

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

MVC Archiδομή
MVC Archiδιάγραμμα δομής

Γιατί να χρησιμοποιήσετε 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 και τον κωδικό πρόσβασης στη φόρμα και κάνετε κλικ στην επιλογή Υποβολή:

Σχεδιασμός Εφαρμογών JSP

Αφού κάνετε κλικ στην επιλογή Υποβολή, το αποτέλεσμα εμφανίζεται ως εξής:

Σχεδιασμός Εφαρμογών JSP

Όταν εισαγάγετε email και κωδικό πρόσβασης στην οθόνη και κάνετε κλικ στην επιλογή Υποβολή, οι λεπτομέρειες αποθηκεύονται στο TestBean. Από το TestBean, ανακτώνται στην επόμενη οθόνη για να εμφανιστεί το μήνυμα επιτυχίας. JSP παίζει τον ρόλο της παρουσίασης των δεδομένων και της παροχής της προβολής, ενώ το Servlet λειτουργεί ως Ελεγκτής και JavaΤο Bean χρησιμεύει ως Μοντέλο. Η κύρια επιχειρηματική λογική περιέχεται στο επίπεδο Μοντέλου.

Συχνές Ερωτήσεις

Το MVC σε JSP είναι ένα μοτίβο σχεδίασης που χωρίζει μια διαδικτυακή εφαρμογή σε τρία επίπεδα: Μοντέλο (δεδομένα και επιχειρηματική λογική), Προβολή (σελίδες JSP που αποδίδουν το περιβάλλον χρήστη) και Ελεγκτής (ένα Servlet που επεξεργάζεται αιτήματα και δρομολογεί απαντήσεις).

Το JSP ανήκει κυρίως στο επίπεδο View επειδή αποδίδει δυναμική HTML για τον χρήστη. Στο μοτίβο JSP Model 2, ένα Servlet χειρίζεται τον ρόλο του Controller και JavaΤα φασόλια χειρίζονται τον ρόλο του μοντέλου, keeping JSP χωρίς επιχειρηματική λογική.

Το Μοντέλο 1 τοποθετεί την επιχειρηματική λογική, την πρόσβαση σε δεδομένα και την παρουσίαση απευθείας μέσα σε σελίδες JSP. Το Μοντέλο 2 ακολουθεί το MVC: ένα Servlet λειτουργεί ως Ελεγκτής, JavaΤα beans σχηματίζουν το μοντέλο και τα αρχεία JSP αποδίδουν την προβολή. Το Model 2 είναι η συνιστώμενη προσέγγιση.

Το MVC βελτιώνει τη συντηρησιμότητα, τη δυνατότητα δοκιμής και την παραγωγικότητα της ομάδας. Κάθε επίπεδο εξελίσσεται ανεξάρτητα, η επιχειρηματική λογική παραμένει εκτός των αρχείων JSP, η πλοήγηση είναι συγκεντρωμένη στο Servlet και οι δοκιμές μονάδας καλύπτουν το μοντέλο χωρίς να χρειάζεται να περιστρέφεται ένα web container.

Το πρόγραμμα περιήγησης υποβάλλει μια φόρμα σε ένα Servlet. Το Servlet επικυρώνει τις εισόδους, δημιουργεί ή ενημερώνει μια φόρμα. JavaBean και το αποθηκεύει ως χαρακτηριστικό αιτήματος. Στη συνέχεια, προωθεί τον έλεγχο σε μια σελίδα JSP, η οποία διαβάζει το bean και αποδίδει την απόκριση.

Οι βοηθοί κωδικοποίησης τεχνητής νοημοσύνης αναλύουν παλαιότερα Servlets και αρχεία JSP, π.χ.tracενσωματωμένη επιχειρηματική λογική σε καθαρές υπηρεσίες, δημιουργία ελεγκτών Spring MVC και DTO και παραγωγή JUnit δοκιμές. Αυτό επιταχύνει τη μετάβαση από το JSP Model 2 σε σύγχρονα frameworks με λιγότερη χειροκίνητη επανεγγραφή.

Εργαλεία τεχνητής νοημοσύνης ενισχύουν τους ελεγκτές Spring MVC, δημιουργούν χάρτη αιτημάτωνpings, προτείνουν σχολιασμούς επικύρωσης, γράφουν πρότυπα Thymeleaf και δημιουργούν δοκιμές ενσωμάτωσης. Εντοπίζουν επίσης ζητήματα ασφαλείας, όπως η έλλειψη προστασίας CSRF ή ο μη ασφαλής χειρισμός εισόδου σε μεθόδους ελεγκτή.

Συνοψίστε αυτήν την ανάρτηση με: