MVC JSP-s (Architektuur)

⚡ Nutikas kokkuvõte

JSP-s MVC jagab rakendusega seotud probleemid mudeli, vaate ja kontrolleri kihtideks, kus JSP renderdab vaate, Servlet toimib kontrollerina ja JavaBeanid kapseldavad mudeli puhaste, testitavate ja hooldatavate veebirakenduste jaoks.

  • 🧱 Murede lahusus: Model hoiab andmeid ja äriloogikat, View renderdab kasutajaliidest ja Controller suunab päringuid nende vahel.
  • 📐 JSP roll: JSP-lehed renderdavad vaatekihi jaoks dünaamilist märgistust, samal ajal kui Servlet tegeleb päringute töötlemisega kontrollerikihil.
  • 🔀 Taotlusvoog: Brauser esitab vormi, Servlet valideerib sisendid, täidab lahtri. JavaBean, seejärel edastab juhtimise vastuse saamiseks JSP-vaatele.
  • Hooldatavus võidab: JSP MVC arhitektuur muudab veebirakenduste haldamise, laiendamise, ühiktestimise ja tsentraalselt navigeerimise lihtsamaks.
  • 🧪 Töötav näide: Sisselogimisvorm saadetakse Mvc_servleti, mis salvestab e-posti aadressi ja parooli TestBeanis ning edastab need seejärel mvc_success.jsp-le.
  • 🤖 Tehisintellekti moderniseerimine: Tehisintellekti assistendid aitavad nüüd pärand-JSP MVC koodi Spring MVC-ks ümber kujundada, genereerides nõudmisel kontrollereid, DTO-sid ja teste.

MVC JSP-s (Architektuur)

Mis on MVC?

MVC on lühend sõnadest Model-View-Controller. See on tarkvara disainimuster, mis jagab rakenduse kolmeks omavahel ühendatud kihiks: äriloogika, esitlus ja andmed. MVC-s:

  • M tähistab mudelit
  • V tähistab vaadet
  • C tähistab kontrollerit

MVC on süstemaatiline viis rakenduste loomiseks, kus voog algab vaatekihilt. Kasutaja esitab päringu, see töödeldakse kontrollerikihis ja saadetakse mudelikihile andmete sisestamiseks või toomiseks. Seejärel tagastab mudel edu või ebaõnnestumise vastuse, mille vaade kasutajale kuvab. MVC arhitektuuri diagramm on esitatud allpool:

MVC Architektuur
MVC Architektuuri diagramm

Miks kasutada MVC-d? ArchiJSP-s olev struktuur?

Enne hüpetping Kui süveneda MVC JSP-s toimimisse, on kasulik mõista, miks arendajad seda mustrit kasutavad. Äriloogika, andmebaasikõnede ja HTML-i segamine ühel JSP-lehel tekitab kiiresti hooldamatu spagettikoodi. MVC lahendab selle, andes igale probleemile oma kihi:

  • Code muutub lihtsamini loetavaks, kuna igal failil on üks vastutusala.
  • Meeskonnad saavad vaate, kontrolleri ja mudeli kallal paralleelselt töötada ilma konfliktideta.
  • Ühiktestid on suunatud otse mudelile, ilma JSP renderdamist puudutamata.
  • Vahetamaping JSON-vastuse või mõne muu mallimootori JSP-vaate loomine on lihtne.

Kuidas MVC JSP-s töötab

JSP-põhises MVC-rakenduses seob iga kiht kindla kihi. Java tehnoloogia. JSP-failid renderdavad vaadet, Servlet toimib kontrollerina ja JavaMudelit kapseldavad komponendid (beanid). Allolevates osades selgitatakse iga kihi kohustusi.

Mudelikiht

  • See on andmekiht, mis sisaldab süsteemi äriloogikat.
  • See koosneb kõigist rakenduse andmetest.
  • See näitab ka rakenduse olekut.
  • See on ehitatud JavaOad või POJO-d, mis ühenduvad andmebaas.
  • Kontroller suhtleb mudeliga andmete toomiseks ja edastab need vaatekihile.
  • Mudel loob ühenduse andmebaasiga ja salvestab sinna andmed.

Vaata kihti

  • See on rakenduse esitluskiht.
  • See koosneb HTML-ist, JSP-st, CSS-ist ja JavaSkript.
  • Tavaliselt kuvab see rakenduse kasutajaliidese.
  • See kuvab kontrollerilt hangitud andmeid, mis omakorda hangivad andmeid mudeli kihi klassidest.
  • Vaatekiht renderdab andmeid rakenduse kasutajaliideses ilma äriloogikat sisaldamata.

Kontrolleri kiht

  • See toimib vaate ja mudeli vahelise liidesena.
  • See pealtkuulab kõik päringud, mis tulevad vaatekihilt.
  • See võtab vastu vaatekihilt päringuid, töötleb neid ja teostab päringu valideerimise.
  • Päring edastatakse andmetöötluseks mudelikihile. Kui päring on töödeldud, saadab mudel tulemuse koos vajaliku teabega tagasi kontrollerile, mille seejärel vaade kuvab.

MVC eelised Architektuur

MVC eelised on järgmised:

  • Lihtne hooldada
  • Lihtne pikendada
  • Lihtne testida
  • Navigatsiooni juhtimine on tsentraliseeritud
  • Kihtide vaheline lahtine sidumine muudab refaktoreerimise turvalisemaks
  • Mitme meeskonnaliikme paralleelne arendus on võimalik

Näide JSP-rakenduse kujundamisest MVC-ga Architektuur

Selles näites näitame, kuidas kasutada MVC arhitektuuri JSP-rakenduses.

  • Võtame näiteks vormi, millel on kaks muutujat, „e-post” ja „parool”, mis esindavad meie vaatekihti.
  • Kui kasutaja sisestab e-posti aadressi ja parooli ning klõpsab nuppu „Esita“, edastatakse toiming Mvc_servletile, kus edastatakse e-posti aadress ja parool.
  • Mvc_servlet on kontrolleri kiht. Siin Mvc_servletis saadetakse päring oa-objektile, mis toimib mudeli kihina.
  • E-posti aadressi ja parooli väärtused määratakse oasse ja salvestatakse edaspidiseks kasutamiseks.
  • Beanist hangitakse väärtus ja see kuvatakse vaatekihis.

Mvc_example.jsp (Vaade)

<%@ 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>

Koodi selgitus:

Vaata kihti:

Code Rida 10-15: Siin võtame vormi, millel on parameetritena kaks välja, „email” ja „password”, ning see päring tuleb edastada kontrollerile Mvc_servlet.java, mis edastatakse atribuudis action. HTTP-meetod, mille kaudu see edastatakse, on POST.

Mvc_servlet.java (kontroller)

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);
	}

}

Koodi selgitus:

Kontrolleri kiht:

Code Rida 14: Mvc_servlet laiendab HttpServleti.

Code Rida 26: Kuna kasutatav meetod on POST, siseneb päring Servleti doPost meetodisse, mis töötleb päringu ja salvestab selle bean-objekti nimega testobj.

Code Rida 34: Päringuobjekti abil määrame atribuudi „gurubean”, millele omistatakse testobj väärtus.

Code Rida 35: Siin kasutame RequestDispatcher objekti, et edastada eduteade failile mvc_success.jsp.

TestBean.java (mudel)

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";


}

Koodi selgitus:

Mudelikiht:

Code Rida 7-17: See sisaldab e-posti aadressi ja parooli hankijaid ja määrajaid, mis on TestBean klassi liikmed.

Code Rida 19-20: See määratleb ubade klassi liikmete e-posti aadressi ja parooli, mille tüüp on String.

Mvc_success.jsp (tulemuste vaade)

<%@ 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>

Koodi selgitus:

Code Rida 12: Atribuudi hankimiseks kasutame Servleti doPost meetodis määratud päringuobjekti.

Code Rida 13: Prindime tervitussõnumi ja e-posti aadressi, mis on salvestatud oa-objekti.

Väljund

Kui käivitate ülaltoodud koodi, saate järgmise väljundi:

Kui avate faili mvc_example.jsp, kuvatakse vorm e-posti aadressi ja parooli väljadega ning nupuga „Esita”.

Kui olete vormile sisestanud e-posti aadressi ja parooli ning klõpsanud nuppu „Esita”:

JSP rakenduse disain

Pärast nupule „Esita” klõpsamist kuvatakse väljund järgmiselt:

JSP rakenduse disain

Kui sisestate ekraanile e-posti aadressi ja parooli ning klõpsate nuppu „Esita“, salvestatakse andmed TestBeani. TestBeanist laaditakse need järgmisel ekraanile, et kuvada eduteade. JSP mängib andmete esitamise ja vaate pakkumise rolli, samal ajal kui Servlet toimib kontrollerina ja JavaBean toimib mudelina. Peamine äriloogika asub mudeli kihis.

KKK

JSP-s kasutatav MVC on disainimuster, mis jagab veebirakenduse kolmeks kihiks: mudel (andmed ja äriloogika), vaade (JSP lehed, mis renderdavad kasutajaliidest) ja kontroller (servlet, mis töötleb päringuid ja suunab vastuseid).

JSP kuulub peamiselt vaatekihti, kuna see renderdab kasutajale dünaamilist HTML-i. JSP Model 2 mustris tegeleb Servlet kontrolleri rolliga ja JavaBeanid täidavad modelli rolli, keeping Äriloogikast vaba JSP.

Mudel 1 paigutab äriloogika, andmetele juurdepääsu ja esitluse otse JSP-lehtedele. Mudel 2 järgib MVC-d: Servlet toimib kontrollerina, JavaBeanid moodustavad mudeli ja JSP-failid renderdavad vaate. Soovitatav on kasutada mudel 2.

MVC parandab hooldatavust, testitavust ja meeskonna tootlikkust. Iga kiht areneb iseseisvalt, äriloogika jääb JSP-failidest välja, navigeerimine on tsentraliseeritud Servletis ja ühiktestid hõlmavad mudelit ilma veebikonteinerit käivitamata.

Brauser saadab vormi Servletile. Servlet valideerib sisendid, loob või uuendab vormi. JavaBean ja salvestab selle päringu atribuudina. Seejärel edastab see juhtimise JSP-lehele, mis loeb beani ja renderdab vastuse.

Tehisintellektiga kodeerimisassistendid analüüsivad pärandservlette ja JSP-faile, nttract integreeritud äriloogika puhastesse teenustesse, Spring MVC kontrollerite ja DTO-de genereerimine ning JUnit testid. See kiirendab migratsiooni JSP Model 2-lt tänapäevastele raamistikele, vähendades käsitsi ümberkirjutamise vajadust.

Tehisintellekti tööriistad tellivad Spring MVC kontrollereid, genereerivad päringute kaardipings, pakuvad valideerimisannotatsioone, kirjutavad Thymeleafi malle ja loovad integratsiooniteste. Samuti tuvastavad nad turvaprobleeme, näiteks puuduvat CSRF-kaitset või ebaturvalist sisendi käsitlemist kontrolleri meetodites.

Võta see postitus kokku järgmiselt: