| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Фильтр на адресную строку (аналог .htaccess) |
| Автор: IDVsbruck 16.9.2007, 23:32 |
| На PHP-серверах есть всегда такой файлик - .htaccess, в котором можно переопределить строку, которая представляется в поле ввода адреса навигатора (возможно, терминология страдает - я со слов ...) Есть ли возможность на java-сервере (tomcat) аналогично переопределить адресную строку? Пример: когда идет переадресация с одной страницы на другую, но с некоторым количеством атрибутов, хочется, чтобы была адресная строка определенного вида (хотя бы без атрибутов). Знаю, что вопрос решаемый, но решения найти не могу Спасибо. |
| Автор: shimopus 16.9.2007, 23:51 |
| Если я вас правильно понял, то конечно есть. Смотрите описание web.xml. |
| Автор: Tony 17.9.2007, 13:05 | ||
Как я помню htaccess закрывал доступ к ресурсам и про4ее. Ва j2ee etogo netu. Тебе надо будет написать фильтр каторый будет 4то тебе надо. Всё в ру4ную. |
| Автор: IDVsbruck 17.9.2007, 14:26 |
| <servlet-mapping> - Определяет URL, которые будут выдаваться через соответствующий <servlet>, указанный в <servlet-name>, который должен соответствовать <servlet-name>, указанному в разделе <servlet> А мне надо наоборот: чтобы не ловить маппинг, а его устанавливать. Опять же ... по аналогии с .htaccess |
| Автор: Maksym 17.9.2007, 14:35 |
| IDVsbruck Менять мэпинг налету в ходе выполнения приложения? Ты можешь создать сервлет-контроллер, который будет перехватывать все (/) запросы и дальше уже переадресовывать их на другие сервлеты или страницы. Естественно, он сможет менять правила переадресации рантайм. |
| Автор: IDVsbruck 17.9.2007, 17:04 |
| Ок, это немного проясняет ... Но все же ... можно чуть-чуть больше конкретики? - Я вокруг этой темы столько хожу, что запутал все идеи, даже самые светлые. |
| Автор: Maksym 17.9.2007, 17:12 | ||||
| Примерно так: ServletController.java
web.xml
В строке где написано analize and modify url проводишь всю необходимую обработку. |
| Автор: IDVsbruck 18.9.2007, 01:04 |
| Ну ... не то ... Например, вводим 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=""). Но как-то это слишком притянуто за уши ... Да и не всегда можно отправить форму ... |
| Автор: jsa 18.9.2007, 04:09 |
| http://tuckey.org/urlrewrite/ |
| Автор: Vasay 18.9.2007, 14:12 | ||||
.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! |
| Автор: IDVsbruck 18.9.2007, 17:02 |
| Супер. Вопрос решен. Спасибо. |