18117

Технологія Java Servlet

Лекция

Информатика, кибернетика и программирование

Тема 2: Технологія Java Servlet Сервлет Javaоб’єкт що працює всередині спеціальної програми сервлетконтейнера і застосовується для динамічного генерування даних. Кожен сервлет описується в окремому класі який реалізує інтерфейс Servlet. В більшості сервлети використовуються...

Украинкский

2013-07-06

52.5 KB

4 чел.

Тема 2: Технологія Java Servlet

СервлетJava-об’єкт, що працює всередині спеціальної програми сервлет-контейнера і застосовується для динамічного генерування даних. Кожен сервлет описується в окремому класі, який реалізує інтерфейс Servlet. В більшості сервлети використовуються для динамічного генерування Web-сторінок. В цьому випадку сервлет-контейнер повинен бути зв’язаний з Web-сервером (або можна сказати, Web-сервер повинен підтримувати роботу з сервлетами). Взаємодія сервлетів з клієнтами реалізована згідно із парадигмою запит-відповідь. Сервлети, що генерують Web-сторінки, працюють за протоколом HTTP (є HTTP-сервлетами). Для таких сервлетів існує абстрактний клас HttpServlet, від якого розробникам пропонується успадковувати свої сервлети. Такі сервлети є альтернативами таких технологій, як CGI, ISAPI, PHP, Perl тощо.

Першим web-сервером, який підтримував сервлети, став випущений компанією JavaSoft сервер Jeeves, який потім назвали Java Web Server (JWS). Існує велика кількість інших web-серверів з підтримкою сервлетів. Для стандартних web-серверів, таких, як Netscape, IIS, Apache, JavaSoft пропонується Java Servlet Developers Kit, що дозволяє завантажувати сервлети на більшості зі стандартних серверів. В даний час широко використовується web-сервер з сервлет-контейнером Apache Tomcat.

Схема роботи сервлету:

  1.  Клієнт (наприклад, Web-броузер), при виконанні користувачем певних дій на web-сторінці, надсилає HTTP запит на web-сервер.
  2.  Web-сервер отримує запит і, визначивши, що запит іде до сервлета, передає його контейнеру сервлетів. Контейнер сервлетів може виконуватись в тому ж самому процесі, що і web-сервер, в окремому процесі на тій же системі, що і web-сервер, або взагалі на іншій системі.
  3.  Контейнер сервлетів з'ясовує, який сервлет слід викликати, виходячи з інформації про наявні сервлети, та викликає його, передаючи в якості параметрів об'єкти запиту та відповіді.
  4.  Сервлет використовує об'єкт запиту для отримання інформації про віддаленого користувача, параметри HTTP запиту, тощо. Сервлет виконує запрограмовані в ньому дії та надсилає результати роботи через об'єкт відповіді.
  5.  Після того, як сервлет припиняє обробку запиту, контейнер сервлетів перевіряє коректність відправки відповіді та повертає управління до web-сервера, який, в свою чергу, пересилає відповідь клієнту.

Зразок створення сервлету

Продемонструємо процес створення Java-сервлету на традиційному прикладі програми "Hello World". Цей сервлет буде виводити вітання з ім'ям користувача і кількістю запитів, виконаних з моменту запуску сервлету.

Всі сервлети створюються шляхом реалізації базового інтерфейсу Servlet і визначення Java-методів для обробки звернень, що надходять. У даному прикладі використаємо клас HttpServlet, який розуміє HTTP-протокол і обробляє велику частину необхідних для Web-програм особливостей.

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class FirstServlet extends HttpServlet {

int connections;

public void init(ServletConfig conf) throws ServletException {

 super.init(conf);

 connections = 0;

}

public void doGet(HttpServletRequest req, HttpServletResponse res)

throws IOException{

 //Get а channel to the Web browser, so we can send output

 PrintWriter out = res.getWriter();

 res.setContentType("text/html"); // Required for HTTP

 out.println("<HTML><HEAD><TITLE>Servlets 101</TITLE></HEAD>");

 out.print("Say hello to Java Servlet Programming ");

 out.println(req.getParameter("userName"));

 out.print("<p>You are caller number ");

 connections++;

 out.println(Integer.toString(connections));

 out.close(); //Close the output stream

}

}

Як тільки Java-код написаний, його потрібно скомпілювати (в найпростішому випадку javac FirstServlet.java) і помістити одержаний файл на Web-сервер. Як помістити файл FirstServlet.class на сервер –  залежить від виду сервера.

Для виконання і перевірки з Web-браузера, потрібно ввести, наприклад,  адресу: http://localhost:8080/servlet/FirstServlet?userName=John 

В даному випадку "userName=John" – це вхідний параметр сервлету. 

Розбір складових частин сервлету

Клас HttpServlet визначає методи для роботи з різними видами HTTP-з'єднань. В даному випадку використовуються два методи - init() і doGet().
HttpServlet.init(ServletConfig conf) виконується тоді, коли сервлет вперше завантажується. Будь-які створені тут ресурси (за умови, що вони видні у всьому класі, наприклад, поля-об’єкти) будуть доступні при кожному зверненні до сервлету. Саме тут створюються глобальні змінні і будь-які ресурси, не залежні від індивідуальних звернень до сторінки. У даному (спрощеному) варіанті ініціалізується змінна для зберігання відомостей про кількість звернень до даної сторінки.

HttpServlet.doGet (HttpServletRequest, HttpServletResponse) приймає два параметри - HttpServletRequest і HttpServletResponse. Це Java-об'єкти, які обмінюються інформацією між сервлетом і сервером. У даному прикладі HttpServletResponse одержує PrintWriter, який дозволяє нам посилати інформацію назад Web-браузеру.

Трьома методами, якими скористались, є:

PrintWriter.println(String s) – Посилає браузеру рядок символів, що закінчується CR LF. PrintWriter.print(String s) – Посилає браузеру рядок символів без CR LF.

PrintWriter.close() – Закриває потік.

Також використовується метод setContentType(String contentType) для повідомлення браузеру, до отримання якого виду даних він повинен бути готовий. Зазвичай, це "text/html".

HttpServletRequest включає всю інформацію, що надається сервлету браузером і Web-сервером (інформація про оточення, змінні HTTP, змінні форм і т.п.). Метод HttpServlet.getParameterName(String) використовується для читання змінних HTML-форм. В цьому випадку сервлету передається змінна під назвою "userName" із значенням "John", а команда req.getParameter("userName") повертатиме змінну типу String, що містить текст "John".


 

А также другие работы, которые могут Вас заинтересовать

23503. Контрольная работа по синтаксису 51.5 KB
  До самой последней страницы нельзя было догадаться кто убил этого несчастного пасечника. 2 Кто убил этого несчастного пасечника. Расширенная схема: N1Obj ØPraed у когоSubj Кто убил этого несчастного пасечника. Индикатив прошедшего времени Кто убил этого несчастного пасечника.
23504. Переход е в о в современном русском языке 42.5 KB
  1960 Переход е в о в современном русском языке Из истории русского языка известен закон о переходе не начального е в о. По силе этого закона в нашем современном русском языке мы имеем в соответствии с старшим е под ударением как из исконного е так и из образовавшегося из еря гласный о если далее следует твердый согласный. В положении перед ч щ как согласными звучащими только мягко в современном литературном языке перехода е в о не должно быть. Перед согласным ц в литературном языке известным только в твердом виде но некогда...
23505. Сочетание чн в русском языке 33 KB
  1960 Сочетание чн в русском языке Согласно с историей русского языка звукосочетание чн в русском языке нового исторической поры происхождения. Исчезновение редуцированных между двумя согласными не в позициях абсолютного конца и абсолютного конца слова вызвало появление в русском языке впервые рядов новых групп согласных таких которые до этой поры в языке не существовали. Теоретически можно ожидать троякой возможной судьбы сочетания чн в языке: А это сочетание сохраняется в языке; Б в результате редукции взрывной части трифтонга из него...
23508. Фразеологизмы новозаветного происхождения в современном русском языке 982.5 KB
  Курск 1998 [1] Введение [2] Глава I [3] Краткие сведения по некоторым теоретическим вопросам фразеологии русского языка. [5] Новозаветные по происхождению фразеологизмы как элемент фразеологической системы русского языка [5. Библейская фразеология и проблемы культуры речи [10] Заключение [11] Список использованной литературы [12] Приложение № 1 Введение О фразеологии написано множество статей книг диссертаций а интерес к этой области языка не иссякает ни у исследователей ни у тех кто просто неравнодушен к слову.
23509. ОБ ОСНОВНЫХ ТИПАХ ФРАЗЕОЛОГИЧЕСКИХ ЕДИНИЦ В РУССКОМ ЯЗЫКЕ 159 KB
  Шахматов в своем Синтаксисе русского языка настойчиво подчеркивал чрезвычайную важность вопроса о неразложимых сочетаниях слов не только для лексикологии resp. Под разложением словосочетания писал А. Между тем подобное разложение для некоторых словосочетаний оказывается невозможным. В неразложимых словосочетаниях связь компонентов может быть объяснена с исторической точки зрения но она непонятна немотивирована с точки зрения живой системы современных грамматических отношений.
23510. СТИЛЬ ПИКОВОЙ ДАМЫ 430.5 KB
  ВИНОГРАДОВ СТИЛЬ ПИКОВОЙ ДАМЫ€œ Пушкинский стиль пушкинская манера лирического выражения и повествования почти не описаны и не исследованы. Современнее и резче всего пушкинская манера повествования обозначилась в структуре Пиковой Дамы€œ. Сюжет Пиковой Дамы€œ и профессиональноигрецкие анекдоты В Пиковой Даме€œ семантическое многообразие доведено до предела. Игра в фараон в Пиковой Даме€œ не столько тема авторского повествования сколько тема разговора между персонажами.
23511. Смысл: семь дихотомических признаков 93.5 KB
  Новиков Смысл: семь дихотомических признаков Смысл относится к тем загадочным явлениям которые считаются как бы общеизвестными поскольку постоянно фигурируют как в научном так и обыденном общении. Иногда допускается что смысл принадлежит к тем наиболее общим категориям которые не подлежат определению и должны восприниматься как некоторая данность. В настоящее время в связи с необходимостью решения целого ряда актуальных задач как теоретического так и прикладного характера где понятие смысла играет ключевое значение требуются...