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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Фильтр на адресную строку (аналог .htaccess) 
V
    Опции темы
IDVsbruck
Дата 16.9.2007, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



На PHP-серверах есть всегда такой файлик - .htaccess, в котором можно переопределить строку, которая представляется в поле ввода адреса навигатора (возможно, терминология страдает - я со слов ...)
Есть ли возможность на java-сервере (tomcat) аналогично переопределить адресную строку?

Пример: когда идет переадресация с одной страницы на другую, но с некоторым количеством атрибутов, хочется, чтобы была адресная строка определенного вида (хотя бы без атрибутов).

Знаю, что вопрос решаемый, но решения найти не могу smile
Спасибо.
PM MAIL   Вверх
shimopus
Дата 16.9.2007, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Если я вас правильно понял, то конечно есть. Смотрите описание web.xml.
PM ICQ Skype GTalk   Вверх
Tony
Дата 17.9.2007, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1159
Регистрация: 3.3.2006
Где: Riga

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



Цитата(shimopus @ 16.9.2007,  23:51)
Если я вас правильно понял, то конечно есть. Смотрите описание web.xml.

Как я помню htaccess закрывал доступ к ресурсам и про4ее. Ва j2ee etogo netu. Тебе надо будет написать фильтр каторый будет 4то тебе надо. Всё в ру4ную.


--------------------
user posted image
user posted image
PM MAIL Skype   Вверх
IDVsbruck
Дата 17.9.2007, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



<servlet-mapping> - Определяет URL, которые будут выдаваться через соответствующий <servlet>, указанный в <servlet-name>, который должен соответствовать <servlet-name>, указанному в разделе <servlet>

А мне надо наоборот: чтобы не ловить маппинг, а его устанавливать.
Опять же ... по аналогии с .htaccess
PM MAIL   Вверх
Maksym
Дата 17.9.2007, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



IDVsbruck
Менять мэпинг налету в ходе выполнения приложения?
Ты можешь создать сервлет-контроллер, который будет перехватывать все (/) запросы и дальше уже переадресовывать их на другие сервлеты или страницы. Естественно, он сможет менять правила переадресации рантайм.
PM MAIL   Вверх
IDVsbruck
Дата 17.9.2007, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ок, это немного проясняет ...
Но все же ... можно чуть-чуть больше конкретики? - Я вокруг этой темы столько хожу, что запутал все идеи, даже самые светлые.
PM MAIL   Вверх
Maksym
Дата 17.9.2007, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



Примерно так:
ServletController.java
Код

package example.web;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class ServletController extends HttpServlet {

    public void service(HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {

        String url = request.getPathInfo();

        // analize and modify url 

            response.sendRedirect(url);
    }

}

web.xml
Код

...
    <servlet>
        <servlet-name>ServletController</servlet-name>
        <servlet-class>example.web.ServletController</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>ServletController</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
...

В строке где написано analize and modify url  проводишь всю необходимую обработку.
PM MAIL   Вверх
IDVsbruck
Дата 18.9.2007, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ну ... не то ...

Например, вводим www.mysite.com.
- маппинг перехватывает адрес и происходит выполнение service в ServletController.
- getPathInfo() возвращает "/"
- меняем на что хотим, например, "/main" или "/welcome.jsp"
- выполняем request.sendRedirect(url)
А маппинг снова перехватывает запрос! и возвращает опять в ServletController ... и так бесконечно.

Кроме этого, вопрос остается нерешенным ... видимо, остался непонятым. Я хочу добиться следующего:
- вводим адрес (www.mysite.com)
- выполняется некий "главный" сервлет
- находясь на какой-то странице, нам надо вызвать другую страницу и запрос ставится следующим образом: www.mysite.com?action=someAction&sender=lastPage&randomStr=01234567
при этом надо, чтобы выполнились соответсвующие действия, а адресная строка осталась "www.mysite.com", ни или хотя бы "www.mysite.com/"

(Кстати, избавиться от слеша в конце можно?)

Пока единственным решением я вижу посылку параметров методом POST, то есть отсылку формы. В этом случае строка не будет меняться (если в параметре FORM action=""). Но как-то это слишком притянуто за уши ...
Да и не всегда можно отправить форму ...
PM MAIL   Вверх
jsa
Дата 18.9.2007, 04:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 704
Регистрация: 19.1.2006
Где: Новосибирск

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





--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
Maksym
Дата 18.9.2007, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


Профиль
Группа: Участник Клуба
Сообщений: 1456
Регистрация: 19.8.2005
Где: Odessa, Black Sea

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



IDVsbruck
Цитата(IDVsbruck @  18.9.2007,  01:04 Найти цитируемый пост)
А маппинг снова перехватывает запрос! и возвращает опять в ServletController ... и так бесконечно.

Этого не происходит smile попробуй
jsa
Готовое решение +1. IDVsbruck, обрати внимание.
PM MAIL   Вверх
Vasay
Дата 18.9.2007, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2097
Регистрация: 8.3.2006

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



Цитата(Tony @ 17.9.2007,  13:05)
Цитата(shimopus @ 16.9.2007,  23:51)
Если я вас правильно понял, то конечно есть. Смотрите описание web.xml.

Как я помню htaccess закрывал доступ к ресурсам и про4ее. Ва j2ee etogo netu. Тебе надо будет написать фильтр каторый будет 4то тебе надо. Всё в ру4ную.

.htaccess не только закрывает доступ к ресурсам, но и позволяет делать многое другое, например, активно применяется деректива modRewrite, позволяющая создавать виртуальные адреса. Например, можно сделать так - при обращении в браузере http://site.com/X/Y/ реально будет запрошен скрипт  http://site.com/SomeScript.php?x=X&y=Y - что очень полезно с точки зрения SEO. 

Кстати, закрыть доступ к определенным ресурсам в j2ee приложении можно с помощью web.xml и настройки сервера. Как это сделать с SJAS, я знаю, а вот про то существует ли нечто подобное  modRewrite для JAS я не знаю, и очень хотел бы узнать...


Добавил:
Похоже узнал, можно с помощбю UrlRewriteFilter . Спасибо jsa! 

Это сообщение отредактировал(а) Vasay - 18.9.2007, 14:14


--------------------
Придумать идеальную защиту от дурака невозможно, дураки, наудивление, изобретательны.
PM MAIL   Вверх
IDVsbruck
Дата 18.9.2007, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Супер. Вопрос решен. Спасибо.
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.0905 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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