TGViewer
Java | Вопросы собесов Java | Вопросы собесов @easy_java_ru · 11.3K subscribers
Post #708 3.49K
🤔 Опиши общие практические принципы работы с JSP?

Работа с JSP (JavaServer Pages) включает в себя множество принципов и практик, которые помогают разработчикам создавать поддерживаемые, эффективные и безопасные веб-приложения.

🚩Разделение логики и представления

🟠Принцип MVC (Model-View-Controller)
Использование шаблона проектирования MVC помогает отделить логику приложения (модель) от его представления (вид) и управления (контроллер). В JSP это достигается следующими способами:
Модель: Логика обработки данных, обычно реализованная в JavaBeans, POJO или сервисах.
Вид: JSP-страницы, которые используются для отображения данных пользователю.
Контроллер: Серверные компоненты, такие как сервлеты, которые обрабатывают запросы, взаимодействуют с моделью и передают данные на вид.
// Сервлет-контроллер
@WebServlet("/greeting")
public class GreetingServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String name = request.getParameter("name");
if (name == null || name.isEmpty()) {
name = "Guest";
}
request.setAttribute("greeting", "Hello, " + name + "!");
request.getRequestDispatcher("/greeting.jsp").forward(request, response);
}
}

<!-- greeting.jsp -->
<%@ page contentType="text/html;charset=UTF-8" %>
<html>
<head>
<title>Greeting</title>
</head>
<body>
<h1><%= request.getAttribute("greeting") %></h1>
</body>
</html>


🟠Использование JSTL и EL
JSTL (JavaServer Pages Standard Tag Library)
JSTL предоставляет стандартный набор тегов для выполнения общих задач, таких как условные операторы, циклы, работа с коллекциями, форматирование и интернационализация.
EL (Expression Language)
EL используется для упрощения доступа к данным в JSP, таких как атрибуты запроса, сессии и контекста приложения.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<title>Greeting</title>
</head>
<body>
<c:if test="${not empty greeting}">
<h1>${greeting}</h1>
</c:if>
</body>
</html>


🟠Минимизация использования скриплетов
Использование скриплетов <% %> (вставки Java-кода в JSP) не рекомендуется, так как это затрудняет поддержку и чтение кода. Вместо этого используйте JSTL и EL для выполнения большинства задач.

🟠Управление сессиями
Сессии используются для сохранения состояния пользователя между запросами. Однако, они потребляют ресурсы сервера, поэтому используйте их разумно.
Отключение сессий при ненадобности: Если страница не требует использования сессий, отключите их. Минимизация данных сессии: Храните в сессии только необходимые данные.
<%@ page session="false" %>


🟠Обработка ошибок и исключений
Реализуйте глобальную обработку ошибок в дескрипторе развертывания web.xml и на уровне страниц.
<!-- web.xml -->
<error-page>
<error-code>404</error-code>
<location>/error404.jsp</location>
</error-page>
<error-page>
<exception-type>java.lang.Throwable</exception-type>
<location>/error.jsp</location>
</error-page>


🟠Безопасность
Защита от XSS (Cross-Site Scripting): Экранируйте выводимые данные.
Защита от CSRF (Cross-Site Request Forgery): Используйте токены для подтверждения действий.
<c:out value="${param.name}" />


🟠Оптимизация производительности
Кеширование: Кешируйте часто используемые данные для снижения нагрузки на сервер и базу данных.
Минимизация размера ответа: Сжимайте HTML, CSS и JavaScript.

Ставь 👍 и забирай 📚 Базу знаний
  • 👍 6
  • ❤ 3
  • 🤔 1
  • 🤯 1
More from @easy_java_ru
  1. Oct 9, 2026🤔 Что такое «HTML»? HTML (HyperText Markup Language) — это язык разметки, используемый дл…
  2. Oct 9, 2026🤔 В чём различие между LeftJoin , RightJoin и InnerJoin? LEFT JOIN, RIGHT JOIN и INNER JO…
  3. Oct 8, 2026Post #2955
  4. Oct 8, 2026🤔 Что такое поток "демон"? Демон-поток — это поток, который: - Работает на фоне (например…
  5. Oct 7, 2026🤔 Может ли Entity-класс быть абстрактным? Да, Entity может быть абстрактным, если он служ…
  6. Oct 7, 2026🤔 К какой категории сущности относится Primary Key? Primary Key (первичный ключ) в базах…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →