- •Основні відомості про сервлети і JavaServer Pages
- •Базова структура сервлетів
- •Життєвий цикл сервлета
- •Метод init
- •Метод service
- •Інтерфейс SingleThreadModel
- •Метод destroy
- •Обробка клієнтських запитів
- •Заголовки http-запиту
- •Коди станів http
- •Заголовки http-відповіді
- •Обробка cookies
- •Атрибути cookie
- •Відслідкування сеансу
- •Отримання інформації про сеанс
- •Перегляд інформації про сеанс
- •Кодування адрес url, надісланих клієнту
- •Елементи сценарію jsp
- •Вирази jsp
- •Скриплети jsp
- •Оголошення jsp
- •Інші наперед визначенізмінні
- •Директива сторінки jsp
- •Включення файлів і аплетів у документи jsp
- •Використання JavaBeans з jsp
- •Основи використання bean-компонентів
- •Доступ до властивостей bean-компонентів
- •Сумісне використання bean-компонентів
- •Робота з базами даних
- •Завантаження тареєстрація драйвера
- •Визначення url для встановлення з’єднання
- •Встановлення з’єднання
- •Створення об’єкту для передачі операторів sql
- •Формування запиту для виконання
- •Виконання запиту
- •Обробка результатів
- •Завершення з’єднання
- •Попередньо відкомпільовані (підготовлені) запити
- •Пакетне виконання sql запитів
- •Виконання внутрішніх процедур
- •Інтегрування сервлетів і jsp-сторінок Перенаправлення запитів із сервлетів
- •Передача інформації на сторінки призначення
- •Перенаправлення запитів з jsp-сторінок
- •Використання аплетів у якості клієнтських інтерфейсів сервлетів
Елементи сценарію jsp
Технологія серверних сторінок JavaServer Pages (JSP) надає можливість змішувати звичайні, статичні HTML-сторінки з динамічно генерованим вмістом, отриманим із сервлетів. Динамічний вміст розміщується у спеціальних тегах, більшість з яких починається символом <%, а завершуються символом %>. Приклад фрагменту сторінки JSP, результатом звернення до якої за URL-адресою http://host/OrderConfirmation.jsp?title=Core+Web+Programming є рядок “Thanks for ordering Core Web Programming” на HTML-сторінці:
Thanks for ordering <i><%= request.getParameter(“title”) %></i>
Елементи сценарію JSP дозволяють вставляти код в сервлет, який генеруватиметься з JSP-сторінки. Існує три види елементів:
Вирази (expressions) виду <%= expression %>, які обчислюються на сервері, а отримані значення вставляються в сторінку HTML, створену сервлетом.
Скриплети (scriplets) виду <% code %>, які вставляються в метод _jspService сервлету (який викликається методом service).
Оголошення (declarations) виду <%! code %>, які вставляються у тіло класу сервлету за межами будь-яких його методів.
Вирази jsp
Вирази JSP використовуються, щоб вставити обчислене значення безпосередньо у HTML-сторінку. Вираз обчислюється, отримане значення перетворюється в рядок, який вбудовується в сторінку. Наприклад, наступний рядок показує дату і час, коли відбувся запит до сторінки:
Current time: <%= new java.util.Date() %>
Для спрощення роботи з виразами можна використовувати ряд наперед визначених змінних, таких як request,response,outта ін. Наприклад:
Your hostname: <%= request.getRemoteHost() %>
Скриплети jsp
Скриплети дозволяють вставити у генерований сервлет довільний Java-код. Вони мають доступ до тих самих змінних, як і вирази. Таким чином, якщо потребується, наприклад, щоб на результуючій сторінці з’явився вивід із скриплету, необхідно використати змінну out:
<%
String query Data = request.getQueryString();
out.println(“Attached GET data: “ + queryData);
%>
У загальному випадку скриплети виконують задачі, які не можна виконати лише засобами JSP-виразів. Ці задачі включають встановлення заголовків відповідей і кодів станів, активізацію побічних ефектів, таких як запис у реєстраційний файл сервера, або оновлення бази даних, або виконання коду, який містить цикли, умови або інші складні конструкції.
Приклад сторінки, яка змінює колір фону на заданий користувачем:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Color Testing</title>
</head>
<%
String bgColor = request.getParameter("bgColor");
boolean hasExplicitColor;
if (bgColor != null) {
hasExplicitColor = true;
}
else {
hasExplicitColor = false;
bgColor = "WHITE";
}
%>
<body bgcolor="<%= bgColor %>">
<h2 align="center">Color Testing</h2>
<%
if (hasExplicitColor) {
out.println("You supplied an explicit background color of " +
bgColor + ".");
}
else {
out.println("Using default background color of WHITE. " +
"Supply the bgColor request attribute to try " +
"a standard color, an RRGGBB value, or see " +
"if your browser supports X11 color names.");
}
%>
<form method="GET">
Background color: <input type="Text" name="bgColor">
<input type="submit" value="Ok">
</form>
</body>
</html>
Скриплети використовуються також для умовного включення стандартних HTMLі JSP конструкцій, наприклад:
<% if (Math.random() < 0.5) { %>
Have a <b>nice</b> day!
<%
}
else { %>
Have a <b>lousy</b> day!
<%
}
%>