MVC w JSP (Archistruktura)
Co to jest MVC?
MVC to architektura, która oddziela logikę biznesową, prezentację i dane. W MVC,
- M oznacza Model
- V oznacza widok
- C oznacza kontroler.
MVC to systematyczny sposób korzystania z aplikacji, w którym przepływ rozpoczyna się od warstwy widoku, gdzie żądanie jest zgłaszane i przetwarzane w warstwie kontrolera, a następnie wysyłane do warstwy modelu w celu wstawienia danych i uzyskania komunikatu o powodzeniu lub niepowodzeniu. MVC Archischemat tecture jest przedstawiony poniżej:

Warstwa modelu
- Jest to warstwa danych, na którą składa się logika biznesowa systemu.
- Zawiera wszystkie dane aplikacji
- Reprezentuje również stan aplikacji.
- Składa się z klas, które mają połączenie z baza danych.
- Kontroler łączy się z modelem, pobiera dane i przesyła je do warstwy widoku.
- Model łączy się również z bazą danych i przechowuje dane w bazie danych, która jest z nim połączona.
Wyświetl warstwę
- To jest warstwa prezentacyjna.
- Składa się z HTML, JSP itp..
- Zwykle przedstawia interfejs użytkownika aplikacji.
- Służy do wyświetlania danych pobieranych ze sterownika, który z kolei pobiera dane z klas warstw modelu.
- Ta warstwa widoku pokazuje dane dotyczące interfejsu użytkownika aplikacji.
Warstwa kontrolera
- Działa jako interfejs pomiędzy widokiem i modelem.
- Przechwytuje wszystkie żądania przychodzące z warstwy widoku.
- Otrzymuje żądania z warstwy widoku, przetwarza je i dokonuje niezbędnej walidacji żądania.
- Następnie żądanie jest wysyłane do warstwy modelu w celu przetworzenia danych. Po przetworzeniu żądanie jest odsyłane do kontrolera wraz z wymaganymi informacjami i wyświetlane w widoku.
Zalety MVC Architektura
Zalety MVC to:
- Łatwe w utrzymaniu
- Łatwe do przedłużenia
- Łatwy do przetestowania
- Sterowanie nawigacją jest scentralizowane
Przykład projektowania aplikacji JSP z wykorzystaniem MVC Architektura
W tym przykładzie pokażemy, jak wykorzystać architekturę MVC w JSP.
- Bierzemy przykład formularza z dwiema zmiennymi „email” i „password”, który stanowi naszą warstwę widoku.
- Gdy użytkownik wprowadzi adres e-mail i hasło oraz kliknie przycisk „Wyślij”, akcja jest przekazywana do mvc_servlet, gdzie przekazywane są adres e-mail i hasło.
- Ten mvc_servlet jest warstwą kontrolera. Tutaj w mvc_servlet żądanie jest wysyłane do obiektu bean, który działa jako warstwa modelu.
- Wartości adresu e-mail i hasła są wpisywane do komponentu i przechowywane do późniejszego wykorzystania.
- Z komponentu bean pobierana jest wartość i wyświetlana w warstwie widoku.
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>
Wyjaśnienie kodu:
Zobacz warstwę:
Linia kodu 10-15: Tutaj bierzemy formularz, który ma dwa pola jako parametr „email” i „password”, a to żądanie musi zostać przekazane do kontrolera Mvc_servlet.java, który jest przekazywany w akcji. Metodą, przez którą jest przekazywane, jest metoda 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); } }
Wyjaśnienie kodu:
Warstwa kontrolera
Linia kodu 14:mvc_servlet rozszerza HttpServlet.
Linia kodu 26: Ponieważ używaną metodą jest POST, żądanie trafia do metody doPost serwletu, która przetwarza żądania i zapisuje je w obiekcie bean jako testobj.
Linia kodu 34: Używając obiektu żądania, ustawiamy atrybut jako gurubean, któremu przypisuje się wartość testobj.
Linia kodu 35: W tym przypadku używamy obiektu rozsyłającego żądania do przekazania komunikatu o powodzeniu do pliku 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"; }
Wyjaśnienie kodu:
Warstwa modelu:
Linia kodu 7-17: Zawiera metody pobierania i ustawiania adresu e-mail i hasła, które są członkami klasy Test Bean
Linia kodu 19-20: Definiuje adres e-mail i hasło członka typu string w klasie 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>
Wyjaśnienie kodu:
Linia kodu 12: atrybut uzyskujemy za pomocą obiektu żądania, który został ustawiony w metodzie doPost serwletu.
Linia kodu 13: Drukujemy wiadomość powitalną i identyfikator e-mail, które zostały zapisane w obiekcie bean
Wyjście:
Po wykonaniu powyższego kodu otrzymasz następujący wynik:
Po kliknięciu mvc_example.jsp otrzymasz formularz z adresem e-mail i hasłem oraz przyciskiem „Prześlij”.
Po wpisaniu adresu e-mail i hasła do formularza i kliknięciu przycisku „Prześlij”
Po kliknięciu przycisku Prześlij dane wyjściowe zostaną pokazane poniżej
Wyjście:
Po wpisaniu adresu e-mail i hasła na ekranie i kliknięciu przycisku „Prześlij” dane zostaną zapisane w TestBean, a następnie pobrane z TestBean na następnym ekranie, aby wyświetlić komunikat o powodzeniu operacji.
Podsumowanie
W tym artykule poznaliśmy architekturę MVC, czyli Model View Controller.
JSP pełni rolę prezentacji danych i administratora. Jest to interfejs pomiędzy modelem a widokiem, natomiast model łączy się zarówno ze sterownikiem, jak i bazą danych. Główna logika biznesowa jest obecna w warstwie modelu.