Неявные объекты в JSP: session, request и др.
Last updated: 10 мая 2025 г.Допустим, мы хотим как в сервлете использовать на нашей JSP странице req
и resp
метода doGet. Где их взять?
Для этого придумали специальные неявные объекты – req
и resp
.
Кроме req и resp есть еще 7 неявных объектов (out, request, response, config, application, session, pageContext, page, exception).
Пример программы:
1<html>
2<head>
3 <title>Objects JSP</title>
4</head>
5<body>
6<%
7//Нижняя строка аналогична response.getWriter().print("2+2="+(2+2))
8out.println("2+2="+(2+2));
9//Использование объекта request
10request.getRequestDispatcher("/myservlet").include(request, response);
11//Использование объекта response
12response.getWriter().println("hello");
13//c помощью page можно браться к объекту страницы то есть к this
14out.println(page.toString()); %>
15</body>
16</html>
Откроем страницу:

Видим, что всё вывелось верно.
Helloo WOOOrld!!! это то, что выводит сервлет по адресу myservlet. А в конце начиная с org то, что возвращает метод toString()
.
Неявные объекты ServletContext и ServletConfig
Для начала создадим параметры в Web.xml для уровня контекста и только для Object.jsp.
Web.xml:
1<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
4 http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
5 version="4.0"
6 metadata-complete="false">
7
8 <servlet-mapping>
9 <servlet-name>ObjectsJSP</servlet-name>
10 <url-pattern>/ObjectsJSP</url-pattern>
11 </servlet-mapping>
12
13 <servlet>
14 <servlet-name>ObjectsJSP</servlet-name>
15 <!-- Указываем jsp файл -->
16 <jsp-file>/jsp/ObjectsJSP.jsp</jsp-file>
17
18 <!-- параметр инициализации уровня конфигура сервлета ObjectsJSP.jsp -->
19 <init-param>
20 <param-name>name</param-name>
21 <param-value>ConfName</param-value>
22 </init-param>
23 </servlet>
24
25 <!-- параметр инициализации уровня контекста -->
26 <context-param>
27 <param-name>name</param-name>
28 <param-value>commonName</param-value>
29 </context-param>
30
31</web-app>
Пример программы:
1<html>
2<head>
3 <title>Objects JSP</title>
4</head>
5<body>
6<%
7 //config - то же что ServletConfig
8 out.println("name is:"+config.getInitParameter("name"));
9 //application - то же что ServletContext
10 out.println("name is:"+application.getInitParameter("name"));
11 //С помощью PageContext мы можем создавать, получать
12 //и удалять атрибуты. Атрибуты можно помещать в разную
13 //область видимости: страница, запрос, сессия, приложение.
14 //Для примера положим атрибут в сессию с помощью SESSION_SCOPE
15 pageContext.setAttribute("name","John",PageContext.SESSION_SCOPE);
16%>
17<!-- По этой ссылке перейдем на страницу ImplObjJSP2.jsp,
18на которой из сессии получим атрибут положенный туда
19на этой странице. -->
20<a href="jsp/GetAttributeJSP.jsp">second jsp page</a>
21</body>
22</html>
Ниже код страницы, которая откроется при нажатии на ссылку на странице выше.
Пример программы:
1<html>
2<head>
3 <title>GetAttrebute JSP</title>
4</head>
5<body>
6<%
7 //Через неявный объект сессии извлечем аттребут
8 //положенный в сессию на странице ObjectsJSP.jsp
9 out.print("hello "+(String)session.getAttribute("name"));
10%>
11</body>
12</html>
Перейдем по пути, который конфигурировали в Web.xml, то есть на первую страницу и здесь можно увидеть параметры:

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

Как видим, из неявного объекта сессии успешно был извлечен аттрибут, который был положен в сессию на первой странице.
Объект exception
В программе ниже происходит ошибка и клиента в результате этого переводит на другую страницу. На странице, на которую перевело клиента, можно воспользоваться неявным объектом exception
для получения информации о случившейся ошибке.
Пример программы:
1<!-- При ошибке на этой странице
2откроется errPage.jsp -->
3<%@ page errorPage="/jsp/errPage.jsp" %>
4<html>
5<head>
6 <title>First JSP</title>
7</head>
8<body>
9<%
10 // Если совершим ошибку (поделим на 0 например как ниже)
11 // то состоится переход на errPage.jsp
12 // указанный сверху.
13 // На этой странице errPage.jsp
14 // через неявный объект exception будет
15 // отображена ошибка
16 out.println("division of numbers is: "+(2/0));
17%>
18</body>
19</html>
Код страницы, на которую совершается переход в результате ошибки:
1<!--Помечаем что эта страница ошибки-->
2<%@ page isErrorPage="true" %>
3
4<h3>error occured!</h3>
5
6<!--На этой странице errPage.jsp через
7неявный объект exception будет отображена ошибка -->
8Exception is: <%= exception %>
При переходе на страницу ObjectsJSP возникает ошибка деления на ноль, что приводит к автоматическому перенаправлению на страницу ошибки. На этой странице, как видим, ниже отображена информация о произошедшей ошибке деления на ноль.

Следующие уроки
Что такое actionBeans в JSP?
17
мин.
Паттерн MVC в веб-разработке на Java
16
мин.
Expression Language (EL) in JSP
16
мин.