MVC JSP:ssä (Archirakenne)

⚡ Älykäs yhteenveto

JSP:n MVC erottelee sovellusasiat malli-, näkymä- ja ohjainkerroksiin, joissa JSP renderöi näkymän, Servlet toimii ohjaimena ja JavaBeanit kapseloivat mallin puhtaita, testattavia ja ylläpidettäviä verkkosovelluksia varten.

  • 🧱 Huolien erottelu: Model sisältää dataa ja liiketoimintalogiikkaa, View renderöi käyttöliittymän ja Controller reitittää pyynnöt niiden välillä.
  • 📐 JSP-rooli: JSP-sivut renderöivät dynaamista merkintää View-kerrokselle, kun taas Servlet käsittelee pyyntöjen käsittelyä Controller-kerroksella.
  • 🔀 Pyyntöprosessi: Selain lähettää lomakkeen, Servlet validoi syötteet ja täyttää lomakkeen. JavaBean ja välittää sitten ohjauksen JSP-näkymään vastausta varten.
  • Ylläpidettävyys voittaa: JSP:n MVC-arkkitehtuuri helpottaa verkkosovellusten ylläpitoa, laajentamista, yksikkötestausta ja keskitettyä navigointia.
  • 🧪 Työesimerkki: Kirjautumislomake lähetetään Mvc_servlet-palvelimelle, joka tallentaa sähköpostiosoitteen ja salasanan TestBeaniin ja välittää sen sitten edelleen mvc_success.jsp-tiedostoon.
  • 🤖 Tekoälyn modernisointi: Tekoälyavustajat auttavat nyt vanhan JSP MVC -koodin uudelleenmuotoilussa Spring MVC:ksi, luoden ohjaimia, DTO:ita ja testejä tarvittaessa.

MVC JSP:ssä (Archirakenne)

Mikä on MVC?

MVC on lyhenne sanoista Model-View-Controller. Se on ohjelmistosuunnittelumalli, joka jakaa sovelluksen kolmeen toisiinsa liittyvään tasoon: liiketoimintalogiikkaan, esitystapaan ja dataan. MVC:ssä:

  • M tarkoittaa mallia
  • V tarkoittaa View-toimintoa
  • C tarkoittaa ohjainta

MVC on systemaattinen tapa rakentaa sovelluksia, joissa työnkulku alkaa View-tasolta. Käyttäjä tekee pyynnön, joka käsitellään Controller-tasolla ja lähetetään Model-tasolle tietojen lisäämistä tai hakemista varten. Model palauttaa sitten onnistumis- tai epäonnistumisvastauksen, jonka View renderöi käyttäjälle. MVC-arkkitehtuurikaavio on esitetty alla:

MVC Archirakenne
MVC Architecture Kaavio

Miksi käyttää MVC:tä ArchiJSP-rakenne?

Ennen hyppyäping Kun tarkastellaan MVC:n toimintaa JSP:ssä, on hyödyllistä ymmärtää, miksi kehittäjät omaksuvat tämän mallin. Liiketoimintalogiikan, tietokantakutsujen ja HTML:n yhdistäminen yhden JSP-sivun sisällä tuottaa nopeasti ylläpitämätöntä spagettikoodia. MVC korjaa tämän antamalla jokaiselle osa-alueelle oman tason:

  • Code helpompi lukea, koska jokaisella tiedostolla on yksi vastuualue.
  • Tiimit voivat työskennellä näkymän, ohjaimen ja mallin parissa rinnakkain ilman konflikteja.
  • Yksikkötestit kohdistuvat suoraan malliin koskematta JSP-renderöintiin.
  • Vaihtaaping JSP-näkymän luominen JSON-vastaukselle tai eri mallipohjalle on yksinkertaista.

Kuinka MVC toimii JSP:ssä

JSP-pohjaisessa MVC-sovelluksessa jokainen kerros vastaa tiettyä Java teknologia. JSP-tiedostot renderöivät näkymän, Servlet toimii ohjaimena ja JavaBean-komponentit kapseloivat mallin. Alla olevat osiot selittävät kunkin kerroksen vastuut.

Mallin kerros

  • Tämä on datakerros, joka sisältää järjestelmän liiketoimintalogiikan.
  • Se koostuu kaikista sovelluksen tiedoista.
  • Se edustaa myös sovelluksen tilaa.
  • Se on rakennettu JavaPavut tai POJO:t, jotka yhdistyvät tietokanta.
  • Ohjain kommunikoi mallin kanssa hakeakseen dataa ja välittää sen näkymäkerrokselle.
  • Malli muodostaa yhteyden tietokantaan ja tallentaa tiedot sinne.

Näytä taso

  • Tämä on sovelluksen esityskerros.
  • Se koostuu HTML:stä, JSP:stä, CSS:stä ja JavaSkripti.
  • Se näyttää yleensä sovelluksen käyttöliittymän.
  • Se näyttää ohjaimelta noudetut tiedot, jotka puolestaan ​​noutavat tietoja mallikerrosluokista.
  • Näkymäkerros renderöi tietoja sovelluksen käyttöliittymässä ilman liiketoimintalogiikkaa.

Ohjainkerros

  • Se toimii liitäntänä Viewin ja Modelin välillä.
  • Se sieppaa kaikki pyynnöt, jotka tulevat View-kerroksesta.
  • Se vastaanottaa pyynnöt näyttökerrokselta, käsittelee ne ja suorittaa pyynnön validoinnin.
  • Pyyntö välitetään mallikerrokselle tietojen käsittelyä varten. Kun pyyntö on käsitelty, malli lähettää tuloksen takaisin ohjaimelle tarvittavien tietojen kanssa, jotka sitten näytetään näkymässä.

MVC:n edut Archirakenne

MVC:n edut ovat:

  • Helppo huoltaa
  • Helppo pidentää
  • Helppo testata
  • Navigointiohjaus on keskitetty
  • Löyhä kytkentä kerrosten välillä tekee uudelleenfaktoroinnista turvallisempaa
  • Useiden tiimin jäsenten rinnakkainen kehitys on mahdollista

Esimerkki JSP-sovellussuunnittelusta MVC:n kanssa Archirakenne

Tässä esimerkissä näytämme, kuinka MVC-arkkitehtuuria käytetään JSP-sovelluksessa.

  • Otamme esimerkkinä lomakkeen, jossa on kaksi muuttujaa, ”sähköpostiosoite” ja ”salasana”, jotka edustavat Näytä-tasoamme.
  • Kun käyttäjä syöttää sähköpostiosoitteen ja salasanan ja napsauttaa Lähetä-painiketta, toiminto välitetään Mvc_servletille, jossa sähköpostiosoite ja salasana välitetään.
  • Mvc_servlet on Controller-kerros. Tässä Mvc_servletissä pyyntö lähetetään bean-objektille, joka toimii Model-kerroksena.
  • Sähköpostiosoitteen ja salasanan arvot asetetaan bean-komponenttiin ja tallennetaan myöhempää käyttöä varten.
  • Arvo noudetaan bean-komponentista ja näytetään View-tasolla.

Mvc_esimerkki.jsp (Näytä)

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

Koodin selitys:

Näytä taso:

Code Rivi 10–15: Tässä käytetään lomaketta, jossa on parametreina kaksi kenttää, ”sähköposti” ja ”salasana”. Pyyntö on välitettävä edelleen ohjaimelle Mvc_servlet.java, joka välitetään action-attribuutissa. HTTP-metodi, jonka kautta se välitetään, on POST.

Mvc_servlet.java (Ohjain)

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

}

Koodin selitys:

Ohjainkerros:

Code Rivi 14: Mvc_servlet laajentaa HttpServletiä.

Code Rivi 26: Koska käytetty metodi on POST, pyyntö siirtyy Servletin doPost-metodiin, joka käsittelee pyynnön ja tallentaa sen bean-objektiin nimellä testobj.

Code Rivi 34: Request-objektia käyttämällä asetamme attribuutin ”gurubean”, jolle annetaan testobj-arvo.

Code Rivi 35: Tässä käytämme RequestDispatcher-objektia välittääksemme onnistumisviestin mvc_success.jsp-tiedostoon.

TestBean.java (malli)

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


}

Koodin selitys:

Mallin kerros:

Code Rivi 7–17: Se sisältää sähköpostin ja salasanan hakijat ja asettajat, jotka ovat TestBean-luokan jäseniä.

Code Rivi 19–20: Se määrittää bean-luokan jäsenten sähköpostiosoitteen ja salasanan, jotka ovat String-tyyppiä.

Mvc_success.jsp (Tulosnäkymä)

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

Koodin selitys:

Code Rivi 12: Haemme attribuuttia käyttämällä Servletin doPost-metodissa asetettua pyyntöobjektia.

Code Rivi 13: Tulostamme bean-objektiin tallennetun tervetuloviestin ja sähköpostiosoitteen.

ulostulo

Kun suoritat yllä olevan koodin, saat seuraavan tulosteen:

Kun avaat tiedoston mvc_example.jsp, saat näkyviin lomakkeen, jossa on sähköpostiosoite- ja salasanakentät sekä Lähetä-painike.

Kun olet syöttänyt sähköpostiosoitteen ja salasanan lomakkeeseen ja painanut Lähetä:

JSP-sovellussuunnittelu

Kun olet napsauttanut Lähetä-painiketta, tuloste näkyy alla olevan kaltaisena:

JSP-sovellussuunnittelu

Kun syötät sähköpostiosoitteen ja salasanan näytölle ja napsautat Lähetä, tiedot tallennetaan TestBeaniin. TestBeanista ne noudetaan seuraavalla näytöllä onnistumisviestin näyttämiseksi. JSP esittää datan ja tarjoaa näkymän, kun taas Servlet toimii ohjaimena ja JavaBean toimii mallina. Tärkein liiketoimintalogiikka sisältyy mallikerrokseen.

UKK

JSP:n MVC on suunnittelumalli, joka jakaa verkkosovelluksen kolmeen tasoon: malli (data ja liiketoimintalogiikka), näkymä (JSP-sivut, jotka renderöivät käyttöliittymän) ja ohjain (servlet, joka käsittelee pyyntöjä ja reitittää vastaukset).

JSP kuuluu ensisijaisesti View-kerrokseen, koska se renderöi käyttäjälle dynaamista HTML:ää. JSP Model 2 -mallissa Servlet hoitaa Controller-roolin ja JavaPavut hoitavat mallin roolin, keeping JSP ilman liiketoimintalogiikkaa.

Malli 1 sijoittaa liiketoimintalogiikan, datan käytön ja esityksen suoraan JSP-sivuille. Malli 2 seuraa MVC:tä: Servlet toimii ohjaimena, JavaBeanit muodostavat mallin ja JSP-tiedostot renderöivät näkymän. Malli 2 on suositeltu lähestymistapa.

MVC parantaa ylläpidettävyyttä, testattavuutta ja tiimin tuottavuutta. Jokainen taso kehittyy itsenäisesti, liiketoimintalogiikka pysyy JSP-tiedostojen ulkopuolella, navigointi on keskitetty Servletiin ja yksikkötestit kattavat mallin ilman verkkokontin käynnistämistä.

Selain lähettää lomakkeen Servletille. Servlet validoi syötteet, luo tai päivittää lomakkeen. JavaBeanin ja tallentaa sen request-attribuuttina. Sitten se välittää ohjauksen JSP-sivulle, joka lukee beanin ja renderöi vastauksen.

Tekoälykoodausavustajat analysoivat vanhoja Servlettejä ja JSP-tiedostoja, esim.tracupotettu liiketoimintalogiikka puhtaisiin palveluihin, Spring MVC -ohjainten ja DTO:iden generointi ja tuottaminen JUnit testejä. Tämä nopeuttaa siirtymistä JSP Model 2:sta nykyaikaisiin kehyksiin vähemmällä manuaalisella uudelleenkirjoituksella.

Tekoälytyökalujen tukirakenteet Spring MVC -ohjaimille, pyyntökartan luominenpings, ehdottavat validointiannotaatioita, kirjoittavat Thymeleaf-malleja ja luovat integraatiotestejä. Ne havaitsevat myös tietoturvaongelmia, kuten puuttuvaa CSRF-suojausta tai turvatonta syötteen käsittelyä ohjainmetodeissa.

Tiivistä tämä viesti seuraavasti: