![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
azalia |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
Необходим совет в выборе наилучшего оптимального и более производительного решения следующей задачи, т.е. "толчок в нужном направлении"
![]() Надо XML-документ передавать удаленно клиенту в браузер, причем не целиком, а только те данные, которые он запрашивает, т.к. сам xml-файл большой. Потом клиент из этих данных выбирает нужные, задает необходимые значения и отсылат назад ввиде какого-то нового XML-файла. Причем перед отсылкой данных, данные вновь синхронизируются с удаленным файлом XML, на наличие изменений. И если изменения есть и они как-то негативно сказываются на выборе клиента (например, не хватает уже нужного количества), то сообщать ему. Сам файл выгружается из базы и помещается на web-сервер (доступ в саму базу закрыт из вне). Так же хотелось бы реализовать, чтобы в базе при обновлении данных выгружались только те данные, которые обновляются, т.е. своего рода синхронизация. Но это, наверно, реализуется самой базой и не относится к самому XML? А может его структуру надо формировать каким-то специальным образом? Нашла в инете много решений по парсингу xml при помощи java-технологий (к чему я более всего и склоняюсь). Наверно, еще придется использовать Ajax (чего мне не очень хочется, т.к. я им не владею). Но среди всех этих решений я не нашла ответ на вопрос, передается ли документ целиком клиенту перед тем как его разбирать и выводить на страницу, либо весь документ передается в память и там разбирается... Подскажите, а? ![]() |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: нет Всего: 142 |
Если честно, то я в вопросе не увидел вообще ничего, что относиось бы к самому XML. Всё это решается средствами той технологии, которая используется на сервере(ява так ява). -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
azalia |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
а XPath не поможет? |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: нет Всего: 142 |
Если на сервере просто лежит хмл-документ, то запросить его часть, описанную через XPath невозможно. Документ придёт полностью. То что тебе нужно, делается при помощи серверного скрипта, для того, чтобы на сервере из документа были выбраныкакие-то данные надо там запустить какую-то программу, но хмл - не рограмма, он просто описывает данные. -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
azalia |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
Понятно, спасибо! А как мне теперь перенести эту тему, например в J2EE? Или может на форуме есть специальный раздел, где решаются подобного рода задачи и продумывается в целом архитектура приложения? |
|||
|
||||
diadiavova |
|
|||
![]() Доктор Зло(диагност, настоящий, с лицензией и полномочиями) ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5821 Регистрация: 14.8.2008 Где: В Коньфпольте Репутация: нет Всего: 142 |
Это к модератору раздела.
Специальный раздел зависит от используемой технологии. Это, видимо, сюда http://forum.vingrad.ru/forum/tech-system-...d-modeling.html -------------------- Хочешь получить мудрый совет - читай подписи участников форумов. Злой доктор Щасзаболит ![]() |
|||
|
||||
azalia |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
Спасибо за помощь diadiavova!!! Огромный респект ;)
|
|||
|
||||
azalia |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
что-то тишина...может я не так выразилась или снова не по теме...придется наверно разбить задачу на несколько мелких...
я конечно новичок в этом деле и только учусь, но в общем основная идея, которую бы я хотела решить при помощи J2EE -технологий с применением Servlets, JSP, JAXP и т.д. состоит в следующем: как мне использовать 1 большой XML-файл частями? А именно, могу ли я создать 2 сервелета, один из которых бы парсил структуру XML так, чтобы выделять из него основные заголовки, а другим сервелетом подтягивать уже нужные данные в зависимости от выбранного заголовка (т.е.скорее всего получится вложенность сервелетов). Делают ли так? ![]() |
|||
|
||||
batigoal |
|
|||
![]() Нелетучий Мыш ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6423 Регистрация: 28.12.2004 Где: Санктъ-Петербургъ Репутация: 16 Всего: 151 |
Ну только не понятно, почему именно два сервлета. Как я понял, нужен один сервлет, к которому обращается клиент за получением фрагмента XML-файла. Разумеется, этот сервлет может использовать какой-то другой класс для осуществления парсинга, но этот второй класс - обычный класс, а не сервлет. -------------------- "Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли) ЖоржЖЖ |
|||
|
||||
azalia |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
Спасибо batigoal, что откликнулся на мою проблему, а то я уже начала терять надежду на получение каких-либо ответов ![]() Описываю ситуацию более подробно, как я вижу: Клиент заходит на jsp страницу и запускает функцию просмотра товаров, т.е. в этот момент идет запрос на сервер и запускается Сервелет №1. Этот сервелет парсит структуру xml так, чтобы выделить из нее только основные заголовки. В этот момент не нужны все данные, т.к. клиент может вообще ничего не заказать, увидев просто, что предлагается к продаже (если парсить сразу все и ему выводить, то зачем ему ждать пока загрузятся все 10000 товаров (а может и больше), сгруппированных по отдельным классификационным признакам). Потом клиент выбирает нужную группу товаров и раскрывает ее. В этот момент идет запрос на сервер и запускается Сервелет№2 , который в зависимости от выбранной группы при помощи Сервелета №1 подгужает какие-нибудь 300-400 позиций...Далее клиент выставляет нужное количество и отправляет запрос. (этот момент еще пока не продуман). Думаю тут придется еще и Ajax прикручивать, чтобы вся страница не обновлялась в момент повторных запросов...(но этот момент тоже пока не продуман и ajax-ом не владею). |
|||
|
||||
dobrolub |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 385 Регистрация: 18.12.2009 Где: Vancouver, Canada Репутация: 4 Всего: 16 |
1. Думайте об XML как о базе данных к которой нужно создать механизм доступа
1. Изучите SAX парсер 2. Думайте об Сервлете как о промежуточном звене между механизмом доступа к данным и запросом 3. Думайте о странице как о статическом HTML документе с java-script который посылает и принимает запросы от сервлета 4. Сервлет может быть один. Он, в зависимости от параметров, будет ответственнен за а. Отсылку каталога в короткой форме б. Приём запроса резервирования в. Обработку запроса резервирования и отсылке ответа в.1 - ответ:1 (данные на сервере не изменились) в.2 - ответ:2 (данные на сервере изменились) 5. Думайте о java-scripte как о коммуникационном механизме и механизме обновления HTML на странице. а. - почитайте о HTML +Ajax http://www.ibm.com/developerworks/ru/library/wa-ajaxintro1/ б. Научитесь добавлять элемент к элементу в HTML в. Научитесь посылать запрос к сервлету. Для пункта 1, создайте структры для отражения XML в виде java объектов для представления данных в коротком виде и подробном. Механизм доступа - класс доступа лучше писать и отлаживать как простой java объект с методом main(String []args). Так будет проще всего отладить. удачи! |
|||
|
||||
azalia |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
Спасибо, dobrolub за столь подробный ответ! ![]() Но, только я снова не поняла один момент...В какой момент будет отсылаться длинная форма каталога? И где будет "связка"? |
|||
|
||||
dobrolub |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 385 Регистрация: 18.12.2009 Где: Vancouver, Canada Репутация: 4 Всего: 16 |
Это в в.1. Данные не изменились - высылаем положительный ответ вместе с данными в подробной форме.
|
|||
|
||||
azalia |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
Таким образом, получается, что сервелет сразу парсит весь документ, хранит в памяти сервера всю структуру и по первому запросу выдает сначала короткий вид каталога (по первому java-классу для короткого вида), а при выборе клиентом во втором запросе (вызывается сервелетом второй java-класс для подробного вида) выдает подробную форму? Память занимаемая в этот момент сервелетом разделяемая для всех последующих новых запросов или каждый раз отводится новая? |
|||
|
||||
dobrolub |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 385 Регистрация: 18.12.2009 Где: Vancouver, Canada Репутация: 4 Всего: 16 |
XML желательно парсить только когда состояние в памяти и состояние на файловой системе различное. Обычно это делают по первому запросу. Назовём его для упрощения DataManager.
примерно так в псевдо-коде
|
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |