1⃣Пользовательский запрос
Пользователь отправляет HTTP-запрос (например, через веб-браузер).
2⃣Сервлет
Запрос попадает к сервлету, который обрабатывает бизнес-логику. Сервлет может получать данные от пользователя, обрабатывать их, взаимодействовать с базой данных или другими компонентами приложения.
3⃣Передача данных на JSP
После обработки запроса сервлет перенаправляет его на JSP-страницу, передавая необходимые данные (атрибуты) для отображения.
4⃣JSP
JSP-страница генерирует HTML-ответ, используя переданные данные, и отправляет его обратно пользователю.
🚩Почему это нужно
1⃣Разделение задач
Сервлеты отвечают за обработку бизнес-логики, а JSP - за представление данных. Это позволяет разделить код на более управляемые части и облегчить сопровождение.
2⃣Повторное использование кода
Логику обработки данных можно легко использовать повторно в различных сервлетах, а JSP-страницы могут использоваться для разных представлений одних и тех же данных.
3⃣Упрощение разработки
Разработчики могут сосредоточиться на своих частях задачи (логика или представление), что ускоряет разработку и делает код более читабельным.
🚩Пример взаимодействия
Пользователь отправляет запрос
GET /users
Сервлет
UserServlet@WebServlet("/users")
public class UserServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Логика получения списка пользователей
List<User> users = UserService.getUsers();
// Передача данных на JSP
request.setAttribute("users", users);
RequestDispatcher dispatcher = request.getRequestDispatcher("users.jsp");
dispatcher.forward(request, response);
}
}JSP
users.jsp<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Список пользователей</title>
</head>
<body>
<h1>Список пользователей</h1>
<ul>
<c:forEach var="user" items="${users}">
<li>${user.name} - ${user.email}</li>
</c:forEach>
</ul>
</body>
</html>
Ставь 👍 и забирай 📚 Базу знаний