Неявні об’єкти JSP

Що таке неявний об’єкт JSP?

  • Неявні об’єкти JSP створюються під час фази перекладу JSP на сервлет.
  • Ці об’єкти можна безпосередньо використовувати в сценаріях, які входять у метод служби.
  • Вони створюються контейнером автоматично, і до них можна отримати доступ за допомогою об’єктів.

Скільки неявних об’єктів доступно в JSP?

У контейнері доступні 9 типів неявних об’єктів:

  1. З
  2. Запит
  3. відповідь
  4. конфиг
  5. додаток
  6. Session
  7. PageContext
  8. сторінка
  9. Виняток

Давайте вивчати один за одним

1) Вийти

  • Out — один із неявних об’єктів для запису даних у буфер і надсилання вихідних даних клієнту у відповідь
  • Об’єкт Out дозволяє отримати доступ до вихідного потоку сервлета
  • Out є об’єктом класу javax.servlet.jsp.jspWriter
  • Під час роботи з сервлет, нам потрібен об’єкт 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>

Пояснення коду:

Рядок коду 11-12– out використовується для друку у вихідний потік

Коли ми виконуємо наведений вище код, ми отримуємо наступний результат:

Вийшов у JSP

вихід:

  • У вихідних даних ми отримуємо значення 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 (де виконується дія)

Запит в JSP

Пояснення коду:

Рядок коду 10-13: У implicit_jsp2.jsp(form) надсилається запит, тому змінна ім’я користувача обробляється та надсилається до guru.jsp, що є дією JSP.

Guru.jsp

Рядок коду 10-11: Це дія jsp, де запит обробляється, а ім’я користувача береться з форми jsp.

Коли ви виконуєте наведений вище код, ви отримуєте наступний результат

вихід:

Запит в 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>

Пояснення коду:

Рядок коду 11: В об’єкті відповіді ми можемо встановити тип вмісту

Тут ми встановлюємо лише тип вмісту в об’єкті відповіді. Отже, для цього немає результату.

4) Конфігурація

  • «Конфігурація» має тип java.servlet.servletConfig
  • Він створюється контейнером для кожної сторінки jsp
  • Він використовується для отримання параметра ініціалізації в web.xml

приклад:

Web.xml (вказує назву та відображення сервлета)

Конфігурація в JSP

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

Рядок коду 14-17: У web.xml ми маємо відображення сервлетів у класи.

Implicit_jsp5.jsp

Рядок коду 10-11: Щоб отримати назву сервлета в JSP, ми можемо використати config.getServletName, який допоможе нам отримати назву сервлета.

Коли ви виконуєте наведений вище код, ви отримуєте такий результат:

Відповідь у JSP

вихід:

  • Сервлет має назву «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

Рядок коду 11: ми встановлюємо атрибут user у змінній сеансу, і це значення можна отримати із сеансу, у якому б jsp не було викликано з цього (_jsp8.jsp).

Рядок коду 12: Ми викликаємо інший jsp на href, у якому ми отримаємо значення для встановленого атрибута user.

Implicit_jsp8.jsp

Рядок коду 11: Ми отримуємо значення атрибута користувача з об’єкта сеансу та відображаємо це значення

Коли ви виконуєте наведений вище код, ви отримуєте такий результат:

Сесія в JSP

Коли ви натискаєте на посилання для імені користувача. Ви отримаєте наступний результат.

Сесія в JSP

вихід:

  • Коли ми клацаємо посилання, надане в 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>

Пояснення коду:

Рядок коду 11: ми встановлюємо атрибут за допомогою об’єкта pageContext, і він має три параметри:

  • ключ
  • значення
  • Сфера

У наведеному вище коді ключ — student, а значення — «gurustudent», а область — це область сторінки. Тут область дії – «сторінка», і її можна отримати лише за допомогою області видимості сторінки.

Рядок коду 12: Ми отримуємо значення атрибута за допомогою pageContext

Коли ви виконуєте наведений вище код, ви отримуєте такий результат:

PageContext в JSP

вихід:

  • На виході буде надруковано «ім’я студента 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>

Пояснення коду:

Рядок коду 10-11: У цьому прикладі ми намагаємося використати метод toString() об’єкта сторінки та намагаємося отримати назву рядка сторінки JSP.

Коли ви виконуєте код, ви отримуєте такий результат:

Сторінка в 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>

Пояснення коду:

Рядок коду 10-12 – Він містить масив чисел, тобто num1 із чотирьох елементів. У вихідних даних ми намагаємося надрукувати п’ятий елемент масиву з num1, який не оголошений у списку масивів. Тому він використовується для отримання об’єкта винятку jsp.

вихід:

Виняток у JSP

Ми отримуємо ArrayIndexOfBoundsException у масиві, де ми отримуємо масив num1 п’ятого елемента.