MVC JSP:ssä (Archirakenne)
Mikä on MVC?
MVC on arkkitehtuuri, joka erottaa liiketoimintalogiikan, esityksen ja datan. MVC:ssä
- M tarkoittaa mallia
- V tarkoittaa View
- C tarkoittaa ohjainta.
MVC on systemaattinen tapa käyttää sovellusta, jossa kulku alkaa näkymäkerroksesta, jossa pyyntö nostetaan ja käsitellään ohjainkerroksessa ja lähetetään mallikerrokseen tietojen lisäämiseksi ja onnistumis- tai epäonnistumisviestin palauttamiseksi. MVC Archirakennekaavio on esitetty alla:
Mallin kerros
- Tämä on tietokerros, joka koostuu järjestelmän liiketoimintalogiikasta.
- Se koostuu kaikista sovelluksen tiedoista
- Se edustaa myös sovelluksen tilaa.
- Se koostuu luokista, joilla on yhteys tietokanta.
- Ohjain muodostaa yhteyden malliin ja hakee tiedot ja lähettää sen näkymäkerrokseen.
- Malli muodostaa yhteyden myös tietokantaan ja tallentaa tiedot siihen yhdistettyyn tietokantaan.
Näytä taso
- Tämä on esitystaso.
- Se koostuu HTML:stä, JSP:stä jne. siihen.
- Se näyttää tavallisesti sovelluksen käyttöliittymän.
- Sitä käytetään näyttämään tiedot, jotka haetaan ohjaimesta, joka puolestaan hakee tietoja mallikerrosluokista.
- Tämä näkymätaso näyttää sovelluksen käyttöliittymän tiedot.
Ohjainkerros
- Se toimii liitäntänä Viewin ja Modelin välillä.
- Se sieppaa kaikki näkymästä tulevat pyynnöt.
- Se vastaanottaa pyynnöt näkymäkerrokselta ja käsittelee pyynnöt ja tekee pyynnölle tarvittavan validoinnin.
- Nämä pyynnöt lähetetään edelleen mallikerrokseen tietojen käsittelyä varten, ja kun pyyntö on käsitelty, se lähettää vaaditut tiedot takaisin rekisterinpitäjälle ja näytetään vastaavasti näkymässä.
MVC:n edut Archirakenne
MVC:n edut ovat:
- Helppo huoltaa
- Helppo pidentää
- Helppo testata
- Navigointiohjaus on keskitetty
Esimerkki JSP-sovellussuunnittelusta MVC:n kanssa Archirakenne
Tässä esimerkissä aiomme näyttää kuinka käyttää MVC-arkkitehtuuria JSP:ssä.
- Otamme esimerkin lomakkeesta, jossa on kaksi muuttujaa "email" ja "password", joka on näkymäkerroksemme.
- Kun käyttäjä syöttää sähköpostiosoitteen ja salasanan ja napsauttaa Lähetä, toiminto välitetään mvc_servletissä, jossa sähköposti ja salasana välitetään.
- Tämä mvc_servlet on ohjainkerros. Täällä mvc_servletissä pyyntö lähetetään papuobjektille, joka toimii mallikerroksena.
- Sähköposti- ja salasanaarvot asetetaan papuun ja tallennetaan myöhempää tarkoitusta varten.
- Arvo noudetaan papusta ja näytetään näkymäkerroksessa.
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>
Koodin selitys:
Näytä taso:
Koodirivit 10-15: Tässä otamme lomakkeen, jossa on kaksi kenttää parametreina "email" ja "password", ja tämä pyyntö on välitettävä ohjaimelle Mvc_servlet.java, joka välitetään toiminnassa. Menetelmä, jonka kautta se välitetään, on POST-menetelmä.
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); } }
Koodin selitys:
Ohjainkerros
Koodirivi 14:mvc_servlet laajentaa HttpServlet-sovellusta.
Koodirivi 26: Koska käytetty menetelmä on POST, pyyntö tulee servletin doPost-metodiin, joka käsittelee pyynnöt ja tallentaa papuobjektiin testobj:na.
Koodirivi 34: Pyyntöobjektia käyttämällä asetamme attribuutin gurubean, jolle on määritetty testobj:n arvo.
Koodirivi 35: Tässä käytämme request dispatcher -objektia onnistumisviestin välittämiseen mvc_success.jsp:lle
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"; }
Koodin selitys:
Mallin kerros:
Koodirivit 7-17: Se sisältää sähköpostin ja salasanan saajat ja asettajat, jotka ovat Test Bean -luokan jäseniä
Koodirivit 19-20: Se määrittää papuluokan jäsenten sähköpostiosoitteen ja merkkijonotyypin salasanan.
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>
Koodin selitys:
Koodirivi 12: saamme attribuutin pyyntöobjektilla, joka on asetettu servletin doPost-metodissa.
Koodirivi 13: Tulostamme tervetuloviestin ja sähköpostitunnuksen, jonka papuobjektiin on tallennettu
lähtö:
Kun suoritat yllä olevan koodin, saat seuraavan tulosteen:
Kun napsautat mvc_example.jsp, saat lomakkeen, jossa on sähköpostiosoite ja salasana lähetyspainikkeella.
Kun olet syöttänyt lomakkeeseen sähköpostiosoitteen ja salasanan ja napsauta sitten Lähetä
Kun napsautat lähetä, tulos näytetään alla
lähtö:
Kun kirjoitat sähköpostiosoitteen ja salasanan näytölle ja napsautat sitten Lähetä, tiedot tallennetaan TestBeaniin ja TestBeanista ne haetaan seuraavalle näytölle onnistumisviestin saamiseksi.
Yhteenveto
Tässä artikkelissa olemme oppineet MVC eli Model View Controller -arkkitehtuurista.
JSP toimii tietojen esittäjänä ja rekisterinpitäjänä. Se on rajapinta mallin ja näkymän välillä, kun taas malli muodostaa yhteyden sekä ohjaimeen että tietokantaan. Pääliiketoiminnan logiikka on mallikerroksessa.