«Не найдено сопоставление для HTTP-запроса» при изменении пути для DispatcherServlet - PullRequest
0 голосов
/ 30 июня 2011

Я делаю свои первые шаги в Spring MVC и, возможно, мне чего-то не хватает, так как для меня это не имеет смысла:

Я начал с mvn-basic Весенний образец, и получил его для запуска.Затем я хотел посмотреть, смогу ли я заставить его работать на подпуть, чтобы я мог использовать его вместе с унаследованным кодом, который у меня есть.Я внес следующие изменения:

В servlet-context.xml:

-   <mvc:view-controller path="/" view-name="welcome"/>
+   <mvc:view-controller path="/web/" view-name="welcome"/>

В AccountController.java:

-@RequestMapping(value="/account")
+@RequestMapping(value="/web/account")

В web.xml:

-       <url-pattern>/</url-pattern>
+       <url-pattern>/web/*</url-pattern>

Я также увеличил логирование до DEBUG.Я перестроил и попытался запустить, но попытка доступа к http://localhost:8080/web/account привела к 404, и " Не найдено сопоставление " в журнале, хотя ранее в журнале я вижу " MappedПуть URL [/ web / account] к обработчику accountController".

Я обнаружил, что если я отменяю изменения в файле web.xml, все работает, но тогда DispatcherServlet принимает на себя все запросы.

Итак, у меня два вопроса:

  1. Что я делаю не так?Как я могу ограничить DispatcherServlet подразделом сайта?
  2. Как он вообще работает?Демонстрационная версия, кажется, только отправляет запросы на "/" в DispatcherServlet, так почему же "/ account" также работает?

Я использую Spring 3.0.5.RELEASE

ОБНОВЛЕНИЕ : Решение состоит в том, чтобы оставить запрос на сопоставление, как было, спасибо @axtavt.В противном случае URL становится http://localhost:8080/web/web/account (обратите внимание на дубликат /web).Я все же хотел бы получить ответ на свой второй вопрос.

Ответы [ 2 ]

2 голосов
/ 30 июня 2011

На самом деле вам не нужно вносить какие-либо изменения

В servlet-context.xml: и web.xml:

, если вы хотите, чтобы ваш путь был "/ web / account"тогда ваше сопоставление запроса будет

@ RequestMapping (value = "/ web / account")

, и вам нужно вызвать его с помощью "account", если вы уже находитесь в сети (например, http://localhost/urproject/web/currentpage) каталог, когда вы вызываете представление, если ваш каталог не находится в сети (например, http://localhost/urproject/currentpage), затем вызывайте его с "/ web / account"

Я надеюсь, что это поможет

1 голос
/ 30 июня 2011

С этой настройкой:

 <url-pattern>/web/*</url-pattern>

и

 <mvc:view-controller path="/web/" view-name="welcome"/>

и

  @RequestMapping(value="/web/account")

Доступны следующие URL:

http://localhost:8080/web/web/ -> как определено как конфигурация контроллера вида http://localhost:8080/web/web/account -> как определено в отображении запроса контроллера

Если вы хотите получить доступ к странице учетной записи только как / web / account, переопределите сопоставление вашего запроса следующим образом:

@RequestMapping(value="/account")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...