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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вопрос по мэпингу jsp, для tomcat 5.5 
V
    Опции темы
le_chat
Дата 12.5.2007, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



доброго времени суток

в приложении есть следующие файлы

/test.jsp
/start.jsp
/test.css

в web.xml просано следующее:
Код

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
         xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >

    <servlet>
        <servlet-name>start</servlet-name>
        <jsp-file>/start.jsp</jsp-file>
    </servlet>

    <servlet-mapping>
        <servlet-name>start</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

если в бразвере набрать: http://site.loc:8080/test/
то получу start.jsp, что логично, так как она замепина на сервлет по умолчанию

если набрать: http://site.loc:8080/test/test.jsp
то получу test.jsp, что тоже логично, так как я указал полный uri

а вот если набрать:  http://site.loc:8080/test/test.css
то я опять получу start.jsp, что с мое колокольни абсолютно не логично, так как указан полный uri и я ожидаю что мне выдадут test.css

соответственно и test.css при таком размещении на страницах не рабтотает. отсюда вопрос: чего я не допонял?

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


Летатель
***


Профиль
Группа: Участник Клуба
Сообщений: 1853
Регистрация: 10.2.2005
Где: msk.ru

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



Такой маппинг
Код

<url-pattern>/</url-pattern>

означает, что все URL будут перенаправляться сервлету.
PM MAIL Skype GTalk Jabber YIM   Вверх
le_chat
Дата 12.5.2007, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



но ведь http://site.loc:8080/test/test.jsp возвращает test.jsp?
PM MAIL   Вверх
le_chat
Дата 12.5.2007, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



сори, нашел  smile 
контейнер сначала ищет сервлеты, а только потом остальные ресурсы, соответстенно так как он находит севлет по умолчани, то до test.css дело не доходит.

есть еще один вопрос в ту же степь. если подправить web.xml следующим образом
Код

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
         xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" >

    <servlet>
        <servlet-name>ind</servlet-name>
        <jsp-file>/index.jsp</jsp-file>
    </servlet>

    <servlet-mapping>
        <servlet-name>ind</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <jsp-config>
        <jsp-property-group>
            <url-pattern>/*</url-pattern>
            <el-ignored>false</el-ignored>
        </jsp-property-group>
    </jsp-config>
    
</web-app>

то мепинг на текущий сервлет отрубается и при запросе: http://site.loc:8080/test/
я получаю ошибку 404. Почему так происходит?

Это сообщение отредактировал(а) le_chat - 12.5.2007, 15:45
PM MAIL   Вверх
ekr
Дата 12.5.2007, 15:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


...и это пройдет...
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 6.5.2007
Где: Moscow, RU

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



может, для решения проблемы просто welcome-file использовать? который и будет откликаться на контекст /


--------------------
и это пройдет....

http://ekrs.blogspot.com
PM WWW   Вверх
le_chat
Дата 12.5.2007, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



это был только пример. приложение более сложное, севлет по умолчанию лежит глубже в защещенной папке. а насколько я понял welcome-file это только файл, без всякого пути к нему... 
обходные пути найти кончено можно, только понимания процесса это не прибавит..  и почему мэпинг отрубается, если jsp-config указать мне непонятно..  smile   и если счас не разобаться -  то все равно позже копать прийдется
PM MAIL   Вверх
Maksym
Дата 12.5.2007, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


.
***


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

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



Цитата(le_chat @  12.5.2007,  16:08 Найти цитируемый пост)
а насколько я понял welcome-file это только файл, без всякого пути к нему... 

Никакого пути быть не может, этот список для другого предназначен. welcome-file показывается если нет имени файла в url, например http://site.ru или http://site.ru/info. Тогда Tomcat смотрит в welcome-file-list и пытается найти в папке файл из этого списка.

PM MAIL   Вверх
ekr
Дата 12.5.2007, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


...и это пройдет...
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 6.5.2007
Где: Moscow, RU

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



многие контейнеры умеют выводить сервлет как welcome-file. это зависит от поддерживаемой версии J2ee и особенностей контейнера.
Цитата

welcome-file показывается если нет имени файла в url

все правильно.

le_chat, тебе подойдет такой вариант?

Это сообщение отредактировал(а) ekr - 12.5.2007, 16:28


--------------------
и это пройдет....

http://ekrs.blogspot.com
PM WWW   Вверх
le_chat
Дата 12.5.2007, 16:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



упс. опоздал с ответом. вариант как возможный, но все же хочется понять почему пропадает мапинг на дефолтный сервлет, если прописать jsp-config как указано выше?

Это сообщение отредактировал(а) le_chat - 12.5.2007, 16:31
PM MAIL   Вверх
ekr
Дата 12.5.2007, 16:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


...и это пройдет...
**


Профиль
Группа: Участник
Сообщений: 359
Регистрация: 6.5.2007
Где: Moscow, RU

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



какой у тебя tomcat? я дома проверю


--------------------
и это пройдет....

http://ekrs.blogspot.com
PM WWW   Вверх
le_chat
Дата 12.5.2007, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



 tomcat 5.5.20. smile
я глянул спеку (2.4). welcome-file для неполных url. я так понимаю (в спеке вроде бы не указано) это те, где послдений сегмент без точки (то есть нельзя получить расширение), при этом для них не должно быть установлено мэпинга. (в общем как и говорил Maksym) тогда контейнер  добавляет по очереди welcome-file файлы и заново разбирает url. соответственно сначала ищет сервлеты, потом все остальные ресурсы


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


.
***


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

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



Цитата(ekr @  12.5.2007,  16:26 Найти цитируемый пост)
многие контейнеры умеют выводить сервлет как welcome-file

да. те, которые имплементируют Servlets 2.4, например Tomcat 5.5
если:
Код

<servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/MyServletMappingPath</url-pattern>
</servlet-mapping>

то можно:
Код

<welcome-file-list>
    <welcome-file>MyServletMappingPath</welcome-file>
</welcome-file-list>

Но это, в отличие от файла, работает только для рутовой папки.
PM MAIL   Вверх
le_chat
Дата 12.5.2007, 17:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



нуу...
если прописать вот так:
Код

    <servlet>
        <servlet-name>ind</servlet-name>
        <jsp-file>/start.jsp</jsp-file>
    </servlet>

    <servlet-mapping>
        <servlet-name>ind</servlet-name>
        <url-pattern>/dd/index</url-pattern>
    </servlet-mapping>

    <welcome-file-list>
        <welcome-file>index</welcome-file>
    </welcome-file-list>

то http://site.loc:8080/test/dd/ 
выдает start.jsp
а http://site.loc:8080/test/dd
ошибку 404 - что вроде бы как странно - потому как по спеке он вроде бы должен редиректится на  http://site.loc:8080/test/dd/ 
и далее соответственно на start.jsp

PM MAIL   Вверх
le_chat
Дата 14.5.2007, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



проблема была решена по последнему методу Максима. Замэпивание на дефолтный сервлет оказалось плохой идеей, так как обратится к ресурсам, отличным от сервлета оказалось невозможно из-за порядка обработки uri контейнером - сначала он ищет сервлеты, а потом уже все остальные ресурсы.
с jsp-config ситуация до конца не понятна, потому как на мой взгляд не логична. получается что контейнер обрабатывает jsp-config и servlet-mapping в общей куче в порядке конкуренции uri, что с моей колокольни немного не логично. ведь jsp-config должен лишь задавать общие параметры для jsp-страниц, мэпингом этот тэг вроде бы не занимается... может баг? потому как если задать в jsp-config uri по расширению(*.jsp), то все работает правильно...

на данном этапе вопрос разрешен, спасибо всем за ответы  smile 

Это сообщение отредактировал(а) le_chat - 14.5.2007, 09:30
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.0623 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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