MVC в JSP (Archiтекстура)

⚡ Розумний підсумок

MVC в JSP розділяє завдання програми на рівні Моделі, Представлення та Контролера, де JSP відтворює Представлення, сервлет діє як Контролер, а JavaБіни інкапсулюють Модель для чистих, тестованих та зручних у підтримці вебзастосунків.

  • 🧱 Відокремлення концернів: Модель містить дані та бізнес-логіку, View рендерить інтерфейс користувача, а Controller маршрутизує запити між ними.
  • 📐 Роль JSP: JSP-сторінки відображають динамічну розмітку для рівня View, тоді як сервлет обробляє запити на рівні Controller.
  • 🔀 Потік запитів: Браузер надсилає форму, сервлет перевіряє введені дані, заповнює JavaBean, а потім пересилає керування до JSP-представлення для отримання відповіді.
  • Переваги ремонтопридатності: Архітектура MVC в JSP спрощує централізовану підтримку, розширення, модульне тестування та навігацію веб-застосунків.
  • 🧪 Робочий приклад: Форма входу надсилається до Mvc_servlet, який зберігає електронну пошту та пароль у TestBean, а потім пересилає до mvc_success.jsp.
  • 🤖 Модернізація ШІ: Помічники штучного інтелекту тепер допомагають рефакторувати застарілий код JSP MVC у Spring MVC, генеруючи контролери, DTO та тести на вимогу.

MVC в JSP (Archiтекстура)

Що таке MVC?

MVC розшифровується як Model-View-Controller (Модель-Вид-Контролер). Це шаблон проектування програмного забезпечення, який розділяє застосунок на три взаємопов'язані шари: бізнес-логіка, презентація та дані. У MVC:

  • M означає Модель
  • V означає «Вид»
  • C означає Контролер

MVC — це систематичний спосіб створення застосунків, де потік починається на рівні View. Запит генерується користувачем, обробляється на рівні Controller та надсилається на рівень Model для вставки або отримання даних. Потім Model повертає відповідь про успіх або невдачу, яку View відображає для користувача. Діаграма архітектури MVC представлена ​​нижче:

MVC Archiтектура
MVC Archiдіаграма текстури

Навіщо використовувати MVC ArchiТекстура в JSP?

Перед стрибкомping Розглядаючи, як MVC працює в JSP, корисно зрозуміти, чому розробники застосовують цей шаблон. Змішування бізнес-логіки, викликів бази даних та HTML всередині однієї JSP-сторінки швидко призводить до непідтримуваного спагеті-коду. MVC виправляє це, надаючи кожному аспекту окремий рівень:

  • Code стає легшим для читання, оскільки кожен файл має окрему відповідальність.
  • Команди можуть працювати над Представленням, Контролером та Моделлю паралельно без конфліктів.
  • Модульні тести безпосередньо орієнтовані на Модель, не торкаючись JSP-рендерингу.
  • свопping JSP-представлення для відповіді JSON або іншого механізму шаблонів є простим.

Як працює MVC в JSP

У MVC-додатку на основі JSP кожен шар відповідає певному Java технологія. JSP-файли відображають View, сервлет діє як контролер, а JavaБіни інкапсулюють Модель. У розділах нижче пояснюються обов'язки кожного шару.

Рівень моделі

  • Це рівень даних, який містить бізнес-логіку системи.
  • Він складається з усіх даних програми.
  • Він також представляє стан програми.
  • Він побудований з JavaБіни або POJO, що підключаються до база даних.
  • Контролер взаємодіє з Моделлю для отримання даних та пересилає їх на рівень View.
  • Модель підключається до бази даних та зберігає в ній дані.

Переглянути шар

  • Це рівень презентації застосунку.
  • Він складається з HTML, JSP, CSS та JavaСценарій.
  • Зазвичай він представляє інтерфейс користувача програми.
  • Він відображає дані, отримані з контролера, який, у свою чергу, отримує дані з класів шарів моделі.
  • Шар View відображає дані в інтерфейсі користувача застосунку без використання бізнес-логіки.

Рівень контролера

  • Він діє як інтерфейс між View і Model.
  • Він перехоплює всі запити, що надходять з рівня View.
  • Він отримує запити від рівня View, обробляє їх та виконує перевірку запиту.
  • Запит пересилається на рівень Моделі для обробки даних. Після обробки запиту Модель надсилає результат назад до Контролера з необхідною інформацією, яку потім відображає Представлення.

Переваги MVC Archiтектура

Перевагами MVC є:

  • Простота в обслуговуванні
  • Легко подовжується
  • Легко перевірити
  • Керування навігацією централізоване
  • Слабкий зв'язок між шарами робить рефакторинг безпечнішим
  • Паралельна розробка можлива кількома членами команди

Приклад розробки додатків JSP з MVC Archiтектура

У цьому прикладі ми покажемо, як використовувати архітектуру MVC у JSP-застосунку.

  • Ми беремо для прикладу форму з двома змінними, «email» та «password», які представляють наш шар View.
  • Після того, як користувач введе електронну пошту та пароль і натисне «Надіслати», дія передається до Mvc_servlet, куди передаються електронна пошта та пароль.
  • Mvc_servlet – це рівень контролера. Тут, у Mvc_servlet, запит надсилається до об'єкта bean, який діє як рівень моделі.
  • Значення електронної пошти та пароля встановлюються в bean-компонент і зберігаються для подальшого використання.
  • З біну значення витягується та відображається на шарі View.

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>

Пояснення коду:

Переглянути шар:

Code Рядок 10-15: Тут ми беремо форму, яка має два поля як параметри: «email» та «password», і цей запит потрібно переслати до контролера Mvc_servlet.java, який передається в атрибуті action. HTTP-метод, через який він передається, — 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);
	}

}

Пояснення коду:

Рівень контролера:

Code Лінія 14: Mvc_servlet розширює HttpServlet.

Code Лінія 26: Оскільки використовується метод POST, запит надходить до методу doPost сервлета, який обробляє запит і зберігає його в об'єкті bean як testobj.

Code Лінія 34: Використовуючи об'єкт запиту, ми встановлюємо атрибут «gurubean», якому присвоюється значення testobj.

Code Лінія 35: Тут ми використовуємо об'єкт RequestDispatcher для пересилання повідомлення про успіх до 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";


}

Пояснення коду:

Рівень моделі:

Code Рядок 7-17: Він містить методи отримання та встановлення електронної пошти та пароля, які є членами класу TestBean.

Code Рядок 19-20: Він визначає електронну пошту та пароль учасників типу String у класі 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>

Пояснення коду:

Code Лінія 12: Ми отримуємо атрибут за допомогою об'єкта запиту, який був встановлений у методі doPost сервлета.

Code Лінія 13: Ми друкуємо вітальне повідомлення та ідентифікатор електронної пошти, які були збережені в об'єкті bean.

Вихід

Коли ви виконуєте наведений вище код, ви отримуєте такий результат:

Коли ви відкриваєте mvc_example.jsp, ви отримуєте форму з полями електронної пошти та пароля, а також кнопку «Надіслати».

Після того, як ви введете електронну пошту та пароль у форму та натиснете «Надіслати»:

Дизайн додатків JSP

Після натискання кнопки «Надіслати» результат буде показано нижче:

Дизайн додатків JSP

Коли ви вводите електронну адресу та пароль на екрані та натискаєте кнопку «Надіслати», дані зберігаються в TestBean. З TestBean вони отримуються на наступному екрані для відображення повідомлення про успішне виконання. JSP відіграє роль представлення даних та забезпечення View, тоді як сервлет діє як контролер та JavaБін слугує Моделлю. Основна бізнес-логіка міститься на рівні Моделі.

Поширені запитання

MVC в JSP — це шаблон проектування, який розділяє веб-застосунок на три рівні: Модель (дані та бізнес-логіка), Вид (JSP-сторінки, що відображають інтерфейс користувача) та Контролер (сервлет, який обробляє запити та маршрутизує відповіді).

JSP переважно належить до рівня View, оскільки він відтворює динамічний HTML для користувача. У шаблоні JSP Model 2 сервлет обробляє роль контролера та JavaБіни обробляють роль Моделі, keeping JSP без бізнес-логіки.

Модель 1 розміщує бізнес-логіку, доступ до даних та презентацію безпосередньо всередині JSP-сторінок. Модель 2 відповідає MVC: сервлет діє як контролер, JavaБіни формують Модель, а JSP-файли відображають Представлення. Модель 2 є рекомендованим підходом.

MVC покращує зручність обслуговування, тестування та продуктивність команди. Кожен шар розвивається незалежно, бізнес-логіка залишається поза JSP-файлами, навігація централізована в сервлеті, а модульні тести охоплюють Модель без запуску веб-контейнера.

Браузер надсилає форму до сервлета. Сервлет перевіряє вхідні дані, створює або оновлює JavaBean та зберігає його як атрибут запиту. Потім він пересилає керування на JSP-сторінку, яка зчитує bean та відображає відповідь.

Помічники ШІ-кодування аналізують застарілі сервлети та JSP-файли, наприкладtracвбудовувати бізнес-логіку в чисті сервіси, генерувати контролери Spring MVC та DTO, а також створювати JUnit тести. Це пришвидшує міграцію з JSP Model 2 на сучасні фреймворки з меншою кількістю ручного переписування.

Інструменти штучного інтелекту, що працюють як сховища, контролери Spring MVC, генерують карту запитівpingс, пропонують анотації перевірки, пишуть шаблони Thymeleaf та створюють інтеграційні тести. Вони також виявляють проблеми безпеки, такі як відсутність захисту CSRF або небезпечна обробка вхідних даних у методах контролера.

Підсумуйте цей пост за допомогою: