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:

MVC Architektura
MVC ArchiSchemat tecture

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”

Projekt aplikacji JSP

Po kliknięciu przycisku Prześlij dane wyjściowe zostaną pokazane poniżej

Projekt aplikacji JSP

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.