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

1.4 Обзор стандартных анализаторов DOM и SAX

Java API for XML Processing (JAXP) предназначен для обработки XML-данных в приложениях, написанных на языке программирования Java. JAXP использует стандарты анализаторов SAX (Simple API for XML Parsing) и DOM (Document Object Model), так что вы можете выбирать между анализом данных как потока

событий или построением их объектного представления. JAXP поддерживает также стандарт XSLT (XML Stylesheet Language Transformations), предоставляющий вам контроль над представлением данных и позволяющий преобразование данных в другие XML-документы или в другие форматы, такие как HTML. JAXP обеспечивает также поддержку пространства имен, позволяя вам работать с DTD, которые могли бы в противном случае вызвать конфликт имен.

JAXP позволяет вам использовать любой XML-совместимый анализатор в вашем приложении. Это обеспечивается при помощи так называемого уровня подключений, который разрешает подключать реализации SAX или DOM API. Уровень подключений позволяет также подключить XSL-процессор, дающий вам контроль над способом отображения ваших XML-данных.

"Simple API" for XML (SAX) представляет собой основанный на событиях механизм последовательного доступа, осуществляющий обработку "элемент-за-элементом". API этого уровня читает и записывает XML в хранилище данных или Web. Для серверных и высокопроизводительных приложений вы должны полностью понимать этот уровень. Но для многих приложений достаточно минимальных знаний.

DOM API обычно легче в использовании. Он обеспечивает относительно знакомую древовидную структуру объектов. Вы можете использовать DOM API для управления иерархией объектов приложения, которые он объединяет. DOM API является идеальным для интерактивных приложений, поскольку в памяти присутствует полная модель объектов, к ней можно получить доступ и пользователь может управлять ею.

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, управляя секциями символов вручную.

Страница:  1  2  3  4  5  6  7 


Другие рефераты на тему «Программирование, компьютеры и кибернетика»:

Поиск рефератов

Последние рефераты раздела

Copyright © 2010-2024 - www.refsru.com - рефераты, курсовые и дипломные работы