Сервлети Servlets. Створення програм на Java за допомогою Servlets Servlet основи

Сервлет - це Java-nporpaMMa, яка як свій суперклас використовує клас HttpServiet. Сервлет використовується для того, щоб розширити можливості існуючого сервера, зокрема Web-сервера. Як правило, сервлет працює на спеціальному сервері. Такі сервери звуться серверів Java-додатків (Java Application Server). До складу сервера Java-додатків як складовий блок входить Web-сервер (іноді не один, а кілька), а також сервери, що працюють із серверними компонентами, сервери допоміжних служб тощо. Сервлет працює в оточенні, яке надає йому сервер. Частина сервера, призначена для роботи із сервлетами, називається контейнером сервлетів. Специфікація сервлетів передбачає наявність у класі сервлету стандартних методів, виконання яких відбувається на тому чи іншому етапі життєвого циклу сервлету. Виклик цих методів здійснюється контейнером сервлетів. Імплементація специфікації сервлетів входить до набору стандартних пакетів Java.

У цій книзі розглядається сервер Java-додатків під назвою Blazix. Сервер Blazix надає повний набір можливостей для роботи із сервлетами. Крім створення класу (або класів) сервлета, а також для конфігурування створеної програми-сервлета, встановлення її на сервер необхідно змінити файл конфігурації Web-сервера. Основні значення вказуються у файлі конфігурації у такому вигляді: servlet.name: myservlet

servlet.myservlet.className: mypackage.MyServletClass servlet.myservlet.url: /mysrvlet

У кожного сервлета має бути поставлене ім'я(servlet.name), яким він ідентифікується на сервері. Це ім'я використовується для завдання властивостей сервлета, зокрема, для вказівки імені класу, в якому зберігається програма сервлета (наступний рядок), а також адреси, за якою відбувається звернення до цього сервлета (третій рядок).

Клієнт запитує у Web-сервера адресу, за якою розташований сервлет (адреса має бути вказана як значення servlet.myservlet.url у файлі конфігурації Web-сервера). Сервер передає запит та дані (якщо вони є) сервлету, отримує відповідь від сервлета та надсилає його клієнту.

На цьому пояснення про те, що таке сервлет можна було б закінчити. Однак існує безліч цікавих та корисних деталей, на яких слід затримати увагу та вивчити їх докладніше.

Особливо важливо мати на увазі, що шлях до класу сервлету має бути вказаний у змінній ciasspath або його можна помістити в каталог C:\Blazix\classes або в каталог, який вказаний у файлі конфігурації Web-сервера як значення server.ciassDir. Після того, як файл конфігурації був змінений і в нього вставлена ​​інформація про новий сервлет, сервер повинен бути зупинений і запущений знову. Сервлет може бути розміщений і на сервері, що працює, за допомогою утиліти адміністрування, але для цього сервлет повинен бути упакований у файл Web-архіву WAR. Якщо файл класу сервлета змінено, то зупиняти сервер і запускати його знову необов'язково. За замовчуванням сервер налаштований так, що виклик сервлета за адресою http://localhost:81/_reload призводить до того, що всі класи будуть перезавантажені і змінений клас сервлета буде доступним для клієнтських запитів (рис. 4.1). Відвідайте цю сторінку після того, як буде змінено файл сервлетового класу. Зупинка сервера просто не потрібна.

Якщо читач вже мав деякий досвід роботи з сервлетами, він оцінить ту простоту, яка властива серверу Blazix проти іншими Java- серверами, наприклад, із сервером Tomcat.

Щоб одразу приступити до справи, розглянемо простий приклад, сервлет some- Servlet (Листинг 4.1).

Лістинг 4.1. Сервлет SomeServlet.java I

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 ( Printwriter out = response.getWriter(); out.println("Hello World");

У файлі конфігурації Web-сервера запишемо наступне:

servlet.name: перша

servlet.first.className: SomeServlet

servlet.first.url: /dofirst

Тоді звернення до сервлета з браузера набуде вигляду http://localhost:81 / Dofirst (рис. 4.2).

Сервлети Java надають платформонезалежний метод створення Web-додатків (це не безперечно, проте ми не будемо розглядати це питання глибше, оскільки тоді нам потрібно визначитися з тим, що розуміти під Web-додатком, що не входить до переліку тем, що розглядаються), причому багато додатків відрізняються швидкістю в роботі та позбавлені тих обмежень, які є у CGI-додатків. Сервлет працює під керуванням Web-сервера і, на відміну аплета, не вимагає графічного інтерфейсу користувача. Сервлет взаємодіє із сервером, обмінюючись із запитами і відповідями. Клієнтська програма звертається до сервера із запитами. Запит обробляється сервером, передається сервлет, сервлет посилає відповідь через сервер клієнту. На сьогоднішній день сервлет дуже популярні при створенні інтерактивних Web-додатків. Існує безліч Web-серверів, здатних працювати із сервлетами, серед них такі сервери, як Tomcat, iPlanet Web Server (раніше Netscape

Enterprise Server), Blazix. J Builder Enterprise використовує сервер Borland Enterprise Server (BES), що входить до складу пакету, а також підтримує роботу з серверами Web Logic, WebSphere та iPlanet. J Builder Enterprise Server включає сервер Tomcat, який використовується "за замовчуванням".

Мал. 4.2. Звернення до сервлета

Однією важливою перевагою сервлетів є швидкість їхньої роботи. На відміну від програм CGI, сервлети завантажуються в пам'ять лише один раз і потім виконуються безпосередньо з пам'яті. Сервлети, по суті, є багатопотоковими додатками. До того ж вони платформонезалежні, оскільки написані мовою Java.

Технологія JSP, якій присвяченоглава 3, є розширенням технології сервлетів, в JSP особливу увагуприділяється роботі з HTML- та XML-документами. У складі HTML-і XML-коду JSP-фрагменти знаходять своє найчастіше застосування. Як зробити вибір та вирішити, що використовувати: сервлети чи серверні сторінки? Сервлети більше підходять для розв'язання задач низькорівневого програмування та менш пристосовані для розв'язання задач створення логіки подання програми. Серверні сторінки JSP, навпаки, в основному сконцентровані на тому, як уявити результат користувачеві в найбільш зручному вигляді. Серверні сторінки створюються вбудованими в HTML-код, використовуючи стиль створення HTML-документів. Технологія JSP надає набагато багатші можливості, ніж простий HTML. Сторінки JSP можуть надавати можливості реалізації логіки програм з використанням простих компонентів Java, а також серверних компонентів EJB, шляхом створення користувацьких бібліотек ярликів. Самі собою серверні сторінки Java можуть бути модульними, багаторазово використовуваними компонентами, які працюють із логікою уявлення, які можна використовувати разом із різними шаблонами і фільтрами. JSP-сторінки перетворюються на сервлети, тому теоретично можна користуватися виключно сервлетами. Однак технологія JSP створена для того, щоб спростити процес створення Web-документів, відокремивши логіку подання програми від змісту документа. У більшості випадків відповідь, що відправляється клієнтові, складається як з шаблонів подання документа, так і з даних, які генеруються автоматично, заповнюючи шаблон. У таких ситуаціях виявляється набагато легше працювати з JSP, ніж із сервлетами.

Однією із найприємніших особливостей Java є її багатогранна природа. Звичайно, створення традиційних десктопних і навіть мобільних додатків- це здорово. Але що, якщо ви хочете піти з проторених доріжок і зайти на територію розробки веб-додатків на Java? Для вас є хороша новина: у комплекті з мовою йде повноцінний Servlet API, який дозволяє вам створювати надійні веб-програми без особливих турбот.

Створення програм на Java за допомогою Servlets

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

Працюємо над зовнішнім виглядом

Зовнішній вигляд програми визначатиметься двома JSP-файлами – у контексті MVC вони називаються уявленнями. Перший відповідатиме за відображення форми реєстрації та можливих помилоквикликаних після перевірки введених даних. Другою буде звичайною сторінкою привітання, де будуть показані дані, введені клієнтом, після успішного завершення процесу реєстрації.

Ось перший JSP-файл:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> Реєстрація

Реєстрація

$ (Violation).