Смекни!
smekni.com

Разработка прикладной программы тестового контроля с использованием технологий JSP и сервлетов (стр. 3 из 5)

Document Object Model (объектная модель документа) является искусственной древовидной структурой, в которой каждый узел содержит один из компонентов XML-структуры. Двумя наиболее общими типами узлов являются узлы элементов и текстовые узлы. Использование функций DOM позволяет вам создавать узлы, удалять узлы, изменять их содержимое и проходить по иерархии узлов.

С самого начала DOM разрабатывался нейтральным к языку. Поскольку он был предназначался для использования с языками, подобными С или Perl, DOM не использует преимуществ объектно-ориентированных особенностей Java.

С другой стороны, создание DOM требует чтения полной XML-структуры и хранения дерева объектов в памяти, то есть этот метод использует значительно больше ресурсов CPU и памяти. По этой причине SAX API более предпочтителен для серверных приложений и фильтров данных, которые не требуют наличия данных в памяти.

Однако SAX-протокол требует гораздо большего объема программирования, чем Document Object Model (DOM). Это управляемая событиями модель (вы обеспечиваете методы обратного вызова, а анализатор вызывает их по мере чтения XML-данных), которая затрудняет визуализацию данных. И, наконец, вы не можете вернуться к предыдущей части документа или реорганизовать его, точно также, как не можете вернуться к предыдущим данным в последовательном потоке данных, или реорганизовать символы, прочитанные из потока. По этим причинам разработчики, создающие ориентированное на пользователя приложение, которое отображает XML-документ и, возможно, модифицирует его, будут, вероятно, использовать DOM-механизм,

Когда необходимо изменить XML-структуру, особенно если это нужно сделать в интерактивном режиме, больший смысл имеет применение структуры, находящейся в памяти, такой как DOM. Однако, в то время как DOM предоставляет много мощных возможностей для больших документов (таких как книги и статьи), он также требует много сложного кодирования.

Так как данная курсовая работы представляет собой приложение для работы с небольшими объемами данных, но которые необходимо часто менять, то целесообразно использовать DOM-механизм работы с XML-файлами.

1.5 Технология Java Servlet

Сервлет является Java-классом, используемым для расширения функциональных возможностей серверов, на которых размещаются приложения, доступ к которым осуществляется посредством программной модели запрос-ответ. Несмотря на то, что сервлеты могут отвечать на любой тип запроса, они используются для расширения приложений, находящихся на Web-серверах. Для таких приложений технология Java Servlet определяет характерные для HTTP классы сервлетов.

Пакеты javax.servlet и javax.servlet.http обеспечивают интерфейсы и классы для написания сервлетов. Все сервлеты должны реализовывать интерфейс Servlet, который определяет методы жизненного цикла. При реализации службы generic, можно использовать или расширять класс GenericServlet, поставляемый с интерфейсом API для Java Servlet. Класс HttpServlet обеспечивает для обработки служб HTTP такие методы, как doGet и doPost. Служба, обеспеченная сервлетом, реализована в методе service сервлета GenericServlet, методе doMethod (где Method может принимать значения Get, Delete, Options, Post, Put, Trace) сервлета HttpServlet или любых других, определенных протоколом методов, которые определены классом, реализующим интерфейс Servlet. В конце данного раздела, термин метод службы будет использован для любого метода класса сервлета, обеспечивающего службу клиенту.

Общим принципом действия метода службы является извлечение информации из запроса, доступ к внешним ресурсам и последующее заполнение ответа, базирующегося на данной информации. Для сервлетов HTTP, корректной процедурой заполнения ответа будет следующая последовательность действий: заполнение заголовков ответа, получение входящего потока из ответа и запись содержимого тела в исходящий поток. Заголовки ответов всегда должны устанавливаться перед получением PrintWriter или ServletOutputStream. Это необходимо по причине того, что HTTP-протокол ожидает получения всех заголовков перед перед получением содержимого тела.

Запрос содержит данные, передаваемые между клиентом и сервлетом. Все запросы реализуют интерфейс ServletRequest. Данный интерфейс определяет методы для доступа к следующей информации:

· Параметрам, которые обычно используются для передачи информации между клиентами и сервлетами.

· Объектно-значимым атрибутам, которые обычно используются для передачи.

· информации между контейнером сервлета и сервлетом, или между взаимодействующими сервлетами.

· Информации о протоколе, использованном для соединения, а также о клиенте и о сервере, которые вовлечены в запрос.

· Информации, относящейся к локализации.

Ответ содержит данные, передаваемые между сервером и клиентом. Все ответы реализуют интерфейс ServletResponse. Данный интерфейс определяет методы, которые позволяют вам выполнять следующие действия:

· Получать исходящий поток, используемый в отправке данных клиенту. Для отправки данных в текстовом виде используйте PrintWriter, возвращенный методом ответа getWriter. Для отправки бинарных данных в теле MIME ответа, используйте ServletOutputStream, возвращенный getOutputStream. Для совмещения бинарных и текстовых данных, к примеру, при создании ответа, сотоящего из нескольких частей, используйте ServletOutputStream, управляя секциями символов вручную.

· Обозначать тип содержимого (к примеру, text/html), возвращаемого в данном ответе.

· Указывать, осуществляется ли вывод в буфер. По-умолчанию, любое содержимое, записываемое в исходящий поток, немедленно отправляется клиенту. Буферизация позволяет записывать содержимое перед отправкой клиенту. Таким образом, сервлету предоставляется больше времени для установки соответствующих кодов статуса и заголовков, а также переотправки содержимого другому Web-ресурсу.

· Устанавливать информацию о регионе.

· Объекты HTTP-ответа HttpServletResponse имеют поля, отображающие такие заголовки HTTP как

o Коды статуса (Status codes), используются для обозначения причины, по которой не был удовлетворен запрос.

o Файлы сookie (Cookies), используются для сохранения у клиента информации, связанной с приложением. Иногда файлы cookie используются для сохранения идентификатора сессии пользователя.

1.6 Технология Java Server Pages

Технология JSP-страниц (JavaServer Pages - JSP) позволяет без труда создавать web-содержимое, у которого есть как статическая, так и динамическая компоненты. JSP-технология воплощает все динамические возможности Java Servlet-технологии, однако обеспечивает при этом более естественный подход к созданию постоянного содержимого. Основными характеристиками JSP-технологии являются:

· Язык разработки JSP-страниц, являющихся текстовыми документами, которые описывают процесс обработки запроса и конструирование ответа.

· Конструкции для получения доступа к объектам на стороне сервера.

· Механизмы, определяющие расширения для JSP-языка.

JSP-страницей является документ с текстовой основой, содержащий два типа текста: статические шаблонные данные, выражаемые при помощи любого формата на текстовой основе, такого как HTML, SVG, WML, и XML, а также JSP-элементы, которые создают динамическое содержимое.

Статическое содержимое создается в JSP-странице так же, как если бы это была обычная страница, содержащая только текстовый формат данных. Статическое содержимое может быть выражено в любом формате, предназначенном для форматирования текстов, к примеру, HTML, WML и XML. Форматом, определенным по-умолчанию, является HTML. При желании можно использовать и другой формат текста. Для этого включите в начало вашей JSP-страницы директиву page с атрибутом contentType, которому в качестве значения следует установить тип формата.

Динамическое содержимое создается путем обращения к объектам языка программирования Java из элементов сценариев.

Из JSP-страницы можно получить доступ к различным объектам, включая корпоративные компоненты и JavaBean-компоненты. JSP-технология автоматически организует доступ к определенным объектам так, что можно создавать объекты-приложения и обращаться к ним из JSP-страницы.

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

· Переменные экземпляра и класса, относящиеся к классу сервлета JSP-страницы, создаются в объявлениях и доступны в скриптлетах и выражениях.

· Локальные переменные класса сервлета JSP-страницы создаются и используются в скриптлетах и выражениях.

· Атрибуты объектов области действия создаются и используются в скриптлетах и выражениях.

· JavaBean-компоненты могут создаваться и быть доступными при помощи модернизированных JSP-элементов.

Вы также можете создавать JavaBean-компонент в объявлении или скриптлете и вызывать методы JavaBean-компонента в скриптлете или выражении.

JSP-скриптлет используется для хранения какого-либо фрагмента кода, действительного для языка сценариев, используемого в данной странице. Синтаксис для скриптлета выглядит следующим образом:

<%

scripting language statements

%>

Когда языком сценариев является java, скриптлет трансформируется во фрагмент выражения языка Java и вставляется в метод service сервлета JSP-страницы. Переменная языка программирования, созданная в скриптлете, доступна из любой точки JSP-страницы.

JSP-выражение используется для вставки в поток данных, возвращаемый клиенту, значения выражения языка сценариев, конвертированного в строку. Когда языком написания сценариев является Java, выражение преобразовывается в оператор, конвертирующий значение выражения в объект String и вставляющий его в неявный объект out. Синтаксис такого выражения выглядит следующим образом: