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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы с маппингов с Спринге 
V
    Опции темы
goodday1941
Дата 24.2.2009, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



и так в веб-хмл прописано следующее:

    
Код

<servlet>
        <servlet-name>test</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/test-servlet.xml</param-value>
        </init-param>
        <load-on-startup>3</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>test</servlet-name>
        <url-pattern>/test/*</url-pattern>
    </servlet-mapping>


как мне прописать маппинг в test-servlet.xml что бы при заходе на урл /test у меня было обращение к контроллеру...

перепробованные варианты

   
Код

 <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/*">testController</prop>   <--в таком случае будет обращение что бы мы не вбили после /test - не подходит -->
                <prop key="/">testController</prop>   <--в таком случае будет обращение если в командной строке было введено /test/ -->
            </props>
        </property>
    </bean>



кто что предложит? )

Добавлено через 8 минут и 37 секунд
Код

              <prop key="/test">testController</prop>   


так вроде работает.. вот только не пойму почему

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


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
Kangaroo
Дата 25.2.2009, 04:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

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



Цитата(goodday1941 @  24.2.2009,  19:13 Найти цитируемый пост)
так вроде работает.. вот только не пойму почему

Так вроде вообще не должен вызываться диспатчер smile


--------------------
Lost....
PM MAIL MSN   Вверх
goodday1941
Дата 25.2.2009, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



сам в шоке )) но суть в том что работает... по моим соображениям он не должен вызываться ))


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
Kangaroo
Дата 25.2.2009, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

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



Цитата(goodday1941 @  25.2.2009,  09:43 Найти цитируемый пост)
но суть в том что работает... по моим соображениям он не должен вызываться )) 

Ну ты логи погляди. Там должен все спринг писать.


--------------------
Lost....
PM MAIL MSN   Вверх
AntonSaburov
Дата 25.2.2009, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

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



Почему не должен - по идее все логично. 
Сначала контроллер Спринга поймал этот URL. Потом посмотрел по мапингу - и нашел совпадение. Вполне пристойно.
Кто сказал, что контроллер Спринга не будет пытаться найти совпадение у себя в мапинге, после того, как у него все совпало ?
PM MAIL WWW ICQ   Вверх
goodday1941
Дата 25.2.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



теоретически ясли в моем случае в мапинге написано 
Код

<prop key="/test">testController</prop> 

то контроллер повешен на урл /test/test
так как в веб.хмл имеем:
Код

 <servlet-mapping>
        <servlet-name>test</servlet-name>
        <url-pattern>/test/*</url-pattern>
    </servlet-mapping>


эт я так всегда думал smile а получается что не так )


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
Kangaroo
Дата 25.2.2009, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

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



Вот два метода из org.springframework.web.util.UrlPathHelper, которые объясняют поведение.
Код

/**
     * Return the mapping lookup path for the given request, within the current
     * servlet mapping if applicable, else within the web application.
     * <p>Detects include request URL if called within a RequestDispatcher include.
     * @param request current HTTP request
     * @return the lookup path
     * @see #getPathWithinApplication
     * @see #getPathWithinServletMapping
     */
    public String getLookupPathForRequest(HttpServletRequest request) {
        // Always use full path within current servlet context?
        if (this.alwaysUseFullPath) {
            return getPathWithinApplication(request);
        }
        // Else, use path within current servlet mapping if applicable
        String rest = getPathWithinServletMapping(request);
        if (!"".equals(rest)) {
            return rest;
        }
        else {
            return getPathWithinApplication(request);
        }
    }

    /**
     * Return the path within the servlet mapping for the given request,
     * i.e. the part of the request's URL beyond the part that called the servlet,
     * or "" if the whole URL has been used to identify the servlet.
     * <p>Detects include request URL if called within a RequestDispatcher include.
     * <p>E.g.: servlet mapping = "/test/*"; request URI = "/test/a" -> "/a".
     * <p>E.g.: servlet mapping = "/test"; request URI = "/test" -> "".
     * <p>E.g.: servlet mapping = "/*.test"; request URI = "/a.test" -> "".
     * @param request current HTTP request
     * @return the path within the servlet mapping, or ""
     */
    public String getPathWithinServletMapping(HttpServletRequest request) {
        String pathWithinApp = getPathWithinApplication(request);
        String servletPath = getServletPath(request);
        if (pathWithinApp.startsWith(servletPath)) {
            // Normal case: URI contains servlet path.
            return pathWithinApp.substring(servletPath.length());
        }
        else {
            // Special case: URI is different from servlet path.
            // Can happen e.g. with index page: URI="/", servletPath="/index.html"
            // Use servlet path in this case, as it indicates the actual target path.
            return servletPath;
        }
    }


Но не объясняют зачем так сделано  smile 

Это сообщение отредактировал(а) Kangaroo - 25.2.2009, 17:42


--------------------
Lost....
PM MAIL MSN   Вверх
goodday1941
Дата 26.2.2009, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ну на самом деле эт хорошо что они так сделали ) а то как бы я повесил контроллер на урл /test


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0571 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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