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

Оголошення jsp

Оголошення JSP дозволяють визначення методи або поля, які розміщуються у тілі класу сервлета. Оскільки оголошення не генерують ніякого виводу, вони звичайно використовуються у сполученні з виразами JSP або скриплетами. Приклад фрагменту сторінки, яка друкує скільки разів була здійснено запит до неї.

<html>

<head>

<title>JSP Declarations</title>

</head>

<body>

<h1>JSP Declarations</h1>

<%! private int accessCount = 0; %>

<h2>Access to page since server reboot:

<%= ++accessCount %></h2>

</body>

</html>

Інші наперед визначенізмінні

Для спрощення коду у виразах JSP і скриплетах використовуються 8 автоматично визначених змінних, які називаються неявними об’єктами.

request

Змінна класу HttpServletRequest, надає доступ до HTTP-запиту;

response

Змінна класу HttpServletResponse, надає доступ до формованої HTTP-відповіді;

out

Змінна класу PrintWriter, використовується для відправки сформованого вихідного документа клієнту.

session

Змінна класу HttpSession, надає доступ до об’єкту сесії, асоційованої із запитом;

application

Ця змінна є об’єктом класу ServletContext, отриманим за допомогою методу getServletConfig().getContext(). Сервлети і сторінки JSP можуть зберігати постійні дані в об’єкті ServletContext, а не в змінних екземпляру сервлету. У класі ServletContext присутні методи setAttribute і getAttribute, які дозволяють зберігати довільні дані.

config

Змінна config є об’єктом класу ServletConfig для даної сторінки.

pageContext

Сторінки JSP вводять новий клас PageContext. Він задає єдину точку доступу до багатьох атрибутів сторінки і надає зручне місце для зберігання сумісно використовуваних даних. Змінна pageContext посилається на об’єкт класу PageContext, пов’язаного з даною сторінкою.

page

Ця змінна є синонімом this для мови Java.

Директива сторінки jsp

Директива сторінки впливає на загальну структуру сервлета, в який транслюється JSP-сторінка. Приклад запису директиви: <@ directive attribute1=”value1” attribute2=”value2” %>

Директива page дозволяє управляти структурою сервлета за рахунок імпортування класів, налагодження суперкласу сервлета, завдання типу вмісту тощо. Директива page визначає наступні атрибути: import, contentType, isThreadSafe, session, buffer, autoflush, extends, info, errorPage, language. Значення атрибутів не можуть обчислюватися на стадії виконання, а також цю директиву не можна вставляти в сторінку за допомогою умовних операторів Java в скрип летах.

Атрибут import вказує, які пакети повинні імпортуватися в сервлет.

Формат запису: <%@ page import=”package.class1, …, package.classN” %>

Значення по замовчуванню:

“java.lang.*, javax.servlet.*, javax.servlet.jsp.*, javax.servlet.http.*”

Приклад: <%@ page import=”java.util.*” %>

Атрибут contentType встановлює заголовок відповіді Content-Type, вказуючи тип документа, що надсилається клієнту.

Формат запису:

<%@ page contentType=”MIME-Type” %>

<%@ page contentType=”MIME-Type: charset=Character-Set” %>

Значення по замовчуванню:“text/html”

Приклад: <%@ page contentType=”text/plain” %>

Приклад повернення клієнту документа у форматі MicrosoftExcel:

<%@ page contentType="application/vnd.ms-excel" %>

1997 1998 1999 2000

12 122 112 33

Атрибут isThreadSafe керує тим, чи буде сервлет реалізовувати інтерфейс SingleThreadModel.

Формат запису:

<%@ page isThreadSafe=”true” %> <%!-- не реалізується SingleThreadModel --%>

<%@ page isThreadSafe=”false” %> <%!-- реалізується SingleThreadModel --%>

Значення по замовчуванню: “true”

Атрибутsessionконтролює, чи приймає участь сторінка в HTTP-сеансах.Значення true вказує, що змінна sessionповинна бути зв’язана з існуючим сеансом, якщо такий існує. У іншому випадку повинен бути створений і пов’язаний із змінною session новий сеанс. Значення false вказує, що сеанси не використовуватимуться автоматично і в цьому випадку спроби отримати доступ до змінної session приведуть до помилок на етапі трансляції сторінки.

Формат запису:

<%@ page session=”true” %>

<%@ page session=”false” %>

Значення по замовчуванню: “true”

Атрибут buffer задає розмір буфера, який використовується зміною out типу JspWriter при формуванні відповіді клієнту. Відключення буферизації вимагає, щоб елементи JSP, які задають заголовки або коди стану, знаходилися на початку файлу перед будь-яким HTML-вмістом.

Формат запису:

<%@ page buffer=”sizekb” %>

<%@ page buffer=”none” %>

Значення по замовчуванню:залежить від сервера, повинно бути не менше 8KB.

Атрибут autoflush керує тим, чи буде вихідний буфер автоматично очищуватися при його заповненні, або при переповненні буфера генеруватиметься виключна ситуація.

Формат запису:

<%@ page autoflush=”true” %>

<%@ page autoflush=”false” %>

Значення по замовчуванню: “true”.

Значення falseнеприпустимо, якщо одночасно використовується buffer=”none”.

Атрибут extendsвизначає суперклас сервлета, який генеруватиметься для JSP-сторінки.

Формат запису: <%@ page extends=”package.class” %>

Атрибут infoвизначає рядок, який можна отримати із сервлета за допомогою методу getServletInfo.

Формат запису: <%@ page info=”Some Message” %>

Атрибут errorPage задає JSP-сторінку, яка обробляє всі виключення, які генеруються, але не перехоплюються на поточній сторінці. Створене виключення буде автоматично доступним для вказаної сторінки помилок через змінну exception.

Формат запису: <%@ page errorPage=”Relative URL” %>

Атрибут isErrorPage вказує, чи може поточна сторінка бути сторінкою помилок для іншої JSP-сторінки.

Формат запису:

<%@ page isErrorPage=”true” %>

<%@ page isErrorPage=”false” %>

Значення по замовчуванню: “false”.

Нижче наводиться приклад використання сторінки помилок для процесу обрахунку швидкості по заданому часу і відстані:

Лістінг ComputeSpeed.jsp

<html>

<head>

<title> Computing Speed </title>

</head>

<body>

<%@ page errorPage="SpeedErrors.jsp" %>

<table border=5 align="center">

<tr><th>Computing Speed</th></tr>

</table>

<%!

private double toDouble(String value) {

return(Double.valueOf(value).doubleValue());

}

%>

<%

double meters = toDouble(request.getParameter("meters"));

double seconds = toDouble(request.getParameter("seconds"));

double speed = meters/seconds;

%>

<ul>

<li>Distance: <%= meters %> meters;

<li>Time: <%= seconds %> seconds;

<li>Speed: <%= speed %> meters per second;

</ul>

</body>

</html>

Лістінг SpeedErrors.jsp

<%@ page import="java.io.*"%>

<html>

<head>

<title>Error Computing Speed</title>

</head>

<body>

<%@ page isErrorPage="true" %>

<table border=5 align="center">

<tr><th>Error Computing Speed</th></tr>

</table>

<p>ComputeSpeed.jsp reported the following error:

<i><%= exception %></i>. This problem occured in the following place:

<pre>

<% exception.printStackTrace(new PrintWriter(out)); %>

</pre>

</body>

</html>

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