Руководство Java Servlet для начинающих

Java Servlet - это программа на стороне сервера, написанная на одноименном языке программирования, которая получает сигналы клиента и отправляет ему ответы обратно. Это ключевой элемент, формирующий типичное Java EE, помимо JSP, EJB, XML и других связанных технологий. Приложение может быть упаковано в файл WAR (Web AR chive) для развертывания на веб-сервере. Сервер, который может запускать Java-сервлет, называется контейнером. Программа, которая запускается на таком сервере может создавать динамические веб-страницы.

Java Servlet: основы

Java Servlet основы

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

Типичный сценарий модели:

  1. JSP представляет пользователю форму для ввода данных.
  2. Сервлет получает входные данные, обрабатывает их и отправляет ответ.
  3. Для качественной работы он использует специальные фильтры.

Java Servlet Filters - это подключаемые компоненты Java, которые используются для перехвата и обработки запросов до их отправки сервлетам и ответа после завершения его кода, и до того, как контейнер отправит ответ клиенту.

Общие задачи, которые выполняют с фильтрами:

  1. Регистрирование параметров запроса для регистрации файлов.
  2. Аутентификация и авторизация запроса ресурсов.
  3. Форматирование тела запроса или заголовка перед отправкой его на сервлет.
  4. Сжатие данных ответа, отправленных клиенту.
  5. Изменение ответа, добавление некоторые файлов cookie.
  6. Информация заголовка Java Servlet.

Фильтры подключаются и настраиваются в файле дескриптора развертывания (web.xml). Сервлеты и фильтры не знают друг о друге, поэтому можно добавить или удалить фильтр, просто отредактировав web.xml. Допускается иметь несколько фильтров для одного ресурса или создать цепочку фильтров для web.xml или запустить Java Servlet filters, реализуя javax.servlet.Filter интерфейс.

Основные функции Servlet

Основные функции Servlet

Параллельные запросы на сервер обрабатываются потоками, что обеспечивает важные качества веб - многопоточность и параллелизм.

Основные функции:

  1. Портативность. Поскольку Java независима от платформы, то же самое верно и для сервлетов. Например, можно создать его в операционной системе Windows, чтобы разработчики GlassFish использовали его в качестве веб-сервера, а затем могли запустить его в любой другой ОС, такой как Unix, Linux с веб-сервером apache Java Servlet. Эта функция делает его переносимым, и это главное его преимущество над CGI.
  2. Эффективность и масштабируемость. Как только Servlet развертывается и загружается на веб-сервер, он может мгновенно начать выполнение запросов клиентов. Он вызывается легким потоком, поэтому несколько клиентских запросов могут заполняться одновременно, используя функцию многопоточности Java. В отличие от CGI, где сервер инициирует новый процесс для каждого запроса клиента.
  3. Надежность. Наследуя верхние функции Java такие, как сбор мусора, обработка исключений, диспетчер безопасности Java и другие, он менее подвержен проблемам с управлением и утечкам памяти. Это делает разработку приложения в нем безопасной и безошибочной.

Необходимость применения динамических веб-страниц

Существует немало причин, по которым бизнес хотел бы создавать динамические веб-страницы «на лету», например, когда данные на веб-сайте часто меняются. Сайты новостей и погоды обычно полагаются на CGI, чтобы поддерживать свежий контент, не требующего постоянного внимания разработчиков. Веб-страницы электронной коммерции, в которых перечислены текущие цены и уровни запасов, используют CGI для получения этого контента по требованию, получая его из внутренней инфраструктуры компании.

Многие пользователи имеют опыт использования технологии Джава для создания веб-сервисов на базе CGI, но Java Servlets более эффективны, мощнее, проще в использовании и дешевле традиционных альтернатив CGI.

Преимущества Java Servlets:

  1. Эффективность. В традиционном CGI каждый HTTP-запрос запускает новый процесс CGI. Даже если его код отлично реализован, часто возникает значительный объем накладных расходов не только при запуске процесса, но и во время его выполнения. Когда используются сервлеты, JVM остается загруженным в памяти, и каждый запрос обрабатывается потоком Java. В качестве примера Java Servlet, если в традиционной модели CGI имеется количество X одновременных запросов, это означает, что код для программы загружается в память X раз. Это становится чрезмерной нагрузкой на веб-сервер. Однако в среде сервлета есть потоки X, где запускается только одна копия его класса. Результатом этого является повышение эффективности и масштабируемости на нескольких платформах.
  2. Удобство. При пользовании программой, нет смысла изучать новый язык, например, Perl, только для выполнения функций CGI. Кроме того, сервлеты имеют обширную инфраструктуру для многих задач, связанных с HTML, что значительно ускоряет процесс разработки.
  3. Мощность - к сожалению, традиционные скрипты CGI оставляют желать лучшего. Например, обычные их программы не могут напрямую разговаривать с веб-серверами, что означает, что необходимо создать весь интерфейс. Сервлеты могут напрямую взаимодействовать с веб-серверами, упрощая операции, требующие прямого доступа к хранилищам данных. Они также уникальны, потому что могут обмениваться данными с другими сервлетами и поддерживать информацию между запросами, что делает сеансовое отслеживание чрезвычайно простым.
  4. Переносимость Джава распространяется непосредственно на сервлеты. Фактически почти каждый главный веб-сервер, который в настоящее время используется, поддерживает Java Servlets напрямую или через подключаемый модуль.
  5. Экономность. С точки зрения разработки, внедрение сервлетов намного дешевле, чем другие варианты, которые требуют, чтобы пользовательское кодирование правильно взаимодействовало с веб-серверами. 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 со следующим кодом.

QuickServlet.java в каталоге

Этот сервлет вызывает несколько методов из HttpServlet:

  • init () - будет вызывать метод, когда он получает доступ первым клиентом. Обычно здесь вводится код инициализации.
  • doGet () - срабатывает каждый раз, при HTTP-запросе GET.
вызывает несколько методов

Сервлет вводит два элемента:

  1. HttpServletRequest - объект обертывает все заголовки HTTP-запросов, чтобы получить контроль над параметрами GET / POST, а также другим HTTP-заголовкам, отправленным от клиентов через методы getParameter () и getHeader () соответственно.
  2. HttpServletResponse - используется для ответов на HTTP-запрос, выполняет настройку заголовков ответа и отправляет содержимое HTML обратно пользователю. В методе doGet () отправляют простой HTML-код, который передает сообщение, например, «Привет, я сервлет Java!».

Метод для реализации запросов клиента:

  1. DoPost () - вызывается в то время, когда пользователь запрашивает HTTP POST.
  2. DoGet () - понимает Http.ServletRequest и Http.ServletResponse, как аргументы. В этом случае извлекают значения двух параметров ширины и высоты прямоугольника из запроса для вычисления области и отправки результата обратно клиенту.
  3. Destroy () - контейнер будет вызывать его, когда ему нужно удаление Java, ee Servlet останавливается.

Написание JSP-страницы

Создают файл под названием index.jsp под каталогом WebContent со следующим содержанием.

Написание JSP-страницы

На этой странице JSP:

  1. Помещают гиперссылку с атрибутом href = Quick.Servlet, который указывает на относительный путь сервлета и сопоставление URL для него.
  2. Нажав на эту ссылку, получают HTTP-запрос GET на сервер, и будет вызван метод doGet ().
  3. Чтобы продемонстрировать отправку HTTP-запроса, создают простую форму с двумя текстовыми полями: шириной и высотой.
  4. Атрибут формы в действие устанавливается на относительный путь.
  5. Кнопка «Отправить» называется «Рассчитать».

Страница JSP будет выглядеть так.

Страница JSP

Объявление и настройка Java web Servlet

Чтобы сервлет мог обслуживать запросы пользователей, необходимо объявить и настроить сопоставление его в файле дескриптора веб. Создают XML-файл с расширением web.xml ниже каталога WebContent \ WEB-INF со следующим кодом XML.

Объявление и настройка Java web Servlet

Очевидно, что сервлет объявляется с помощью элемента и его дочерних элементов, указывающих описательное имя для него и задающих полное имя класса. Он настроен на обслуживание запросов с использованием элемента и его дочерних частей, указывающих имя, объявленного с помощью элемента и шаблон URL, который должен быть сопоставлен с сервлетом. Шаблон может быть точным совпадением каталога.

Выполнение компиляции

Выполнение компиляции

Перед выполнением компиляции убеждаются, что задана переменная среда PATH, включающая каталог JDK_HOME\bin, чтобы можно было получить доступ в строке команд и иметь доступный файл, который, обычно, предоставляется контейнером сервлета.

При использовании Томкат файл помещается в TOMCAT_HOME\lib и называется. Открывают служебную программу командной строки операционной системы и изменяют рабочий каталог на 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. В командной строчке вводят команду, обязательно в конце указывается точка:

  • jarcfvdeploy\QuickServletApp.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

Примеры Tomcat

Сервлет - это веб-компонент Java, управляемый своим контейнером, например, Tomcat, который генерирует динамический контент в ответ на запрос клиента. Контейнер или сервлет-движок является расширением веб-сервера, которое обеспечивает функциональность сервлета. Контейнер содержит и управляет сервлетами на протяжении всего жизненного цикла.

Servlet интерфейс - центральная абстракция API Java. HttpServlet - наиболее распространенный сервлет, который обрабатывает HTTP-запросы, является подклассом, GenericServlet, реализующий Servlet интерфейс. Servlet Интерфейс самостоятельно объявляет эти abstract методы.

Жизненный цикл сервлета: voidinit (настройка Servlet.Config) voiddestroy () voidservice (запрос Java Servlet request, ответ Servlet.Response)

Конфигурация сервлета и информация: Servlet.Config getServlet.Config () Строка getServlet.Info ().

Функции сервера Java

Функции сервера Java

JSP - еще один эффективный способ создания динамического веб-контента с использованием Java. Самый простой способ объяснить разницу между ними - это признать, что сервлет - это HTML на Java, а JSP - Java в HTML. Оба метода эффективны и могут использоваться независимо, но есть несколько отличий:

  1. Как правило, сервлеты работают быстрее, чем JSP, однако JSP может быть скомпилирован в сервлеты Java.
  2. Веб-разработчик Java, должен быть знаком с обеими технологиями и как они могут дополнять друг друга в одной реализации.
  3. Многие функции JSP могут быть достигнуты на стороне клиента с использованием JavaScript. Это снижает нагрузку на веб-сервер в периоды максимального использования и часто является методом, используемым для крупных предприятий с постоянно высоким трафиком.

Хотя автономные Java-приложения, достигли пика популярности несколько лет назад, но динамический веб-контент, построенный на технологии Java, по-прежнему пользуется большим спросом у компаний во всем мире.

Если пользователь в настоящее время не использует Java Servlets для создания динамического контента, он упускает интересное поле с неограниченными возможностями для карьерного роста.

Статья закончилась. Вопросы остались?
Комментарии 0
Подписаться
Я хочу получать
Правила публикации
Редактирование комментария возможно в течении пяти минут после его создания, либо до момента появления ответа на данный комментарий.