Gymterview
junior

Что вы знаете о PageContext и какие преимущества его использования

PageContext — абстрактный класс javax.servlet.jsp.PageContext, экземпляр которого предоставляет единую точку доступа ко всем неявным объектам, областям видимости и сервисным методам JSP-страницы. Это «универсальный пульт управления» для JSP.

Возможности PageContext

  • Доступ к атрибутам всех scope — через единый API: getAttribute(name, scope), setAttribute(name, value, scope)
  • Доступ к неявным объектамgetRequest(), getResponse(), getSession(), getServletContext()
  • Получение JspWritergetOut() для записи в выходной поток
  • Перенаправлениеforward() и include() для управления потоком запроса
  • Обработка ошибокhandlePageException() для перенаправления на error page

Константы scope для метода getAttribute():

Пример
pageContext.getAttribute("data", PageContext.REQUEST_SCOPE);
pageContext.getAttribute("user", PageContext.SESSION_SCOPE);
pageContext.setAttribute("count", 42, PageContext.APPLICATION_SCOPE);

PageContext создаётся через JspFactory.getPageContext() и освобождается через JspFactory.releasePageContext(). Разработчику не нужно вызывать эти методы — контейнер делает это автоматически.

На собеседовании: ключевое преимущество — PageContext предоставляет единый API для работы со всеми scope. Вместо четырёх разных объектов (request, session, application, page) используется один метод с параметром scope.