Неявні об’єкти JSP
⚡ Розумний підсумок
Неявні об'єкти JSP – це попередньо визначені змінні, які контейнер сервлетів створює автоматично під час перекладу сторінки, дозволяючи розробникам отримувати доступ до вихідних потоків, запитів, відповідей, сеансів та даних програми безпосередньо всередині сторінки без ручного оголошення чи додаткового налаштування.

Що таке неявний об’єкт JSP?
- Неявні об’єкти JSP створюються під час фази перекладу JSP на сервлет.
- Ці об’єкти можна безпосередньо використовувати в сценаріях, які входять у метод служби.
- Вони створюються контейнером автоматично, і до них можна отримати доступ за допомогою об’єктів.
Скільки неявних об’єктів доступно в JSP?
У контейнері доступні 9 типів неявних об’єктів:
- З
- Запит
- відповідь
- конфиг
- додаток
- Session
- PageContext
- сторінка
- Виняток
Давайте вивчати один за одним
1) Вийти
- Out — один із неявних об’єктів для запису даних у буфер і надсилання вихідних даних клієнту у відповідь
- Об’єкт Out дозволяє отримати доступ до вихідного потоку сервлета
- Out є об'єктом javax.servlet.jsp.jsp.jsWriter клас
- Під час роботи з сервлет, нам потрібен об’єкт printwriter
приклад:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP1</title> </head> <body> <% int num1=10;int num2=20; out.println("num1 is " +num1); out.println("num2 is "+num2); %> </body> </html>
Пояснення коду:
Code Рядок 11-12– out використовується для друку у вихідний потік
Коли ми виконуємо наведений вище код, ми отримуємо наступний результат:
вихід:
- У вихідних даних ми отримуємо значення num1 і num2
2) Запит
- Об’єкт запиту є екземпляром java.servlet.http.HttpServletRequest і є одним із аргументів методу служби
- Він буде створюватися контейнером для кожного запиту.
- Він використовуватиметься для запиту такої інформації, як параметр, інформація заголовка, ім’я сервера тощо.
- Він використовує getParameter() для доступу до параметра запиту.
приклад:
Implicit_jsp2.jsp(форма, з якої надсилається запит до guru.jsp)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru form JSP2</title> </head> <body> <form action="guru.jsp"> <input type="text" name="username"> <input type="submit" value="submit"> </form> </body> </html>
Guru.jsp (де виконується дія)
Пояснення коду:
Code Рядки 10-13: У implicit_jsp2.jsp(form) надсилається запит, тому змінна ім’я користувача обробляється та надсилається до guru.jsp, що є дією JSP.
Guru.jsp
Code Рядки 10-11: Це дія jsp, де запит обробляється, а ім’я користувача береться з форми jsp.
Коли ви виконуєте наведений вище код, ви отримуєте наступний результат
вихід:
Коли ви пишете тест і натискаєте кнопку «Надіслати», ви отримуєте такий результат «Ласкаво просимо до тесту».
3) Відповідь
- «Відповідь» — це екземпляр класу, який реалізує інтерфейс HttpServletResponse
- Контейнер генерує цей об’єкт і передає методу _jspservice() як параметр
- «Об’єкт відповіді» буде створено контейнером для кожного запиту.
- Він представляє відповідь, яку можна надати клієнту
- Неявний об’єкт відповіді використовується для введення вмісту, додавання файлів cookie та перенаправлення на сторінку відповіді
приклад:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP4</title> </head> <body> <%response.setContentType("text/html"); %> </body> </html>
Пояснення коду:
Code Лінія 11: В об’єкті відповіді ми можемо встановити тип вмісту
Тут ми встановлюємо лише тип вмісту в об’єкті відповіді. Отже, для цього немає результату.
4) Конфігурація
- «Конфігурація» має тип java.servlet.servletConfig
- Він створюється контейнером для кожної сторінки jsp
- Він використовується для отримання параметра ініціалізації в web.xml
приклад:
Web.xml (вказує назву та картуping сервлета)
Implicit_jsp5.jsp (отримання значення імені сервлета)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP5</title> </head> <body> <% String servletName = config.getServletName(); out.println("Servlet Name is " +servletName);%> </body> </html>
Пояснення коду:
У web.xml
Code Рядок 14-17: У web.xml у нас є картаping сервлетів до класів.
Implicit_jsp5.jsp
Code Рядок 10-11: Щоб отримати назву сервлета в JSP, ми можемо використати config.getServletName, який допоможе нам отримати назву сервлета.
Коли ви виконуєте наведений вище код, ви отримуєте такий результат:
вихід:
- Ім'я сервлета — «GuruServlet” як назва присутня у web.xml
5) Додаток
- Об’єкт програми (рядок коду 10) є екземпляром javax.servlet.ServletContext і використовується для отримання контекстної інформації та атрибутів у JSP.
- Об’єкт програми створюється контейнером по одному для кожної програми під час розгортання програми.
- Об’єкт Servletcontext містить набір методів, які використовуються для взаємодії з контейнером сервлетів. Ми можемо знайти інформацію про контейнер сервлетів
приклад:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Implicit JSP6</title> </head> <body> <% application.getContextPath(); %> </body> </html>
Пояснення коду:
- У наведеному вище коді атрибут програми допомагає отримати контекстний шлях сторінки JSP.
6) Сесія
- Сеанс містить об’єкт «httpsession» (кодовий рядок 10).
- Об’єкт сеансу використовується для отримання, встановлення та видалення атрибутів області сеансу, а також для отримання інформації про сеанс
приклад:
Implicit_jsp7 (атрибут встановлено)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit JSP</title> </head> <body> <% session.setAttribute("user","GuruJSP"); %> <a href="implicit_jsp8.jsp">Click here to get user name</a> </body> </html>
Implicit_jsp8.jsp (getAttribute)
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>implicit Guru JSP8</title> </head> <body> <% String name = (String)session.getAttribute("user"); out.println("User Name is " +name); %> </body> </html>
Пояснення коду:
Implicit_jsp7.jsp
Code Лінія 11: ми встановлюємо атрибут user у змінній сеансу, і це значення можна отримати із сеансу, у якому б jsp не було викликано з цього (_jsp8.jsp).
Code Лінія 12: Ми викликаємо інший jsp на href, у якому ми отримаємо значення для встановленого атрибута user.
Implicit_jsp8.jsp
Code Лінія 11: Ми отримуємо значення атрибута користувача з об’єкта сеансу та відображаємо це значення
Коли ви виконуєте наведений вище код, ви отримуєте такий результат:
Коли ви натискаєте на посилання для імені користувача. Ви отримаєте наступний результат.
вихід:
- Коли ми клацаємо посилання, надане в implicit_jsp7.jsp, ми перенаправляємося на другу сторінку jsp, тобто сторінку (_jsp8.jsp), і ми отримуємо значення з об’єкта сеансу атрибута користувача (_jsp7.jsp).
7) Контекст сторінки
- Цей об’єкт належить до типу pagecontext.
- Він використовується для отримання, встановлення та видалення атрибутів із певної області
Приціли бувають 4 типів:
- сторінка
- Запит
- Session
- додаток
приклад:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP9</title> </head> <body> <% pageContext.setAttribute("student","gurustudent",pageContext.PAGE_SCOPE); String name = (String)pageContext.getAttribute("student"); out.println("student name is " +name); %> </body> </html>
Пояснення коду:
Code Лінія 11: ми встановлюємо атрибут за допомогою об’єкта pageContext, і він має три параметри:
- ключ
- значення
- Сфера
У наведеному вище коді ключ — student, а значення — «gurustudent», а область — це область сторінки. Тут область дії – «сторінка», і її можна отримати лише за допомогою області видимості сторінки.
Code Лінія 12: Ми отримуємо значення атрибута за допомогою pageContext
Коли ви виконуєте наведений вище код, ви отримуєте такий результат:
вихід:
- На виході буде надруковано «ім’я студента gurustudent».
8) Сторінка
- Неявна змінна сторінки містить поточний запущений об’єкт сервлета для відповідного jsp.
- Діє як цей об’єкт для поточної сторінки jsp.
приклад:
У цьому прикладі ми використовуємо об’єкт page, щоб отримати назву сторінки за допомогою методу toString
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP10</title> </head> <body> <% String pageName = page.toString(); out.println("Page Name is " +pageName);%> </body> </html>
Пояснення коду:
Code Рядок 10-11: У цьому прикладі ми намагаємося використати метод toString() об’єкта сторінки та намагаємося отримати назву рядка сторінки JSP.
Коли ви виконуєте код, ви отримуєте такий результат:
вихід:
- Вихід – це ім’я рядка вищезгаданої сторінки jsp
9) Виняток
- Винятком є неявний об’єкт класу, що кидається.
- Він використовується для обробка винятків у JSP.
- Об’єкт винятку можна використовувати лише на сторінках помилок.приклад:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" isErrorPage="true"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Implicit Guru JSP 11</title> </head> <body> <%int[] num1={1,2,3,4}; out.println(num1[5]);%> <%= exception %> </body> </html>
Пояснення коду:
Code Рядок 10-12 – Він містить масив чисел, тобто num1 із чотирьох елементів. У вихідних даних ми намагаємося надрукувати п’ятий елемент масиву з num1, який не оголошений у списку масивів. Тому він використовується для отримання об’єкта винятку jsp.
вихід:
Ми отримуємо ArrayIndexOfBoundsException у масиві, де ми отримуємо масив num1 п’ятого елемента.











