• Сервлет java пример создания. Java

    17.10.2020

    Сервлет - это 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: first

    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 является её многогранная природа. Конечно, создание традиционных десктопных и даже мобильных приложений - это здорово. Но что, если вы хотите уйти с проторенных дорожек и зайти на территорию разработки web приложений на Java? Для вас есть хорошая новость: в комплекте с языком идёт полноценный Servlet API, который позволяет вам создавать надёжные веб-приложения без особых хлопот.

    Создание приложений на Java с помощью Servlets

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

    Работаем над внешним видом

    Внешний вид приложения будет определяться двумя JSP-файлами - в контексте MVC они называются представлениями. Первый будет отвечать за отображение формы регистрации и возможных ошибок, вызванных после проверки введённых данных. Второй будет обычной страницей приветствия, в которой будут показаны данные, введённые клиентом, после успешного завершения процесса регистрации.

    Вот первый JSP-файл:

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

    Регистрация

    ${violation}.

    Похожие статьи