Топ-100Неявные объекты в JSP: session, request и др. - CodOrbits
LogoCodOrbits

Раздел: JSP

В этом разделе вы узнаете, как использовать JavaServer Pages (JSP) для генерации HTML-контента на стороне сервера.

Все разделы
Иконка JSP

Неявные объекты в 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
мин.

Similar Articles Icon
Divider

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

16
мин.

Similar Articles Icon
Divider

Expression Language (EL) in JSP

16
мин.

Similar Articles Icon