| // |
| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| // |
| |
| = Присоединение дерева Dojo к ArrayList с помощью JSON |
| :jbake-type: tutorial |
| :jbake-tags: tutorials |
| :jbake-status: published |
| :icons: font |
| :syntax: true |
| :source-highlighter: pygments |
| :toc: left |
| :toc-title: |
| :description: Присоединение дерева Dojo к ArrayList с помощью JSON - Apache NetBeans |
| :keywords: Apache NetBeans, Tutorials, Присоединение дерева Dojo к ArrayList с помощью JSON |
| |
| Функции Web 2.0 приобретают все большее значение в веб-приложениях. Многие веб-приложения теперь используют наборы инструментов JavaScript, такие как link:http://www.dojotoolkit.org/[+Dojo+], что позволяет работать с веб-страницами как с интерфейсами рабочей среды и избавиться от проблем совместимости с браузерами, используя удобный в сопровождении, доступный и соответствующий стандартам код. |
| |
| Данное руководство является адаптацией курса link:http://developers.sun.com/learning/javaoneonline/j1lab.jsp?lab=LAB-5573&yr=2009&track=1[+JavaOne Hands-On Lab: Leveraging JavaScript Toolkits for End-to-End Connectivity in Web Applications ("Лабораторные работы по JavaOne: использование набора средств JavaScript для обеспечения сквозного соединения в веб-приложениях")+]; в нем показаны добавление и настройка link:http://dojocampus.org/explorer/#Dijit_Tree_Basic[+элемента оформления дерева Dojo+] на веб-странице с последующим приданием стороне сервера возможности отвечать на запросы в формате JSON. Выполнив это, вы будете использовать набор свободно доступных классов Java от link:http://json.org[+http://json.org+] для обработки данных из ArrayList в формате JSON. |
| |
| image::images/netbeans-stamp-80-74-73.png[title="Содержимое этой страницы применимо к IDE NetBeans 7.2, 7.3, 7.4 и 8.0"] |
| |
| |
| |
| *Для работы с этим документом требуются программное обеспечение и материалы, перечисленные ниже.* |
| |
| |=== |
| |Программное обеспечение или материал |Требуемая версия |
| |
| |link:https://netbeans.org/downloads/index.html[+IDE NetBeans+] |7.2, 7.3, 7.4, 8.0, Java EE |
| |
| |link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Комплект для разработчика на языке Java (JDK)+] |7 или 8 |
| |
| |Сервер GlassFish |
| _или_ |
| Контейнер сервлетов Tomcat |Open Source Edition 3.1.x или 4.x |
| _ _ |
| |
| [start=7] |
| .x или 8.x |
| |
| |link:http://www.dojotoolkit.org/download[+Набор средств Dojo+] |версия 1.8.x или более поздняя |
| |
| |link:https://netbeans.org/projects/samples/downloads/download/Samples/Java%20Web/DojoTreeSample.zip[+Образец проекта Dojo+] |неприменимо |
| |=== |
| |
| |
| *Примечания:* |
| |
| * Выполнение некоторых из действий, предусмотренных данным руководством, требует подключения к Интернету. |
| * Набор загрузки Java EE для среды IDE NetBeans позволяет при желании установить и зарегистрировать в среде IDE сервер приложений GlassFish Server Open Source Edition. Сервер необходим при работе с данным руководством для имитации связи клиент-сервер. |
| * Завершенный проект выглядит следующим образом: |
| |
| image::images/dojo-tree-complete.png[title="Выполненное упражнение можно просмотреть в браузере"] |
| |
| |
| |
| == Открытие примера проекта |
| |
| Начните с открытия образца проекта в среде IDE. Откройте проект и разверните узел проекта в окне "Проекты". Изучите ресурсы и библиотеки Dojo, используемые в проекте. |
| |
| 1. Загрузите прилагающийся к этому руководству link:https://netbeans.org/projects/samples/downloads/download/Samples%252FJavaScript%252FDojoTreeSample.zip[+образец проекта Dojо+] в одну из папок на своем компьютере. |
| 2. Нажмите кнопку 'Открыть проект' ( image:images/open-project-btn.png[] ) на панели инструментов IDE, чтобы открыть диалоговое окно 'Открыть проект'. |
| 3. В диалоговом окне 'Открыть проект' найдите образец проекта Dojo на своем компьютере и нажмите 'Открыть проект'. |
| |
| При открытии проекта `DojoTreeSample` в IDE вы увидите, что проект отмечен значком ошибки. Это указывает на наличие проблемы со ссылкой. |
| |
| image::images/proj-win-ref-problems.png[title="Ошибки ссылок на проект указываются текстом, выделенным красным и меткой ошибки"] |
| |
| Проблема с ссылкой существует, потому что классы Java, используемые в проекте(`Tribe` и `TribeDataManager`) ссылаются на классы, находящиеся в файле JAR JSON, которые позже будут добавлены в раздел<<addJSON,Добавление файлов JAR JSON к проекту>>. |
| |
| *Примечание. *Окно 'Проекты' (Ctrl-1; ⌘-1 в Mac) обеспечивает _логическое представление_ содержимого важных проектов и является основной точкой ввода для исходного кода проекта. Окно "Файлы" (Ctrl-2; ⌘-2 в Mac) отображает _представление на основе каталогов_ проектов, включая файлы и папки, не выведенные в окне "Проекты". |
| |
| |
| [start=4] |
| . Разверните узел `Веб-страницы` в окне "Проекты". |
| |
| Вы увидите, что в списке под узлом `Веб-страницы` в окне "Проекты" появилась папка ``resources`` . Папка ``resources`` содержит ядро Dojo и библиотеки Dijit из link:http://www.dojotoolkit.org/download[+набора инструментов Dojo+]. В целях реализации виджета дерева Dojo требуется два существенных компонента: модуль `ItemFileReadStore` из базовой библиотеки и сам виджет`Tree`, содержащийся в библиотеке Dijit. |
| |
| * `link:http://docs.dojocampus.org/dojo/data/ItemFileReadStore[+dojo.data.ItemFileReadStore+]`: считывает содержимое, имеющее структуру JSON, с оконечной точки HTTP (в случае данного руководства это сервлет) и сохраняет все элементы в памяти для простого и быстрого доступа. |
| * `link:http://docs.dojocampus.org/dijit/Tree[+dijit.Tree+]`: элемент оформления дерева, выводящий представление данных JSON, полученных от `ItemFileReadStore`. |
| |
| *Примечание.* Библиотека `DojoX` для данного проекта не требуется. |
| |
| |
| [start=5] |
| . Разверните узел `Библиотеки` в окне "Проекты" и убедитесь, что все требуемые библиотеки находятся на пути класса. |
| |
| *Примечание.* В зависимости от конфигурации может потребоваться устранить проблему, связанную с отсутствием сервера. Если в списке под узлом `Библиотеки` присутствует узел ``<Отсутствующий сервер Java EE>`` , щелкните правой кнопкой мыши узел проекта и выберите "Устранить проблему отсутствующего сервера". |
| |
| image::images/proj-win-dojo-resources.png[title="Библиотеки Dojo и Dijit добавлены в папку 'ресурсов' проекта"] |
| |
| В диалоговом окне "Разрешить проблемы со ссылками" выберите GlassFish Server. Нажмите ОК. |
| |
| image::images/dojo-add-server.png[title="Библиотеки Dojo и Dijit добавлены в папку 'ресурсов' проекта"] |
| |
| Теперь проект `DojoTreeSample` открыт в IDE, и все библиотеки Dojo включены в приложение. На следующем шаге вы начнете работать с HTML-файлом, который будет отображать виджет Tree для конечного пользователя. |
| |
| |
| == Создание ссылки на ресурсы набора средств из файла проекта |
| |
| Чтобы использовать ресурсы из набора инструментов, необходимо создать ссылку на файл `dojo.js`, который можно найти в библиотеке Core. Файл `dojo.js` является _загрузчиком источников_ для Dojo и определяет среду размещения, которую следует использовать. В процессе также можно настроить `djConfig`, добавив параметр `parseOnLoad`. |
| |
| 1. В окне 'Проекты' дважды щелкните файл `dojoDemo.html`, чтобы открыть его в редакторе. |
| 2. В файле `dojoDemo.html` добавьте следующие теги `<script>` (выделены полужирным шрифтом) между тегами `<заголовков>`. |
| |
| [source,xml] |
| ---- |
| |
| <!-- TODO: link to Dojo resources here --> |
| |
| *<script type="text/javascript"> |
| var djConfig = {parseOnLoad: true, |
| isDebug: true}; |
| </script> |
| <script |
| type="text/javascript" |
| src="resources/dojo/dojo.js"> |
| </script>* |
| |
| </head> |
| ---- |
| * `link:http://dojotoolkit.org/reference-guide/1.6/djConfig.html[+djConfig+]` позволяет переопределять глобальные параметры, управляющие работой Dojo (например, использование свойства `parseOnLoad`). |
| * Установка `parseOnLoad` в `true` гарантирует, что элементы оформления и разметка страницы подвергаются синтаксическому анализу при загрузке страницы. |
| |
| [start=3] |
| . Добавьте ссылку на `nihilo` link:http://docs.dojocampus.org/dijit/themes[+образец темы+], который содержится в наборе инструментальных средств путем добавления следующей инструкции `@import` (выделена полужирным шрифтом) между тегами `<заголовков>` тегами и ниже добавленных вами тегов `<сценария>`. |
| |
| [source,xml] |
| ---- |
| |
| <script type="text/javascript"> |
| var djConfig = {parseOnLoad: true, |
| isDebug: true}; |
| </script> |
| <script |
| type="text/javascript" |
| src="resources/dojo/dojo.js"> |
| </script> |
| |
| *<style type="text/css"> |
| @import "resources/dijit/themes/nihilo/nihilo.css"; |
| </style>* |
| ---- |
| |
| Тема `nihilo` включается по умолчанию в набор инструментальных средств. Вы можете развернуть папку `dijit/themes` в окне 'Проекты', чтобы увидеть другие образцы тем, которые предоставлены по умолчанию. |
| |
| |
| [start=4] |
| . Добавьте следующее средство выбора класса к тегу `<body>` страницы, чтобы указать имя темы, которая теперь используется. Когда мы это делаем, любой элемент оформления Dojo, загруженный на страницу, будет визуализирован с использованием стилей, связанных с заданной темой. |
| |
| [source,java] |
| ---- |
| |
| <body *class="nihilo"*> |
| ---- |
| |
| На данном этапе файл `dojoDemo.html` готов принять любой код, который ссылается на основную библиотеку Dojo и библиотеку Dijit, и будет визуализировать любые виджеты, используя тему `nihilo` Dojo. |
| |
| |
| == Добавление и настройка элемента оформления дерева Dojo |
| |
| После создания ссылки на `dojo.js` можно начать добавлять код для использования модулей и виджетов Dojo. Сперва добавьте код для загрузки элемента оформления `dijit.Tree` и `dojo.data.ItemFileReadStore`, используя операторы `link:http://docs.dojocampus.org/dojo/require[+dojo.require+]`. Затем добавьте на страницу сам элемент оформления и модуль. |
| |
| 1. Добавьте следующие операторы `dojo.require` (выделены полужирным шрифтом) к файлу между тегами ``<body<`` . |
| |
| [source,xml] |
| ---- |
| |
| <script type="text/javascript"> |
| |
| // TODO: add dojo.require statements here |
| *dojo.require("dojo.data.ItemFileReadStore"); |
| dojo.require("dijit.Tree");* |
| |
| </script> |
| ---- |
| * `link:http://docs.dojocampus.org/dojo/data/ItemFileReadStore[+dojo.data.ItemFileReadStore+]`: считывает содержимое, имеющее структуру JSON, с оконечной точки HTTP (в разделе <<prepareServlet,Подготовка сервлета для инициализации ответа JSON>> мы применим сервлет для этого) и сохраняет все элементы в памяти для простого и быстрого доступа. |
| * `link:http://docs.dojocampus.org/dijit/Tree[+dijit.Tree+]`: элемент оформления дерева, выводящий представление данных JSON, полученных от `ItemFileReadStore`. |
| |
| [start=2] |
| . Добавьте следующий код (выделен полужирным шрифтом), чтобы добавить `ItemFileReadStore` и виджет `Tree`. |
| |
| [source,html] |
| ---- |
| |
| <!-- TODO: specify AJAX retrieval --> |
| |
| <!-- TODO: add Tree widget and configure attributes --> |
| *<div dojoType="dojo.data.ItemFileReadStore" |
| url="TribeServlet" |
| jsId="indianStore"> |
| </div> |
| |
| <div dojoType="dijit.Tree" |
| store="indianStore" |
| query="{type:'region'}" |
| label="North American Indians"> |
| </div>* |
| ---- |
| * `ItemFileReadStore` требует указания свойства`url` путем указания ресурса на стороне сервера, возвращающего данные JSON. Как будет показано ниже, это `TribeServlet`. Свойство `jsId` можно использовать для назначения полученным данным JSON идентификатора, который элементы управления смогут затем использовать для ссылок на хранилище данных. |
| * `Tree` использует свойство `store` для указания на `ItemFileReadStore`, предоставляющий данные JSON. Свойство `query` позволяет упорядочить отображение данных, основываясь на ключевом слове, использованном в файле JSON. |
| |
| *Примечание.* Вы можете игнорировать предупреждения, которые появляются в редакторе после добавления этого кода. |
| |
| На этом этапе файл `dojoDemo.html` и все необходимые изменения, относящиеся к _стороне клиента_, внесены в проект. На двух следующих этапах мы внесем изменения в поведение проекта на _стороне сервера_ при выполнении запросов дерева. |
| |
| |
| |
| == Добавление источников преобразования JSON к проекту в форме файла JAR |
| |
| В этом руководстве логика, извлекающая образец данных ArrayList, уже подготовлена в классах `Tribe` и `TribeDataManager`. По сути, необходимо лишь включить классы Java от сторонних производителей, выполняющие преобразование JSON, в проект, а затем добавить операторы `import` для этих классов к классах `Tribe` и `TribeDataManager`. Но для выполнения этого сперва необходимо скомпилировать классы Java от сторонних производителей и создать архив Java (файл JAR). Среда IDE может помочь в этом, предоставляя мастер библиотеки классов Java. |
| |
| 1. Посетите link:http://json.org/java[+http://json.org/java+] и обратите внимание, что классы Java для преобразования JSON доступны свободно. Нажмите ссылку 'Бесплатный исходный код доступен', чтобы скачать файл `JSON-java-master.zip`, который содержит источники. |
| 2. Распакуйте файл `JSON-java-master.zip` и обратите внимание, что извлеченная папка содержит источники, перечисленные в link:http://json.org/java[+http://json.org/java+]. |
| |
| На данный момент необходимо скомпилировать эти источники и создать архив Java (файл JAR), который следует добавить к проекту `DojoTreeSample`. |
| |
| |
| [start=3] |
| . Нажмите кнопку 'Создать проект' ( image:images/new-project-btn.png[] ) на панели инструментов, чтобы открыть мастер создания проектов. |
| |
| [start=4] |
| . В мастере создания проектов выберите шаблон проекта библиотеки классов Java в категории Java. Нажмите кнопку 'Далее'. |
| |
| [start=5] |
| . На панели 'Имя и местоположение' мастера библиотек классов Java введите *`json`* в качестве имени проекта. Нажмите кнопку "Завершить". |
| |
| После нажатия кнопки 'Готово' новый проект будет создан и открыт в окне 'Проекты'. |
| |
| Теперь необходимо скопировать исходный код JSON, загруженный в проект ``json`` , аналогично копированию ресурсов набора инструментальных средств Dojo в проект ``DojoTreeSample`` . |
| |
| |
| [start=6] |
| . Распакуйте архив `JSON-java-master.zip` и скопируйте (Ctrl-C; ⌘-C на Mac) исходные файлы Java, находящиеся в корневой папке. |
| |
| *Примечание.* Папку `zip` и ее содержимое копировать не требуется, так как она уже находится в корневой папке распакованного архива. |
| |
| |
| [start=7] |
| . В окне "Проекты" в IDE щелкните правой кнопкой мыши узел "Исходные пакеты" и выберите пункт меню "Создать > Пакет Java". |
| |
| [start=8] |
| . В качестве имени пакета укажите *json*. Нажмите кнопку "Завершить". |
| |
| [start=9] |
| . Щелкните правой кнопкой мыши исходный пакет `json` и выберите пункт меню "Вставить". |
| |
| Если развернуть пакет, будут видны исходные файлы ``json`` . |
| |
| image::images/proj-win-json-sources.png[title="Источники теперь хранятся в новом проекте 'json'"] |
| |
| [start=10] |
| . Щелкните правой кнопкой мыши узел проекта `json` в окне 'Проекты' и выберите 'Очистить' и 'Построить' для сборки проекта. |
| |
| При построении проекта все классы Java компилируются в файлы `.class`. Среда IDE создает папку `build`, содержащую скомпилированные классы, а также папку `dist`, содержащую файл JAR для проекта. Эти папки можно просматривать в окне Files ("Файлы") среды IDE. |
| |
| После сборки проекта `json` откройте окно 'Файлы' (Ctrl-2; ⌘ -2 в Mac) и разверните папку `json`. Папка `build` содержит скомпилированные источники из файла `JSON-java-master.zip` и папки `dist`. Папка содержит JAR-файл, на который должен ссылаться проект `DojoTreeSample`. |
| |
| image::images/files-win-compiled-classes.png[title="Скомпилированные источники можно просмотреть в папке 'сборки' проекта"] |
| |
| Теперь, когда у нас есть файл `json.jar`, можно разрешить проблему со ссылками, которая имелась у проекта `DojoTreeSample` с момента его открытия. |
| |
| |
| [start=11] |
| . В окне 'Проекты' щелкните правой кнопкой мыши узел Libraries `DojoTreeSample` и выберите 'Добавить файл JAR/папку'. Затем в диалоговом окне перейдите к местоположению папки `dist` проекта `json` и выберите файл `json.jar`. |
| |
| Также можно щелкнуть правой кнопкой мыши узел "Библиотеки", выбрать пункт меню "Добавить проект" и выбрать проект `json` в диалоговом окне "Добавить проект". |
| |
| После выхода из диалогового окна файл `json.jar` появится в узле `Libraries` проекта. |
| |
| image::images/libraries-json-jar.png[title="В проекте содержится ссылка на файл JAR"] |
| |
| *Примечание. *Хотя файл `json.jar` указан в узле проекта `Библиотеки`, ссылка на него находится в исходном местоположении - она не скопирована и добавлена к проекту (например, она отсутствует в проекте `DojoTreeSample` в окне 'Файлы'). Поэтому в случае изменения местоположения файла JAR ссылка будет нарушена. |
| |
| |
| [start=12] |
| . Разверните `Source Packages` ("Пакеты исходного кода") > пакет `dojo.indians` и дважды щелкните классы `Tribe` и `TribeDataManager`, чтобы открыть их в редакторе. |
| |
| [start=13] |
| . Добавьте к обоим классам необходимые операторы импорта. Во всех классах щелкните правой кнопкой мыши в редакторе и выберите 'Исправить выражения импорта'. |
| |
| Классу `Tribe` требуются следующие операторы импорта: |
| |
| [source,java] |
| ---- |
| |
| import dojo.org.json.JSONException; |
| import dojo.org.json.JSONObject; |
| ---- |
| Классу `TribeDataManager` требуются следующие операторы импорта: |
| |
| [source,java] |
| ---- |
| |
| import dojo.org.json.JSONArray; |
| import dojo.org.json.JSONException; |
| import dojo.org.json.JSONObject; |
| ---- |
| |
| Обратите внимание, что интерфейсы API для классов JSON также предоставлены на link:http://json.org/java[+http://json.org/java+] – эту страницу может быть желательно оставить открытой, так как ниже мы рассмотрим код в `Tribe` и `TribeDataManager`. |
| |
| |
| [start=14] |
| . Рассмотрение ArrayList в `TribeDataManager`. ArrayList является коллекцией объектов `Tribe`. Взглянув на первый элемент ArrayList, можно увидеть, что новый объект `Tribe` создан и добавлен к списку: |
| |
| [source,java] |
| ---- |
| |
| indians.add(new Tribe("Eskimo-Aleut", "Arctic", "Alaska Natives")); |
| ---- |
| Каждый объект `Tribe` записывает три точки данных: _tribe_ ("племя"), _category_ ("группа") и _region_ ("регион"). Данные для этого упражнения взяты из статьи Википедии по link:http://en.wikipedia.org/wiki/Native_Americans_in_the_United_States#Ethno-linguistic_classification[+коренным народам США+]. Как можно увидеть, _племена_ разбиваются на _группы_, и несколько категорий могут быть охвачены более крупным _регионом_. |
| |
| [start=15] |
| . Откройте класс `Tribe` в редакторе и обратите внимание, что он, по сути, является компонентом link:http://java.sun.com/docs/books/tutorial/javabeans/index.html[+JavaBean+], за исключением метода `toJSONObject()`: |
| |
| [source,java] |
| ---- |
| |
| public JSONObject toJSONObject() throws JSONException { |
| JSONObject jo = new JSONObject(); |
| jo.put("name", this.name); |
| jo.put("type", "tribe"); |
| |
| return jo; |
| } |
| ---- |
| |
| [start=16] |
| . Переключитесь обратно на `TribeDataManager` (Ctrl-Tab) и изучите методы, входящие в класс. Откройте навигатор (Ctrl-7; ⌘-7 в Mac), чтобы просмотреть список полей и свойств, содержащихся в классе. |
| |
| image::images/dojo-navigator.png[title=""Навигатор компонентов" обеспечивает просмотр полей и свойств классов."] |
| |
| Наиболее важным методом здесь является`getIndiansAsJSONObject()`. Этот метод просматривает ArrayList, обрабатывает данные и возвращает их в форме `JSONObject`. Форма `String` JSONObject и является тем, что нужно модулю `ItemFileReadStore` Dojo. |
| |
| [source,java] |
| ---- |
| |
| public static JSONObject getIndiansAsJSONObject() throws JSONException { |
| |
| JSONObject jo = new JSONObject(); |
| JSONArray itemsArray = new JSONArray(); |
| |
| jo.put("identifier", "name"); |
| jo.put("label", "name"); |
| |
| // add regions |
| addRegionsToJSONArray(itemsArray); |
| |
| // add categories |
| addCategoriesToJSONArray(itemsArray); |
| |
| // add tribes |
| addTribesToJSONArray(itemsArray); |
| |
| jo.put("items", itemsArray); |
| return jo; |
| } |
| ---- |
| |
| [start=17] |
| . Откройте документацию Javadoc по методу `getIndiansAsJSONObject()`. Для этого вернитесь в навигатор (Ctrl-7; ⌘-7 в Mac) и подведите курсор к методу. В ином случае выберите Window ("Окно") > Other ("Прочие") > Javadoc ("Документация Java") из основного меню и щелкните сигнатуру метода в редакторе. |
| |
| image::images/javadoc-window.png[title="Javadoc для TribeDataManager обеспечивает пример данных JSON"] |
| |
| [start=18] |
| . Изучите образец данных JSON, предоставленный документацией Javadoc. Обратите внимание, что формат данных соответствует примерам, предоставленным в link:http://o.dojotoolkit.org/book/dojo-book-0-9/part-3-programmatic-dijit-and-dojo/what-dojo-data/available-stores/dojo-data-item[+документации Dojo+]. |
| |
| |
| === Отладчик Java IDE NetBeans |
| |
| На следующем этапе мы реализуем сервлет, вызывающий метод `getIndiansAsJSONObject()`. После этого можно выполнять следующие действия, чтобы использовать отладчик Java IDE для пошагового использования метода и анализа формата `JSONObject`. |
| |
| 1. Установите точку останова на методе (нажмите номер строки (например, строка 99) в левом поле редактора). |
| |
| image::images/debugger-breakpoint.png[title="Используйте отладчик Java для перехода по коду"] |
| |
| [start=2] |
| . Выберите проект ``DojoTreeSample`` в окне 'Проекты'. |
| |
| [start=3] |
| . Запустите отладчик (нажмите кнопку 'Отладка проекта' ( image:images/debug-btn.png[] ) на панели инструментов). |
| |
| [start=4] |
| . Используйте кнопки 'С заходом' ( image:images/step-into-btn.png[] ) и 'Без захода' ( image:images/step-over-btn.png[] ) на панели инструментов. |
| |
| [start=5] |
| . Изучите значения переменных и выражений в окне 'Локальные переменные' ('Окно' > 'Отладка' > 'Переменные'). |
| |
| Дополнительные сведения об отладчике Java приведены в следующих экранных демонстрациях: |
| |
| * link:../java/debug-stepinto-screencast.html[+Визуальное действие входа в процедуры в отладчике NetBeans+] |
| * link:../java/debug-deadlock-screencast.html[+Обнаружение взаимоблокировки с помощью отладчика NetBeans+] |
| * link:../java/debug-evaluator-screencast.html[+Использование вычисления фрагментов кода в отладчике NetBeans+] |
| |
| |
| На данном этапе мы скомпилировали исходные коды от сторонних производителей, взятые с link:http://json.org[+http://json.org+], и добавили их как файл JAR к проекту `DojoTreeSample`. Затем мы добавили операторы импорта к классам из файла JAR в классах `Tribe` и `TribeDataManager`. Наконец, мы изучили некоторые из методов, содержащихся в `TribeDataManager`, и использовали их для преобразования данных ArrayList в строку JSON. |
| |
| На следующем этапе мы создадим сервлет, который будет обрабатывать входящие запросы, вызывая метод `getIndiansAsJSONObject()` класса `TribeDataManager`, и отправлять получающуюся строку JSON в качестве ответа клиенту. |
| |
| |
| |
| == Подготовка сервлета для инициирования ответа JSON |
| |
| <<TribeServlet,Вспомним, что мы указали '`TribeServlet`' в качестве значения свойства `url` при>> добавлении `ItemFileReadStore` к нашей веб-странице. Это сервлет назначения на стороне сервера, где осуществляется обработка данных JSON и возвращение их клиенту. Давайте создадим этот сервлет. |
| |
| 1. В окне 'Проекты' щелкните правой кнопкой мыши исходный пакет `dojo.indians` и выберите 'Создать' > 'Сервлет'. |
| 2. В мастере создания сервлетов введите *`TribeServlet`* в качестве имени класса. Убедитесь, что `dojo.indians` указан как пакет. Нажмите кнопку 'Далее'. |
| |
| image::images/new-servlet-wizard.png[title="Используйте мастер создания сервлетов для создания сервлетов"] |
| |
| [start=3] |
| . Проверьте значения по умолчанию в полях "Имя сервлета" и "Шаблоны URL". Нажмите "Готово", чтобы создать класс skeleton для сервлета. |
| |
| Функция сервлета состоит в вызове метода `getIndiansAsJSONObject()` и использовании данных из этого метода для ответа на запрос клиента. Чтобы подготовить ответ в формате JSON, нам сперва надо установить формат JSON как тип MIME ответа. |
| |
| *Примечание.* Мастер автоматически добавит имя сервлета и шаблон URL в файл `web.xml`. Как следствие, все запросы к домену размещения (т. е., `http://localhost:8080/DojoTreeSample/`) для `TribeServlet` будут обрабатываться классом `dojo.indians.TribeServlet`. Если открыть файл `web.xml` в редакторе, можно увидеть, что в этом файле появились элементы `<servlet>` и `<servlet-mapping>`. |
| |
| |
| [start=4] |
| . Измените метод `processRequest()`, внеся следующие изменения (выделены полужирным шрифтом). |
| |
| [source,java] |
| ---- |
| |
| response.setContentType("*application/json*"); |
| ---- |
| |
| Это изменение устанавливает заголовок `Content-Type` для отклика HTTP, чтобы указать, что все возвращаемое содержимое имеет формат JSON. |
| |
| |
| [start=5] |
| . Замените закомментированный код внутри блока `try` метода `processRequest()` на следующий код (изменения выделены *жирным шрифтом*): |
| |
| [source,java] |
| ---- |
| |
| try { |
| |
| *JSONObject jo = null; |
| try { |
| jo = TribeDataManager.getIndiansAsJSONObject(); |
| } catch (JSONException ex) { |
| System.out.println("Unable to get JSONObject: " + ex.getMessage()); |
| } |
| |
| out.println(jo);* |
| |
| } finally { |
| out.close(); |
| } |
| ---- |
| |
| Чтобы изменить формат кода, щелкните правой кнопкой мыши в редакторе и выберите 'Формат'. |
| |
| |
| [start=6] |
| . Используйте подсказки IDE, чтобы добавить следующие операторы импорта. |
| |
| [source,java] |
| ---- |
| |
| import dojo.org.json.JSONException; |
| import dojo.org.json.JSONObject; |
| ---- |
| |
| [start=7] |
| . Для запуска проекта выберите узел проекта `DojoTreeSample` в окне 'Проекты', затем нажмите кнопку 'Запустить проект' ( image:images/run-project-btn.png[] ) на панели инструментов IDE. |
| |
| Браузер откроется на странице приветствия (`dojoDemo.html`), и можно будет увидеть, что элемент оформления Dojo Tree правильно отображает данные из ArrayList, как показано на <<final,снимке экрана>> выше. |
| link:/about/contact_form.html?to=3&subject=Feedback:%20Connecting%20a%20Dojo%20Tree%20to%20an%20ArrayList[+Мы ждем ваших отзывов+] |
| |
| |
| |
| == Дополнительные сведения |
| |
| Дополнительные сведения о Dojo приведены в официальной документации: |
| |
| * Справочное руководство по набору средств Dojo: link:http://dojotoolkit.org/reference-guide/[+Справочное руководство+] |
| * Интерактивная справка по интерфейсу API: link:http://api.dojotoolkit.org/[+http://api.dojotoolkit.org/+] |
| * Демонстрация Dojo: link:http://demos.dojotoolkit.org/demos/[+http://demos.dojotoolkit.org/demos/+] |
| |
| Дополнительные сведения о JavaScript и функциях набора средств JavaScript на link:https://netbeans.org/[+netbeans.org+] приведены в следующих материалах: |
| |
| * link:js-toolkits-jquery.html[+Использование jQuery для улучшения внешнего вида веб-страницы и упрощения работы с ней+]. Дано введение в jQuery, показаны действия по применению элемента оформления "гармошки" jQuery к разметке HTML на веб-странице. |
| * link:ajax-quickstart.html[+Введение в Ajax (Java)+]. Описана сборка простого приложения с использованием технологии сервлетов, в то же время показан внутренний процесс обработки запроса Ajax. |
| * link:http://www.oracle.com/pls/topic/lookup?ctx=nb8000&id=NBDAG2272[+Создание файлов JavaScript+] в документе _Разработка приложений в IDE NetBeans_ |