Неявные объекты в JSP: session, request и др.

Допустим, мы хотим как в сервлете использовать на нашей JSP странице req и resp метода doGet. Где их взять?

Для этого придумали специальные неявные объекты – req и resp.

Кроме req и resp есть еще 7 неявных объектов (out, request, response, config, application, session, pageContext, page, exception).

Пример программы:

Objects JSP <% //Нижняя строка аналогична response.getWriter().print("2+2="+(2+2)) out.println("2+2="+(2+2)); //Использование объекта request request.getRequestDispatcher("/myservlet").include(request, response); //Использование объекта response response.getWriter().println("hello"); //c помощью page можно браться к объекту страницы то есть к this out.println(page.toString()); %>

Откроем страницу:

Видим, что всё вывелось верно.

Helloo WOOOrld!!! это то, что выводит сервлет по адресу myservlet. А в конце начиная с org то, что возвращает метод toString().


Неявные объекты ServletContext и ServletConfig

Для начала создадим параметры в Web.xml для уровня контекста и только для Object.jsp.

Web.xml:

ObjectsJSP /ObjectsJSP ObjectsJSP /jsp/ObjectsJSP.jsp name ConfName name commonName

Пример программы:

Objects JSP <% //config - то же что ServletConfig out.println("name is:"+config.getInitParameter("name")); //application - то же что ServletContext out.println("name is:"+application.getInitParameter("name")); //С помощью PageContext мы можем создавать, получать //и удалять атрибуты. Атрибуты можно помещать в разную //область видимости: страница, запрос, сессия, приложение. //Для примера положим атрибут в сессию с помощью SESSION_SCOPE pageContext.setAttribute("name","John",PageContext.SESSION_SCOPE); %> second jsp page

Ниже код страницы, которая откроется при нажатии на ссылку на странице выше.

Пример программы:

GetAttrebute JSP <% //Через неявный объект сессии извлечем аттребут //положенный в сессию на странице ObjectsJSP.jsp out.print("hello "+(String)session.getAttribute("name")); %>

Перейдем по пути, который конфигурировали в Web.xml, то есть на первую страницу и здесь можно увидеть параметры:

Нажмем на ссылку и перейдем на вторую страницу.

Как видим, из неявного объекта сессии успешно был извлечен аттрибут, который был положен в сессию на первой странице.


Объект exception

В программе ниже происходит ошибка и клиента в результате этого переводит на другую страницу. На странице, на которую перевело клиента, можно воспользоваться неявным объектом exception для получения информации о случившейся ошибке.

Пример программы:

<%@ page errorPage="/jsp/errPage.jsp" %> First JSP <% // Если совершим ошибку (поделим на 0 например как ниже) // то состоится переход на errPage.jsp // указанный сверху. // На этой странице errPage.jsp // через неявный объект exception будет // отображена ошибка out.println("division of numbers is: "+(2/0)); %>

Код страницы, на которую совершается переход в результате ошибки:

<%@ page isErrorPage="true" %>

error occured!

Exception is: <%= exception %>

При переходе на страницу ObjectsJSP возникает ошибка деления на ноль, что приводит к автоматическому перенаправлению на страницу ошибки. На этой странице, как видим, ниже отображена информация о произошедшей ошибке деления на ноль.

Что такое actionBeans в JSP?

Узнайте, как использовать actionBeans (useBean, setProperty, getProperty) в JSP: создание бинов, управление областью видимости и инициализация. Примеры кода.
Time to read: 17

Паттерн MVC в веб-разработке на Java

Разберитесь с паттерном MVC в Java: создание Model, View и Controller, взаимодействие компонентов и практический пример с JSP. Основы для веб-разработчиков.
Time to read: 16

Expression Language (EL) in JSP

Изучите Expression Language (EL) в JSP: как упростить доступ к атрибутам скоупов, работать с коллекциями и отключать EL. Примеры кода и лучшие практики.
Time to read: 16