Новини високих технологій
» » Керівництво Java Servlet для початківців

Керівництво Java Servlet для початківців

12-11-2018, 15:57
395
Java Servlet - це програма на стороні сервера, написана на однойменному мовою програмування, яка отримує сигнали клієнта і відправляє йому відповіді назад. Це ключовий елемент, що формує типове Java EE, крім JSP, EJB, XML та інших пов'язаних технологій. Додаток може бути упаковано в файл WAR (Web AR chive) для розгортання на веб-сервері. Сервер, який може запускати Java-сервлет, називається контейнером. Програма, яка запускається на такому сервері може створювати динамічні веб-сторінки.

Java Servlet: основи

Найвідомішими і широко використовуваними є контейнерами Tomcat і JBoss. Технічно сервлет - це нормальний Java-клас, який має розширення для загального клієнт-серверного протоколу або HTTP. На практиці він застосовується для обробки запитів, через перевизначення HttpServlet GET і POST відповідно. Контейнер Java Servlet надає Http.ServletRequest і Http.ServletResponse - об'єкти, які працюють за схемою " запит-відповідь. І зазвичай використовується у поєднанні з JSP для створення динамічного контенту.


Типовий сценарій моделі: JSP представляє користувачеві форму введення даних. Сервлет отримує вхідні дані, обробляє їх і відправляє відповідь. Для якісної роботи він використовує спеціальні фільтри. Java Servlet Filters - це підключаються компоненти Java, які використовуються для перехоплення і оброблення запитів до їх відправки сервлетам і відповіді після завершення його коду, і до того, як контейнер надсилає відповідь клієнту. Загальні завдання, які виконують з фільтрами: Реєстрування параметрів запиту для реєстрації файлів. Аутентифікація і авторизація запиту ресурсів. Форматування тіла запиту або заголовка перед відправкою його на сервлет. Стиснення даних відповіді, які надсилаються клієнту. Зміна відповіді, додавання деякі файлів cookie. Інформація заголовка Java Servlet. Фільтри підключаються і настроюються у файлі дескриптор розгортання (web.xml). Сервлети та фільтри не знають один про одного, тому можна додати або видалити фільтр, просто відредагувавши web.xml. Допускається мати кілька фільтрів для одного ресурсу або створити ланцюжок фільтрів для web.xml або запустити Java Servlet filters, реалізуючи javax.servlet.Filter інтерфейс.


Основні функції Servlet

Паралельні запити на сервер обробляються потоками, що забезпечує важливі якості веб - багатопоточність і паралелізм. Основні функції: Портативність. Оскільки Java незалежна від платформи, те ж саме вірно і для сервлетів. Наприклад, можна створити його в операційній системі Windows, щоб розробники GlassFish використовували його в якості веб-сервера, а потім могли запустити його в будь-який інший ОС, такий як Unix, Linux і веб-сервером apache Java Servlet. Ця функція робить його портативним, і це головне його перевагу над CGI. Ефективність і масштабованість. Як тільки Servlet розгортається і завантажується на сервер, він може миттєво почати виконання запитів клієнтів. Він викликається легким потоком, тому кілька клієнтських запитів можуть заповнюватися одночасно, використовуючи функцію багатопоточності Java. На відміну від CGI, де сервер ініціює новий процес для кожного запиту клієнта. Надійність. Наслідуючи верхні функції Java такі, як збір сміття, обробка виключень, диспетчер безпеки Java і інші, він менш схильний до проблем з управлінням і витокам пам'яті. Це робить розробку додатка в ньому безпечної та безпомилковою.

Необхідність застосування динамічних веб-сторінок

Існує чимало причин, за якими бізнес хотів би створювати динамічні веб-сторінки «на льоту», наприклад, коли дані на веб-сайті часто змінюються. Сайти новин та погоди зазвичай покладаються на CGI, щоб підтримувати свіжий контент, що не вимагає постійної уваги розробників. Веб-сторінки електронної комерції, в яких перераховані поточні ціни і рівні запасів, використовують CGI для отримання контенту на вимогу, отримуючи його з внутрішньої інфраструктури компанії.
Багато користувачі мають досвід використання технології Джава для створення веб-сервісів на базі CGI, але Java Servlets більш ефективні, могутніше, простіше у використанні і дешевше традиційних альтернатив CGI. Переваги Java Servlets: Ефективність. У традиційному CGI кожен HTTP-запит запускає новий процес CGI. Навіть якщо його код відмінно реалізований, часто виникає значний обсяг накладних витрат не тільки при запуску процесу, а й під час його виконання. Коли використовуються сервлети, JVM залишається завантаженим в пам'яті, і кожен запит обробляється потоком Java. В якості прикладу Java Servlet, якщо в традиційній моделі CGI є кількість X одночасних запитів, це означає, що код для програми завантажується в пам'ять X разів. Це стає надмірним навантаженням на веб-сервер. Однак у середовищі сервлета є потоки X, де запускається тільки одна копія його класу. Результатом цього є підвищення ефективності і масштабованості на декількох платформах. Зручність. При користуванні програмою, немає сенсу вивчати нову мову, наприклад, Perl, тільки для виконання функцій CGI. Крім того, сервлети мають велику інфраструктуру для багатьох завдань, пов'язаних з HTML, що значно прискорює процес розробки. Потужність - на жаль, традиційні скрипти CGI залишають бажати кращого. Наприклад, звичайні їхні програми не можуть безпосередньо розмовляти з веб-серверами, що означає, що необхідно створити весь інтерфейс. Сервлети можуть безпосередньо взаємодіяти з веб-серверами, спрощуючи операції, що вимагають прямого доступу до сховищ даних. Вони також унікальні, тому що можуть обмінюватися даними з іншими сервлетами і підтримувати інформацію між запитами, що робить сеансне відстеження надзвичайно простим. Переносимість Джава поширюється безпосередньо на сервлети. Фактично майже кожен головний веб-сервер, який в даний час використовується, підтримує Java Servlets безпосередньо або через модуль. Економність. З точки зору розробки, впровадження сервлетів набагато дешевше, ніж інші варіанти, які вимагають, щоб користувальницьке кодування правильно взаємодіяло з веб-серверами. Java Servlet redirect готовий до роботи і може максимально знизити вартість бізнесу, не жертвуючи перевагами динамічного контенту.

Створення структури каталогів

Щоб почати роботу, створюють наступну структуру каталогів.
Де в папці: Deploy - поміщають створений файл. Src - розміщують вихідні файли Java пакет net.codejava.servlet. WebContent - зберігають сторінки JSP і інші веб-ресурси. WebContent WEB-INF - встановлений дескриптор web.xml. WebContent WEB-INF - скомпільовані класи. Далі створюють вихідний файл під назвою Java QuickServlet.java в каталозі src net codejava servlet з наступним кодом.
Цей сервлет викликає кілька методів з HttpServlet: init () - буде викликати метод, коли він отримує доступ першим клієнтом. Зазвичай тут вводиться код ініціалізації. doGet () - спрацьовує кожного разу, коли HTTP-запит GET.
Сервлет вводить два елемента: HttpServletRequest - об'єкт обгортає всі заголовки HTTP-запитів, щоб отримати контроль над параметрами GET /POST, а також іншим HTTP-заголовків, відправленим від клієнтів через методи getParameter () і getHeader () відповідно. HttpServletResponse - використовується для відповідей на HTTP-запит, виконує настроювання заголовків відповіді і відправляє HTML-вміст назад користувачеві. У методі doGet () відправляють простий HTML-код, який передає повідомлення, наприклад, «Привіт, я сервлет Java!». Метод для реалізації запитів клієнта:

DoPost () - викликається в той час, коли користувач запитує HTTP POST. DoGet () - розуміє Http.ServletRequest і Http.ServletResponse, як аргументи. У цьому випадку отримують значення двох параметрів ширини та висоти прямокутника з запиту для обчислення області та відправки результату назад клієнтові. Destroy () - контейнер буде викликати його, коли йому потрібно видалення Java ee Servlet зупиняється.

Написання JSP-сторінки

Створюють файл під назвою index.jsp під каталогом WebContent з наступним змістом.
На цій сторінці JSP: Поміщають гіперпосилання з атрибутом href = Quick.Servlet, який вказує на відносний шлях сервлета і зіставлення URL для нього. Натиснувши на це посилання, отримують HTTP GET запит на сервер, і буде викликаний метод doGet (). Щоб продемонструвати відправку HTTP-запиту, створюють просту форму з двома текстовими полями: шириною і висотою. Атрибут форми в дію встановлюється на відносний шлях. Кнопка «Відправити» називається «Розрахувати». Сторінка JSP буде виглядати так.

Оголошення та налаштування Java web Servlet

Щоб сервлет міг обслуговувати запити користувачів, необхідно оголосити і налаштувати зіставлення його у файлі дескриптора веб. Створюють XML-файл з розширенням web.xml нижче каталогу WebContent WEB-INF з наступним кодом XML.
Очевидно, що сервлет оголошується за допомогою елемента і його дочірніх елементів, що вказують описову назву для нього і задають повне ім'я класу. Він налаштований на обслуговування запитів з використанням елемента і його дочірніх частин, що вказують ім'я, оголошеного за допомогою елемента і шаблон URL, який повинен бути зіставлений з сервлетом. Шаблон може бути точним співпадінням каталогу.

Виконання компіляції

Перед виконанням компіляції переконуються, що задана змінна середовище PATH, що включає каталог JDK_HOMEbin, щоб можна було отримати доступ в рядку команд і мати доступний файл, який, зазвичай, надається контейнером сервлета. При використанні Томкат файл поміщається в TOMCAT_HOMElib і називається. Відкривають утиліту командного рядка операційної системи і змінюють робочий каталог на QuickServlet, як зазначено в структурі. Вводять наступну команду: javac -cp TOMCAT_HOME lib servlet-api.jar "-d CLASS_DIR SRC_DIR QuickServlet.java. Замінюють імена TOMCAT.HOME, CLASS_DIR і SRC_DIR на значення: TOMCAT_HOME. Це настановний каталог на комп'ютері в папці. Якщо шлях містить прогалини, поміщають його наступним чином: CLASS_DIR =WebContent WEB-INF classes SRC_DIR =src net codejava servlet. Ця команда скомпилирует файл QuickServlet.java і розмістить згенерований .class WebContent WEB-INF classes.

Упаковка веб-додатки

Стандартний спосіб розгортання програми Java EE полягає в його упаковці з розширенням WAR. У командному рядку вводять команду, обов'язково наприкінці вказується точка: jarcfvdeployQuickServletApp.war -C WebContent. Програма jar помістить всі в каталог в один архів zip-формату під назвою Quick.ServletApp.war під каталогом. Тепер розгортають файл Quick.ServletApp.war на сервері, копіюють його в каталог Tomcat. Запускають програму, виконавши Tomcat 7.exe в каталозі. Після входу в консоль видно, що файл Quick.ServletApp.war розгорнутий і сервер прослуховує номер порту 8080.

Тестування QuickServletApp

Тепер відкривають веб-браузер і вводять наступний текст в адресний рядок: HTTP: //локальний: 8080 /QuickServletApp. Оскільки не вказується конкретна сторінка, тому за замовчуванням index.jsp завантажується самостійно. Щоб перевірити сервлет із запитом HTTP GET, натискають на гіперпосилання «Натисніть тут, щоб відправити запит GET». Щоб перевірити його з запитом HTTP POST, натискають кнопку повернення браузера і вводять два числа в ширину і висоту текстових полів. Натискають кнопку «Обчислити», і він поверне обчислену область результат.

Приклади Tomcat

Сервлет - це веб-компонент Java, керований своїм контейнером, наприклад, Tomcat, який генерує динамічний контент у відповідь на запит клієнта. Контейнер або сервлет-движок є розширенням веб-сервера, яке забезпечує функціональність сервлета. Контейнер містить і управляє сервлетами на протязі всього життєвого циклу. Servlet інтерфейс - центральна абстракція Java API. HttpServlet - найбільш поширений сервлет, який обробляє HTTP-запити, є підкласом, GenericServlet, що реалізує Servlet інтерфейс. Servlet Інтерфейс самостійно оголошує ці abstract методи. Життєвий цикл сервлета: voidinit (настройка Servlet.Config) voiddestroy () voidservice запит Java Servlet request, відповідь Servlet.Response) Конфігурація сервлета і інформація: Servlet.Config getServlet.Config () Рядок getServlet.Info ().

Функції сервера Java

JSP - ще один ефективний спосіб створення динамічного веб-контенту з використанням Java. Найпростіший спосіб пояснити різницю між ними - це визнати, що сервлет - це HTML на Java, а JSP - Java в HTML. Обидва методи ефективні і можуть використовуватися незалежно, але є декілька відмінностей: Як правило, сервлети працюють швидше, ніж JSP, однак JSP може бути скомпільований в сервлети Java. Веб-розробник Java, повинен бути знайомий з обома технологіями і як вони можуть доповнювати один одного в одній реалізації. Багато функції JSP можуть бути досягнуті на стороні клієнта з використанням jаvascript. Це знижує навантаження на сервер в періоди максимального використання і часто є методом, використовуваним для великих підприємств з постійно високим трафіком. Хоча автономні Java-додатки, досягли піку популярності кілька років тому, але динамічний веб-контент, побудований на технології Java, як і раніше користується великим попитом у компаній у всьому світі. Якщо користувач в даний час не використовує Java Servlets для створення динамічного контенту, він упускає цікаве поле з необмеженими можливостями для кар'єрного зростання.
Цікаво по темі
System out println java — консольний вивід
System out println java — консольний вивід
Докладний опис роботи методу System.out.println() в Java. Функції реалізації виводу рядків, змінних, спецификаторов і escape-послідовностей.
Як здійснити запис у файл Java
Як здійснити запис у файл Java
При написанні програм на мові Java рано чи пізно постане необхідність читання і запису інформації в файл. Для цього в мові передбачені наступні
Як встановлювати Java на Windows 7
Як встановлювати Java на Windows 7
Процес завантаження та встановлення Java на операційну систему Windows 7. Особливості, налаштування змінних середовищ і перевірка установки.
Перша програма на Java - Hello World
Перша програма на Java - Hello World
Як написати свою першу програму на Java. Приклад вихідного коду найпростішого Hello World на Java. Опис методів і класу.
Як здійснюється перевірка Java-версії?
Як здійснюється перевірка Java-версії?
У процесі виконання завдань на комп'ютері або ноутбуці іноді потрібна наявність Java. Однією з найпоширеніших ...
BigInteger Java: робота з великими числами
BigInteger Java: робота з великими числами
Для роботи з числами, які не можуть зберігається в стандартних примітивних типів, в Java є спеціальний клас BigInteger. Він не тільки інкапсулює їх