Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
полный ответ по веб сервис.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
324 Кб
Скачать
☆

19. Web.Xml файлы

XML (ағылш. Eхtensible Markup Language - Кеңейтілген Белгілеу Тілі) - мәшіне әрі адамлар оқи алатынбелгілеу тілі құжаттарды кодтауға қолданылатын-ды.

Тэг

Белгілеу конструкторы мынамен басаталады < және мынамен аяқталады >. Тэгтер үш түрде жызылуы мүмкін:

бастау-тэгтері; мысалы: <section> (қаз. <секция>).

аяқтау-тэгтері; мысалы: </section> (қаз. </секция>).

бос-элементті тэгтер; мысалы: <line-break /> (қаз. <келесі-жол />).

Элемент

Логикалық құжаттау компоненті басталу-тэгімен (ағылш. start-tag) басталып және сәйкесінше аяқталу-тэгі элементімен аяқталады (ағылш. end-tag) немесе бос-тэгті елементтен тұрады (ағылш. empty-element tag).<Сәлемдесу>Сәлем, әлем.</Сәлемдесу> (қараңыз hello world). Тағы біреуі <line-break />.

Аттрибут

Белгілеу конструкторы аты/мәні жұбынан тұрады, ол жұп бастау-тэгі не бос элемент-тэгі араларында жазылып отырады. Төмендегі мысалда img елементі екі аттрибуттан тұрады, олар src және alt:

<img src="madonna.jpg" alt='Foligno Madonna, by Raphael'/>

өзге мысал:

<қадам нөмір="3">A қосу B</қадам>

мұндағы аттрибуттың атты "нөмір", ал сандық мағынасы "3".

XML Декларациясы

XML құжаттары өздері жайлы кейбір ақпаратты беру арқылы басталуы мүмкін, мысалы:

<?xml version="1.0" encoding="UTF-8" ?>

XML тілі 1996 жылы SGML тілінің жаңа спецификациясы ретінде пайда болды.

Дескриптор развертывания — это конфигурационный файл артефакта, который будет развернут в контейнере сервлетов. В спецификации Java Platform, Enterprise Edition дескриптор развертывания описывает то, как компонент, модуль или приложение (такое как веб-приложение или приложение предприятия) должно быть развернуто[1].

Этот конфигурационный файл указывает параметры развертывания для модуля или приложения с определенными настройками, параметры безопасности и описывает конкретные требования к конфигурации. Для синтаксиса файлов дескриптора развертывания используется язык XML.

Для веб-приложений, дескриптор развертывания должен называться web.xml и находиться в директории WEB-INF, в корне веб-приложения. Этот файл является стандартным дескриптором развертывания, определенным в спецификации Сервлетов. Также есть и другие типы дескрипторов, такие как файл дескриптора развертывания sun-web.xml, содержащий специфичные для Sun GlassFish Enterprise Server данные для развертывания именно для этого сервера приложений или файл application.xml в директории META-INF для приложений J2EE.

Развертывание web-приложения

Спецификация 2.2 сервлетов Java достаточно подробно развивает концепцию web-приложений. Web-приложение — это совокупность сервлетов, классов Java, JSP-страниц, HTML-страниц и других ресурсов, которые могут объединяться в единое целое и выполняться в различных контейнерах. Чтобы это стало возможным, web-серверы не должны, как прежде, применять свои собственные схемы создания папок и инициализации; напротив, они должны выполнять определенные соглашения по установке, утвержденные Sun.

Изменения в API для сервлетов ясно говорят о том, что разработчики Java серьезно задумались о вопросах обеспечения безопасности как в отношении ограничения доступа извне, так и в отношении установки барьеров между различными web-приложениями, а также внутри самих приложений. Например, в более ранних версиях API метод getServletNames из класса ServletConext позволил бы одному сервлету определить имена всех сервлетов, выполняющихся в конкретной папке приложения. Метод getServlet затем мог бы получить ссылку на фактический объект сервлета. Также имелся метод getServlets, который возвращал перечень всех экземпляров сервлетов.

Все эти методы в версии API 2.2 считаются устаревшими и больше не возвращают полезную информацию. Все программисты, разрабатывающие сервле- ты, теперь должны специально заботиться о том, чтобы обеспечить их взаимодействие. Если, например, какой-либо объект требуется всем сервлетам данного приложения, его следует присоединить к объекту ServletContext с помощью метода setAttribute, поскольку именно объект ServletContext совместно используется всеми сервлетами приложения.

Если вы привыкли задействовать статические методы и переменные класса, чтобы обеспечить совместное использование приложениями определенных ресурсов, вы должны учитывать, что в версии API 2.2 у каждого web-приложения на сервере имеется собственный загрузчик классов. Это означает, что невозможно организовать с помощью статических методов и переменных совместное использование web-приложенями каких бы то ни было ресурсов.

Определение web-приложения

На этап определения web-приложения API сервлетов не накладывает никаких ограничений. Производители имеют полную свободу в создании собственных систем для определения контекста приложения на сервере. Сервер Tomcat использует файл server.xml для определения элемента ContextManager, содержащего многочисленные элементы Context. Многие из основных серверных функций определены в элементах Context, и они также задействуются для определения web- приложений. Например, ниже мы приводим элемент Context, который мы использовали для данной книги:

<Context path="/XMLbook" docBase="webapps/XMLbook" debug="0"

reload,able="true" > </Context>

Таким образом, относительно исходной папки сервера устанавливается корневая папка в физической структуре файлов, которую web-сервер использует для приложения XMLbook. Папки, входящие в корневую папку, требуются серверу для хранения HTML-страниц, JSP-страниц и других ресурсов, связанных с этим приложением, как будет показано в следующем разделе.

Также вы можете определить параметры, которые будут доступны всем серв- летам или JSP-страницам данного приложения через объект ServletContext. Ниже приводится пример применения элемента Parameter:

<Context path="/XMLbook" docBase=

"webapps/XMLbook" debug="0"

reloadable="true" >

<Parameter name="workdir" value="e \\scnpts\\XMLgifts" />

</Context>

В Tomcat используется соглашение о том, что корневая папка вашего приложения и ее вложенные папки по умолчанию содержатся во вложенной папке ROOT, как указано в следующем объявлении Context:

<Context path="" docBase="webapps/ROOT" debug="0"

reloadable="true" > </Context>

Папка ROOT содержит файл index.html, который автоматически отображается при вводе URL-адреса, например такого: http://localcost:8080/.

Структура папок

Атрибут doBase определяет базовое расположение файлов приложения относительно установочной папки Tomcat. Предположим, что установочная папка — c:\tomcat, тогда сервер предоставляет по умолчанию папку webapps для установки ваших web-приложений и полный путь к файлам приложения выглядит следующим образом:

с: \tomcat\webapps\XM Lbook

Поступающие на web-сервер запросы, в которых используются URL-адреса типа hhtp://localhost/XMLbook, будут обслуживаться в физической структуре папок относительно указанного пути. Например, пусть пользователь запрашивает файл, указывая следующий URL-адрес:

http://localhost/XMLbook/catalog/index.html

Тогда web-сервер направит этот запрос в физический файл по адресу:

c:\tomcat\webapps\XMLbookcatalog\index.html

Естественно, все запросы на таблицы стилей, файлы изображений и другие ресурсы будут выполняться подобным образом Здесь мы подходим к рассмотрению файла класса (class file), который используется апплетами Java и часто является причиной непонимания. Поскольку файл класса должен быть отправлен web-браузеру, как любой другой ресурс, класс апплета, или JAR-файл, должен храниться с простыми HTML-файлами, а не с файлами классов, используемыми сервлетами.

Чтобы отделить файлы классов и библиотеки классов, используемые приложением, от простых HTML-страниц, файлов изображений, файлов классов апп- летов и других ресурсов, в версии API 2.2 для сервлетов требуется, чтобы в папке приложения имелась вложенная папка WEB-IN F. Web-серверу запрещается посылать любые ресурсы из этой папки в ответ на запрос пользователя.

Если приложение было разработано как WAR-файл (более подробно мы поговорим об этих файлах позже), то должна присутствовать папка с именем МЕТА- INF. Смысл здесь в том, что данная папка будет содержать дополнительную информацию о приложении. Как и в отношении папки WEB-INF, web-сервер не имеет права отправлять пользователю любые содержащиеся в этой папке ресурсы.

Содержимое папки WEB-INF

В папке WEB-INF для web-приложения должен содержаться дескриптор развертывания в виде файла с именем web.xml. Этот файл должен быть согласован с опубликованным компанией Sun определением DTD для дескриптора развертывания web-приложения.

Все файлы классов сервлетов Java, уникальные для данного web-приложения, включая классы, используемые JSP-страницами, должны развертываться во вложенной папке classes, если они получены в виде отдельных файлов классов. В этой папке сохраняется обычная иерархия пакетов, так что, например, файл класса для сервлета QanalysnsServ из пакета com.XmlEcomBook.Chap()? будет содержаться в следующей вложенной папке основной папки приложения:

WEB-INF/classes/com/XmIBook/QanalysisServ.class

Альтернативой хранению отдельных файлов классов во вложенной папке classes является создание библиотеки файлов .jar. Файлы .jar, расположенные в папке WEB-INF/lib, доступны виртуальной машине Java при загрузке классов и других ресурсов для web-приложения. Заметим, что файлы .zip в этой папке будут игнорироваться, поэтому следует использовать файлы с расширением .jar.

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

Дескриптор развертывания web-приложения

В API сервлетов имеются спецификации, которые на основе составленного компанией Sun определения DTD идентифицируют сведения, содержащиеся в дескрипторе развертывания приложения. В листинге 10.1 показана часть файла web.xml, который использовался для некоторых сервлетов, описанных в этой книге.

Листинг 10.1. Часть файла web.xml для web-приложения (web.xml)

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app

PUBLIC "-//Sun Microsystems, Inc.

//DTD Web Application 2.2//EN"

"http://java.sun.com/j2ee/dtds/web-app_2.2.dtd">

<web-app>

<servlet><servlet-name>cattest</servlet-name>

<servlet-class>com.XmlEcomBook.catalog.CatalogTestServ

</servlet-class>

</servlet>

<servlet><servlet-name>catalog</servlet-name>

<servlet-class>com.XmlEcomBook.catalog.CatalogServ

</servlet-class>

<init-param>

<param-name>workdir</param-name>

<param-value>e:\\scripts\\XMLgifts</param-value>

</init-param>

</servlet>

В листинге 10.2 показана начальная часть файла web.dtd из версии 2.2 API сервлетов. Полная копия файла, содержащая более 400 строк, имеется на прилагаемом к книге компакт-диске.