Бесплатный курс по Java: от основ до продвинутого уровня
Неявные объекты в 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.
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 возникает ошибка деления на ноль, что приводит к автоматическому перенаправлению на страницу ошибки. На этой странице, как видим, ниже отображена информация о произошедшей ошибке деления на ноль.
Разберитесь с паттерном MVC в Java: создание Model, View и Controller, взаимодействие компонентов и практический пример с JSP. Основы для веб-разработчиков.
Time to read: 16
Expression Language (EL) in JSP
Изучите Expression Language (EL) в JSP: как упростить доступ к атрибутам скоупов, работать с коллекциями и отключать EL. Примеры кода и лучшие практики.