![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
azalia |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
Доброго времени суток!
Может кто подскажет как правильней запрашивать xml-данные хранящиеся в БД через xpath-выражения при помощи сервлетов и jsp? Это надо будет в форме <FORM> задавать уже готовые xpath-выражения и передавать их в сервлет, а сервлет уже будет коннектится к БД и доставать согласно этим выражениям нужные данные? Это сообщение отредактировал(а) azalia - 19.5.2015, 22:15 |
|||
|
||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 8 Всего: 118 |
Я бы сделал через отправку XPAth в сервлет, который уже ходил бы в базу, доставал данные и вызывал JSP, которая все это рисовала и выводила бы форму для ввода нового выражения.
|
|||
|
||||
azalia |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
Не могу отправить данные формы... Что-то видимо насочиняла не то....
Выкладываю что есть на данный момент: JSP:
Хотя, я такой формы ни разу за всю свою жизнь не видела ![]() Сервлет:
Вывод браузера:
Это сообщение отредактировал(а) azalia - 19.5.2015, 22:16 |
||||||
|
|||||||
AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 8 Всего: 118 |
Честно говоря я не понял вот это:
<select name="/books/book[@id]"> <option value="/books/book[@id='1']">Книга 1</option> <option value="/books/book[@id='2']">Книга 2</option> </select> В качестве имени такое выражение "/books/book[@id]" - это что такое ? Сервлет просит просто параметр name - а в форме фигня какая-то. Вы бы почитали HTML и HTTP на досуге - там много важного и нужного есть. |
|||
|
||||
mbasil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 9 Всего: 13 |
Ну во-первых не
response.setContentType("text/html"); а response.setContentType("text/html,UTF-8"); чтобы текст на кириллице увидеть в ответе |
|||
|
||||
azalia |
|
||||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
не помогает... JSP:
Сервлет:
server.xml
этот код тоже не помогает:
Может ли быть проблема в старом ПО? IE6, Windows XP... Установила браузер Chrome 43 - в нем такая же беда... Может все перевести в windows-1251? или как там... Это сообщение отредактировал(а) azalia - 20.5.2015, 20:42 |
||||||||
|
|||||||||
mbasil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 9 Всего: 13 |
Чему не помогает?
В случае response.setContentType ("text/html; charset=utf-8"); текст на кириллице должен выводиться. А поводу получения значения параметра, гсп. Сабуров писал же, что надо запрашивать не "name", а по видимому: String inputName=request.getParameter("/books/book[@id]"); Кстати, А зачем Вы дали параметру такое странное имя? Это сообщение отредактировал(а) mbasil - 20.5.2015, 20:42 |
|||
|
||||
azalia |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
Да, я поменяла name (перепутала раньше), теперь выводится... Оно такое странное, потому что мне надо как-то сохранить путь xpath в какую-нибудь переменную и потом ее подставлять в запрос к БД. На оригинальность не претендую, я новичок в этом деле. |
|||
|
||||
mbasil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 9 Всего: 13 |
Имя переменной связано с ее значением не буквально, а мнемонически, а посему должно как имя любой переменной соответствовать смыслу значения, а не содержимому. Просто имена переменным надо давать пристойные.
|
|||
|
||||
azalia |
|
||||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
Не помогает замена кода response.setContentType ("text/html") на response.setContentType ("text/html; charset=utf-8"); или на response.setContentType("text/html,UTF-8"); сейчас картина в браузере такая:
перевожу: привет ghjg = привет ghjg код:
интернет весь уже обшарила, советуют еще фильтры применять, но этого мне не хочется как-то делать... Добавлено через 14 минут и 53 секунды хорошо, я поняла, спасибо ![]() обзову по-другому, только теперь не знаю как выбранное значение обрабатывать дальше в сервлете. Это сообщение отредактировал(а) azalia - 20.5.2015, 21:09 |
||||||
|
|||||||
mbasil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 9 Всего: 13 |
response.setContentType ("text/html; charset=utf-8");
должно работать. 1. Фильтр это только для того, чтобы не писать это каждый раз. Пока нет смысла. 2. Проверьте настройки браузера. Проверьте в другом браузере. 3. Проверьте кодировку файла с исходным кодом сервлета. 4. Если сервер старый Tomcat, там требовалось в элементе Connector в файле server. xml добавить атрибут seBodyEncodingForURI="true" примерно так (но только в старый, до версии 5 включительно): <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 --> <Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true"/> |
|||
|
||||
azalia |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
я все уже это проделывала http://forum.vingrad.ru/index.php?showtopi...t&p=2639605 использую Notepad++, в нем выставлена кодировка UTF-8 (без BOM), пересохранила еще раз в простом блокноте с выставлением кодировки utf-8... Томкат 7, свеже установленный... я не знаю чего еще можно сделать... пусть остается так, мне не принципиально, буду на латинице пока работать. Добавлено через 12 минут и 4 секунды кстати, вспомнила, а может ли повлиять на кодировку смена пути к Томкат? раньше у меня Томкат был установлен по пути С:/Tomcat 7.0 я его не переустанавливала, а вручную сменила путь на С:/Tomcat (переименовала папку) соответсвенно везде перенастроила пути и в реестре windows тоже для запуска службы а вот где кодировка прописывается - не знаю... |
|||
|
||||
mbasil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 9 Всего: 13 |
Перемещение, пожалуй, не могло повлиять. Больше предположений нет. В последних версиях Tomcat с подобными казусами я не встречался.
как обрабатывать зависит от того, в какой базе вы XML храните и в каком виде. У Oracle, например есть тип данных XMLType, он построен над CLOB и в нем можно по хpath довольно просто находить нужное значение. Это сообщение отредактировал(а) mbasil - 20.5.2015, 22:03 |
|||
|
||||
azalia |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 5.4.2009 Репутация: нет Всего: нет |
в данный момент использую ms sqlserver, в самой базе без проблем все получается, а вот удаленные запросы пока не очень. нашла работу с типом sqlxml, пока осваиваю... получилось пока только запросить данные сплошным текстом, без структуры xml |
|||
|
||||
mbasil |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 399 Регистрация: 4.5.2007 Где: Москва Репутация: 9 Всего: 13 |
1. Извлечь "сырой" XML можно посредством запроса с помощью JDBC. В Java встроены XML анализаторы DOM,SAX,STAX,JAXB, поэтому (если не привлекать какие-либо доролнительные фреймворки) можно разобрать извлеченный XML выбранным встроенным средством (ну это конечно потребует усилий), а потом получить, что нужно.
2.Для проверки кириллицы, чтобы сильно не ломать голову, скачайте и инсталлируйте NetBeans. В него встроены два сервера: Tomcat и GlassFish. Инсталляция проста, можете выбрать только встроенный Tomcat и не ставить GlassFish. Проект заготовки web приложения можно сгенерировать в несколько щелчков мышки. Проверьте, как выводится кириллица. Затем, в случае успеха, скопируйте свои написки в этот проект. Ну уж совсем потом можно NetBeans'ом подцепить ваш Tomcat для чистоты эксперимента и развернуть проект на нем. Все равно, продолжать работу лучше в графической среде, а не в командной строке. Необходимо только установить CATALINA_HOME на нужную версию Tomcat и не "барахтаться" одновременно с двумя. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "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. |