Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LectBL_DB_Theme3.doc
Скачиваний:
4
Добавлен:
15.08.2019
Размер:
103.94 Кб
Скачать

Фрагмент програмного коду на jsp сторінці (скрипт)

Скрипт, як і решта елементів, привносить в кінцевий документ динамічну складову. Проте, на відміну від них, скрипт - програмний код, поміщений безпосередньо в текст JSP сторінки. Скрипт може проводити обчислення або маніпулювати об'єктами, що дозволяє наочно пов'язувати характеристики сторінки, що генерується, з параметрами запиту клієнта і бізнес-правилами програми. Елементи скриптів бувають трьох типів: декларації, скриплети і вирази.

Декларації.

Після перетворення JSP сторінки в сервлет велика частина її вмісту потрапляє в метод _jspService(), який викликається всякий раз, коли з'являється необхідність обробити запит клієнта. Декларація на JSP сторінці найчастіше використовується для того, щоб оголосити додаткові атрибути і методи в класі сервлета, які будуть доступні при обробці будь-якого запиту клієнта. Декларації мають синтаксис <%! ... %>

Приклади декларацій на JSP сторінці:

<%! int i; %>

<%! int i = 0; %>

<%! public String f(int i) { ... } %>

Скриплети.

Скриплет може містити програмний код і декларації локальних змінних, які будуть використані для обробки запитів клієнтів. Фактично, скриплет - це фрагмент програмного коду з майбутнього сервлета, який свого часу буде поміщений в метод _jspService(). Будучи частиною сервлета, скриплет дістає доступ до об'єкту response і, відповідно, може самостійно формувати певну частину кінцевої динамічної сторінки. Проте частіше за все скриплеты використовуються не для цього, а для того, щоб управляти об'єктами бізнес-логіки і логікою програми.

Скриплет має синтаксис <% ... %> . Приклад використання скриплетів у вмісті JSP сторінки:

<% if (i == 0) { %>

Good morning

<% } else { %>

Good afternoon

<% } %>

Щоб оцінити наочність і простоту цієї конструкції, порівняйте її з еквівалентним фрагментом програмного коду в сервлеті:

if (i == 0) {

out.println("Good morning");

} else {

out.println("Good afternoon");

}

Вирази.

Часто сторінка, що передається клієнту, містить результати обчислень або звернень до тих або інших методів і атрибутів певних класів. Будь-який з таких динамічних елементів можна перетворити в рядок і представити на JSP сторінці за допомогою виклику out.println у відповідному скриплеті:

<% UserProfile user = (UserProfile) session.getValue("Profile"); %>

<% out.println(user.getFaxNumber()); %>

Другий рядок в приведеному прикладі зручніше і наочніше представити в коротшому вигляді, використовуючи синтаксис виразу <%= ... %>:

<%= user.getFaxNumber() %>

Інший приклад використання виразу в тілі JSP сторінки:

<%! int i = 0; %>

Hi, now the servlet processing <%= ++i %>th request.

Jsp сторінки і об'єкти

В ході обробки запитів, JSP сторінка може діставати доступ до об'єктів, розташованих на сервері, створювати їх і модифікувати. Доступ до об'єктів здійснюється через елементи скриптів і action. Кожен створюваний в програмі об'єкт має певний час існування, яке декларується у відповідному атрибуті. Специфікацією передбачається чотири інтервали:

  • page - Об'єкт, чий час існування визначається як page, доступний в межах тільки тієї JSP сторінки, де він був створений. Всі посилання на цей об'єкт повинні бути звільнені відразу ж після того, як запит клієнта був оброблений.

  • request - Об'єкт, чий час існування визначається як request, доступний для всіх сторінок, пов'язаних з обробкою даного запиту. Зокрема, якщо має місце переадресація обробки на нову JSP сторінку, даний об'єкт буде доступний і на колишній, і на новій сторінці. Як і у попередньому випадку, посилання на об'єкт після обробки запиту повинні бути звільнені.

  • session - Об'єкт з областю видимості session доступний для всіх сторінок, оброблювальних запити, пов'язані з певною сесією (сеансом зв'язку з конкретним клієнтом). Посилання на об'єкти, пов'язані з сесією, поміщаються в об'єкт session. Після закінчення сеансу зв'язку посилання повинні бути звільнені.

  • application - Найбільш загальна область видимості. Об'єкти, що мають область існування application, не прив'язані до якої-небудь окремої сторінки або сеансу зв'язку і доступні зі всіх JSP сторінок даного додатку.

JSP сторінка завжди має доступ до певного набору об'єктів, що створюються web контейнером за змовчанням:

  • request - Об'єкт, що містить запит клієнта. Відноситься до класу javax.servlet.ServletRequest або іншому класу, що успадковує його. Наприклад, для протоколу HTTP це буде об'єкт класу javax.servlet.http.HttpServletRequest. Область видимості об'єкту - request.

  • response - Об'єкт, в якому сервлет поміщатиме відповідь на запит користувача. Відноситься до класу javax.servlet.ServletResponse або іншому класу, що успадковує його. Наприклад, для протоколу HTTP це буде об'єкт класу javax.servlet.http.HttpServletResponse. Область видимості об'єкту - request.

  • pageContext - Об'єкт, що визначає контекст JSP сторінки. Область видимості об'єкту - page

  • session - Об'єкт, що створюється контейнером для ідентифікації клієнта, а також зберігання персональних об'єктів. Створюється контейнером для протоколу HTTP і є екземпляром класу javax.servlet.http.HttpSession.

  • application - Об'єкт, пов'язаний з конфігурацією сервлета, що відповідає даній JSP сторінці. Область видимості об'єкту - application.

  • out - Об'єкт, що містить вихідний потік сервлета. Інформація, що посилається в цей потік, буде передана клієнту. Об'єкт є екземпляром класу javax.servlet.jsp.JspWriter. Наприклад, велика частина статичного шаблону на JSP сторінці, в ідеалі, повинна бути записана у вигляді відповідного набору команд out.println(). Область видимості об'єкту - page.

  • config - Об'єкт, пов'язаний з конфігурацією сервлета. Є екземпляром класу javax.servlet.ServletConfig. Для JSP сторінки область видимості об'єкту config - page.

  • page - Об'єкт, пов'язаний з обробкою даної сторінки. Область видимості - page

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]