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

Jsp сторінка

Як правило, JSP сторінка зберігається в окремому файлі з розширенням .jsp. Велика частина вмісту JSP сторінки перетвориться в сервлеті в набір інструкцій out.println(). Приклад JSP сторінки:

<%@ taglib uri="/exttags.tld" prefix="dscat" %>

<%@ page import = "xbcat.util.*" %>

<dscat:pageheader>All Customers</dscat:pageheader>

<jsp:useBean id="pagescroll" class="ru.view.bean.ScrollPage" scope="session">

</jsp:useBean>

<jsp:setProperty name="pagescroll" property="PageSize" param="psize" />

<html><body>

<%

Vector menu=pagescroll.getMenu();

if( pagescroll.page.size() > 0 ){

%>

<table width="100%" border="0">

<tr>

<td>

<%= pagescroll.getTotalPages() %>

</td>

<td align="right">

<% if(!pagescroll.isSinglePage()){

for(int i=0; i<menu.size(); i++){

String href = ((ScrollMenu)menu.elementAt(i)).m_Href;

String name = ((ScrollMenu)menu.elementAt(i)).m_Name;

if( href != null ){ %>

<a href="<%= href %>"><%= name %></a>

<% } else { %>

<%= name %>

<% }

}

} %>

</td>

</tr>

</table></body></html>

Динамічна складова JSP сторінки представлена трьома типами спеціальних елементів: директивами, action і скриптами. Докладніше кожний з них розглядається далі.

Директиви

Оскільки web контейнер, перш ніж використовувати JSP сторінку, транслює її у відповідний сервлет, має сенс надати можливість залишати на JSP сторінці директиви, які управлятимуть процесом трансляції. Директиви мають синтаксис <%@ директива... %>.

Розглянемо деякі з таких директив.

Директива page. Декларує ряд властивостей JSP сторінки. Синтаксис директиви:

<%@ page список_параметрів %>

Опишемо деякі найцікавіші параметри даної директиви:

  • import - Як вже мовилося, JSP сторінка перед використанням повинна бути перетворена в програмний код - клас відповідного сервлета. У свою чергу, клас сервлета може звертатися до інших класів із стандартних бібліотек Java або класам з інших пакетів. За змовчанням, клас сервлета, що одержується після трансляції JSP сторінки, може мати зв'язок з пакетами java.lang, java.servlet, java.servlet.jsp і java.servlet.http. Якщо для класу сервлета потрібно забезпечити зв'язок з іншими пакетами, наприклад, з xbcat.util як в наведеному вище прикладі JSP сторінки, останню слід доповнити директивою page, що має атрибут import з назвою відповідного пакету.

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

  • buffer - Вміст сторінки, створеної у відповідь на запит клієнта, сервлет передає в потік виведення out, звідки воно потім передається web-сервером безпосередньо клієнту. Щоб одержати більш оптимальний режим передачі, в цьому потоці передбачений режим буферизації. При цьому об'єм буфера за змовчанням складає 8 кілобайт. Параметр buffer директиви page дозволяє або задати інший об'єм буфера, або взагалі відмовитися від режиму буферизації, передавши атрибуту значення "none".

  • isThreadSafe - Згідно специфікації сервлетів, web контейнер за змовчанням дозволяє одному і тому ж екземпляру сервлета паралельно обробляти запити відразу від декількох клієнтів. При цьому кожному із запитів виділяється окремий тред (потік). Тим часом, в деяких випадках буває корисно заборонити паралельну обробку запитів. (Відповідний контролер в web контейнері вибудовує запити, що приходять, в чергу і передає їх сервлету на обробку строго поодинці.) Для цього досить використовувати атрибут isThreadSafe, із значенням false.

  • pageEncoding - Дозволяє розробнику програми декларувати кодування, яке повинне використовуватися в документі, що передається клієнту. За змовчанням вважається, що сторінка має кодування ISO-8859-1.

  • contentType - У відповідь на запит клієнта, JSP сторінка за змовчанням генерує документ типу HTML. Разом з тим, область застосування технології Java Server Pages набагато ширше, оскільки вона дозволяє генерувати будь-які інші типи текстових документів: XML, WML, VRML і т.д. MIME-тип документа, що генерується, декларується атрибутом contentType. Як вже зрозуміло, за змовчанням цей атрибут має значення "text/html".

Директива taglib. Дозволяє використовувати на JSP сторінках додаткові теги, створені або отримані з інших джерел розробником програми (custom теги). Синтаксис директиви:

<%@ taglib uri="URI бібліотеки тегів" prefix="им’я префікса" %>

де, uri - абсолютна або відносна адреса URI, що унікальним чином ідентифікує дескриптор бібліотеки тегів, пов'язаних з вказаним префіксом. Вказаний префікс використовується для ідентифікації відповідних custom тегів далі в тексті jsp.

<%@ taglib uri="http://www.mycorp/supertags" prefix="super" %>

...

<super:doMagic>...</super:doMagic>

...

Директива include. Використовується для поміщення в JSP сторінку текстів і програмного коду з інших джерел. Підстановка виконується в момент трансляції JSP сторінки у відповідний сервлет. Приклад використання директиви:

<%@ include file="menu.jsp" %>

Відзначимо, що підстановка матеріалів із зовнішнього джерела може виконуватися також за допомогою спеціального тега <jsp:include>, який буде розглянутий пізніше. Відмінність даного тега від описуваної директиви полягає в тому, що підстановка здійснюється безпосередньо в процесі обробки клієнтського запиту, а тому може бути прив'язано до параметрів запиту.

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