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.


