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

Основні відомості про сервлети і JavaServer Pages

Сервлети – це програми, які виконуються на WEB-сервері, і діють у якості посередника між запитом, який поступає від Web-браузера або іншого клієнта HTTP, і базами даних або додатками на сервері. Вони можуть виконувати наступні дії: зчитувати дані, передані користувачем; проглядати всю інформацію про запит, яка вбудована в HTTP-запит; генерувати результати; встановлювати відповідні параметри HTTP-відповіді; повертати документ клієнту.

При виконанні багатьох запитів клієнтам можуть повертатися попередньо створені (статичні) документи. Такі запити слід обробляти без використання сервлетів. Однак у багатьох випадках статичний результат не є достатнім, а сторінку слід генерувати при кожному запиті. Наприклад:

  • сторінки, основані на даних, представлених користувачем;

  • сторінки будуються на основі часто змінюваних даних;

  • сторінки використовують інформацію корпоративних баз даних або інших джерел на боці сервера.

Технологія JavaServer Pages (JSP) дозволяє змішувати звичайний, статичний HTML із динамічно генерованим вмістом сервлетів. Частина JSP-сторінки складається зі звичайного HTML-коду, яка передається клієнту без змін. Частини, які генеруються динамічно, відмічені спеціальними HTML-подібними тегами.

Базова структура сервлетів

У наведеному нижче коді наводиться базовий сервлет, який обробляє GET-запити.

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class SomeServlet extends HttpServlet {

public void doGet(HttpServletRequest request,

HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("<HTML>\n"+

"<HEAD><TITLE>Super Test Page</TITLE></HEAD>\n"+

"<BODY>\n"+

"<P align=center>Hello, World!</P>\n")+

"</BODY></HTML>");

}

}

Для того, щоб бути сервлетом, клас повинен успадковувати від класу HttpServlet і перевизначити метод doGet() або doPost(). Обидва методи мають два аргументи: об’єкти класів HttpServletRequest і HttpServletResponse. Клас HttpServletRequest володіє методами, які дозволяють отримати відомості про вхідну інформацію: про дані форми, заголовки HTTP-запиту, ім’я хоста клієнта. Клас HttpServletResponse дозволяє задати вихідну інформацію: коди станів HTTP, заголовки відповіді і, що найважливіше, дозволяє отримати об’єкт класу PrintWriter, який використовується для передачі вмісту документа клієнтові.

Життєвий цикл сервлета

Коли сервлет створюється вперше, активізується його метод init(). У нього включається код початкового встановлення, який виконується один раз. Після цього в результаті виконання кожного запиту користувача створюється окремий потік, який викликає метод service()раніше створеного екземпляра. Потім метод service() викликає метод doGet(), doPost() або інший, в залежності від типу отриманого HTTP-запиту. Коли сервер вирішує вивантажити сервлет, він викликає метод destroy()цього сервлета.

Метод init

Метод init()використовується для однократної ініціалізації сервлета при його створенні і не викликається повторно для кожного запиту користувача.

Існує дві версії метода init().Перша не має параметрів і використовується. Коли сервлету не потрібно зчитувати які-небудь параметри, що залежать від типу сервера:

public void init() throws ServletException {

// код ініціалізації

}

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

public void init(ServletConfig config) throws ServletException {

super.init(config);

// код ініціалізації

}

У класі ServletConfig є метод getInitParameter(), який дозволяє проглянути параметри ініціалізації, що відносяться до сервлету. Наприклад:

public void init(ServletConfig config) throws ServletException {

super.init(config);

name=config.getInitParameter("name");

surname=config.getInitParameter("surname");

}

Приклад задавання параметрів ініціалізації для сервера Tomcat (наведено файл web.xml, що розташовується в каталозі install_dir\webapps\SomeName\WEB_INF):

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app

PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN"

"http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">

<web-app>

<servlet>

<servlet-name>

MyServlet

</servlet-name>

<servlet-class>

DimaServlets.HiDima

</servlet-class>

<init-param>

<param-name>

name

</param-name>

<param-value>

Vasya

</param-value>

</init-param>

<init-param>

<param-name>

surname

</param-name>

<param-value>

Pupkin

</param-value>

</init-param>

</servlet>

</web-app>

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