Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Аналог мода mod_rewrite на Java, существуют ли инструменты перезаписи url 
V
    Опции темы
UnicornMirage
Дата 14.12.2006, 17:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



Привет участникам форума.
Поискал на вашем форуме по Java по ключевому слову mod_rewrite и не нашел... Поэтому задам вопрос - есть ли на Java аналог мода под апач mod_rewrite, например какие нибудь фильтры которые это делают?

Стоит сейчас задача по перезаписи url-запросов c параметрами, например
http://host:8080/myappl/getObject?id=12&parent=44 

будет заменяться на что то похожее
http://host:8080/myappl/12/44



PM MAIL   Вверх
Шмель
Дата 14.12.2006, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 16.4.2004

Репутация: 2
Всего: 18



Первая ссылка в гугле приведет куда надо: http://www.google.ru/search?q=rewrite+url+filter
--------------------
будешь на Земле - заходи
PM MAIL ICQ   Вверх
UnicornMirage
Дата 14.12.2006, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



спасибо! видимо под конец дня голова уже не варит составить запрос. я искал по mod_rewrite Java Filter... smile
PM MAIL   Вверх
UnicornMirage
Дата 15.12.2006, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



спасибо всем за ответы.
скачал UrlRewriter фильтр для сервлета отсюда: 

http://tuckey.org/urlrewrite/

как настраивать почитал тут:
http://tuckey.org/urlrewrite/manual/2.6/

в общем всё получилось. создал своё правило конвертации в файле urlrewrite.xml

возник теперь такой вопрос: в своем сервлете я генерирую гиперссылки. как применить созданные мной правила, записанные в файле urlrewrite.xml, внутри сервлета для генерации ссылок? кто работал уже с этим пакетом - org.tuckey.web.filters.urlrewrite?
PM MAIL   Вверх
Шмель
Дата 15.12.2006, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 16.4.2004

Репутация: 2
Всего: 18



1) Что мешает генерить их в том виде, который этим правилам удовлетворяет?
2) Если что-то все-таки мешает, посмотри в сторону <outbound-rule>
--------------------
будешь на Земле - заходи
PM MAIL ICQ   Вверх
UnicornMirage
Дата 16.12.2006, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



2 Шмель: большое спасибо за подсказку насчет <outbound-rule>, действительно в руководстве сказано, что данное правило работает для вызовов методов response.encodeURL(); (модераторов прошу поставить + ) smile

создал следующую  test.jsp:
Код

<HTML>
<BODY>
hello, <%=request.getParameter("id") %> 
<br>
output, <%=response.encodeURL("test.jsp?id=555") %>
</BODY>
</HTML>


в правилах файла urlrewrite.xml создал одно входящее, а одно выходящее правило:
Код

<rule>
           <from>([0-9]+)</from>
           <to>test.jsp?id=$1</to>
</rule>

<outbound-rule>
          <from>test.jsp?id=([0-9]+)</from>
          <to>([0-9]+)</to>
</outbound-rule>


проверяю вначале как работает входящее правило: в строке браузера пишу адрес http://localhost:8080/myappl/123

страница выводится нормально, как будто бы был введен адрес http://localhost:8080/myappl/test.jsp?id=123 
но вот почему то правило <outbound-rule> не сработало smile

в листинге test.jsp у меня записано:
Код

<%=response.encodeURL("test.jsp?id=555") %>


по идее он должен был декодировать строку "test.jsp?id=555" в "/555" но этого не происходит... Может быть Вы знаете почему? что я не так сделал?

пытался выполнить пример вот по этому руководству: http://tuckey.org/urlrewrite/manual/2.6/)

Это сообщение отредактировал(а) UnicornMirage - 17.12.2006, 00:19
PM MAIL   Вверх
UnicornMirage
Дата 16.12.2006, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



вроде бы нашел ошибку.

в моем паттерне для outbound-rule надо было экранировать символ '?'

вот так работает:
Код

<outbound-rule>
          <from>test.jsp\?id=([0-9]+)</from>
          <to>([0-9]+)</to>
</outbound-rule>


но что странно, я делал согласно примеру в руководстве http://tuckey.org/urlrewrite/manual/2.6/
как то не верится что у них ошибка.

в регулярных выражениях я не очень силен, поэтому хотелось уточнить - символ '?' нужно экранировать '\?'    smile 

Это сообщение отредактировал(а) UnicornMirage - 16.12.2006, 16:28
PM MAIL   Вверх
Шмель
Дата 16.12.2006, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 16.4.2004

Репутация: 2
Всего: 18



Цитата(UnicornMirage @  16.12.2006,  16:19 Найти цитируемый пост)
символ '?' нужно экранировать '\?'

Да, его нужно экранировать, так как в регулярках, если мне не изменяет склероз, он является служебным символом. 

Цитата(UnicornMirage @  16.12.2006,  16:19 Найти цитируемый пост)
как то не верится что у них ошибка

Возможно, опечатка.

Подробности: http://java.sun.com/j2se/1.5.0/docs/api/ja...ex/Pattern.html
--------------------
будешь на Земле - заходи
PM MAIL ICQ   Вверх
UnicornMirage
Дата 25.12.2006, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



столкнулся со следующей проблемой.

есть задача преобразования типа адресов http://server:8080/myappl/$KEYWORDS/, где $KEYWORDS - это список разных слов, разделенных пробелом. например, 

http://server:8080/myappl/some string/

http://server:8080/myappl/некоторая строка поиска/

проблема в том что браузер IE кодирует пробелы знаком +


я посмотрел на правила http://java.sun.com/j2se/1.5.0/.../Pattern.html и согласно им составил следующие правила для Urlrewriter'a:

Код

<rule>
<from>/([!-я][\s]+)/</from>
<to> ..... </to>
</rule>



но это не работает. есть сомнения относительно правильности регулярного выражения /([!-я][\s]+)/
нужно чтобы оно описывала все символы ASCII содержащие также пробелы.

правильно ли я составил данное выражение?
PM MAIL   Вверх
UnicornMirage
Дата 25.12.2006, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 15.11.2005

Репутация: нет
Всего: 1



разобрался, паттерн таков: ([\u0000-\uFFFF]+) - включает всю юникодовскую таблицу.

Это сообщение отредактировал(а) UnicornMirage - 28.12.2006, 10:49
PM MAIL   Вверх
simprimat
Дата 16.2.2010, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 11.2.2010

Репутация: нет
Всего: нет



Добрый день. У меня похожая проблема. Использую URLrewriter. ЧПУ ссылка имеет вид: 
localhost/theme/id/page
Когда я заменяю только localhost/theme, то вроде бы всё работает нормально. Правило:
Код

<rule>
   <from>^/([_a-z]+)$</from>
   <to>/index.jsp\?t=$1</to>
</rule>
<outbound-rule>
   <from>^index.jsp\?t=([_a-z]+)$</from>
</outbound-rule>

Но! Когда пытаюсь заменить ссылку полностью localhost/theme/id/page, то у все остальные ссылки(пути к картинкам и т.д.) уезжают, к нам ещё прибавляется theme/id и в результате нет ни картинок и вообще ни куда уже не перейти... ПРавило:
Код

<rule>
   <from>^/([_a-z]+)/([_a-z]+)/([_a-z]+)$</from>
   <to>/index.jsp\?t=$1&amp;p=$2&amp;id=$3</to>
</rule>
<outbound-rule>
   <from>^index.jsp\?t=([_a-z]+)&amp;p=([_a-z]+)&amp;id=([_a-z]+)$</from>
   <to>$1/$2/$3</to>
</outbound-rule>

PM MAIL   Вверх
simprimat
Дата 24.2.2010, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 11.2.2010

Репутация: нет
Всего: нет



Может кто нибудь подсказать? Примерно хоть в чём дело
PM MAIL   Вверх
simprimat
  Дата 26.2.2010, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 11.2.2010

Репутация: нет
Всего: нет



ау люди smile 
PM MAIL   Вверх
simprimat
Дата 1.3.2010, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 19
Регистрация: 11.2.2010

Репутация: нет
Всего: нет



Этот фильтр (UrlRewriter), указанный выше, смотрит на то, когда вызывается метод response.encodeURL . Затем выполняется. А как же быть если весь проект сделан не только на jsp, но ещё и есть HTML контент, в котором тоже море ссылок, которые надо привести к ЧПУ...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.4160 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.