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".


 

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

48136. Основы семиотики и семантики 628.5 KB
  Основанный на неизобразительной символике орнамент был почти исключительно геометрическим состоящим из строгих форм круга полукруга овала спирали квадрата ромба треугольника креста и их различных комбинаций. французский ученый Эжен Бурнуф впервые дал четырехконечному кресту с загнутыми концами санскритское название свастика что примерно означает несущая добро. Например: египетский крест анх прочитывался жизнь изображение коленопреклоненной фигурки хех вечность и др. Появляются в декоре Византии эмблемы и символы новой...
48137. Особливості побудови оздоровчих програм 215.5 KB
  Загальнодидактичні українські програми: Базова програма розвитку дитини дошкільного віку Я у Світі; Програма виховання дітей дошкільного віку Малятко; Програма виховання і навчання дітей від 3 до 7 років Дитина; Регіональна програма розвитку навчання та виховання Дитина в дошкільні роки; Регіональна програма виховання дітей у дитячому садку Українське дошкілля; Авторська програма М. Спеціальні програми розробляються для дошкільних навчальних закладів груп компенсуючого типу з урахуванням специфіки організації в них...
48138. Политика стимулирования привлечения иностранных инвестиций 89.5 KB
  В развивающихся странах чаще применяется практика снижения налоговых ставок возврата налогов предоставления налоговых каникул. Таким образом в практике стимулирования зарубежных инвестиций промышленно развитых стран преобладают финансовые средства а в практике развивающихся государств и стран с переходной экономикой фискальные или налоговые средства стимулирования; чаще используются льготные таможенные пошлины на импортируемое производственное оборудование что в промышленно развитых странах является малоэффективной мерой в силу...
48139. Понятие ППП (Пакета прикладных программ) 181 KB
  Примерами входных языков ППП являются VB в пакете MS Office utoLISP VisulLISP в utodesk utoCD StrBsic в OpenOffice. Так например в пакете OpenOffice. На Jv через SDK и функции PI OpenOffice можно создавать модули расширения и полнофункциональные приложениякомпоненты.1 Структура и состав MS Office.
48140. Числове програмне управління і класифікація верстатів з ЧПУ 16.41 MB
  Етапи підготовки процесу обробки деталі на верстаті з ЧПУ: І бюро програмного управління ІІ цех; а збирання вихідної інформації креслення деталі дані про інструмент технологічні дані по режимах обробки б розрахунок програми в табличний запис програми г перфорація програми на перфораторі д перфострічка е ПЧПУ верстатом ж шафа електроавтоматики з верстат и заготовка к оброблена деталь. На підставі...
48141. ПАТОФИЗИОЛОГИЯ 506 KB
  Для каждой болезни характерны определенное типичное для нее течение во времени определенные изменения дыхания кро вообращения температуры тела изменения периферической крови и т. недостаточное насыщение крови кислородом. без пульса состояние гипоксии сочетающееся с повышением напряжения углекислоты в крови и тканях. Гипоксия при патологических процессах нарушающих снабжение тканей кислородом при нормальном содержании его в окружающей среде или утилизации кислорода...
48142. Політична економія. Тексти лекцій 746.5 KB
  Товарна форма організації суспільного виробництва. Капітал: процес виробництва і нагромадження. Витрати виробництва і прибуток. Галузеві особливості виробництва і функціонування капіталу.
48143. Студент і викладач вищого навчального закладу 117 KB
  Розгорнулися наукові дослідження психічного розвитку дорослої людини і можливостей її навчання. Нині проблеми розвитку навчання і виховання зрілої людини на всіх етапах її життєвого шляху досліджуються андрагогікою і педагогічною антропологією наукові основи якої закладено К. Для викладача вищої школи важливо добре знати психологічні особливості навчання і виховання студента особливості розвитку і типологію його особистості. Типи студентської молоді можна аналізувати за різними чинниками: у зв´язку з обраною професією залежно від форми...