Странная ошибка 404 с использованием Spring MVC - PullRequest
2 голосов
/ 23 июня 2009

Это длинный выстрел, но, надеюсь, кто-то может помочь.

Мое приложение использует Spring Framework MVC. 99% если работает правильно. Однако, когда я пытаюсь перейти на одну ссылку, давайте назовем ее [путь] /link.html. Я получаю ошибку 404. Однако, если я перехожу по этой ссылке в моей среде разработки (tomcat, windows, IE и eclipse), я не получаю такую ​​ошибку 404 (все работает как положено). Это происходит только на моем производственном сайте (веб-логика).

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

<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props> 
<prop key="/link.html">linkController</prop>
...
</props>
</property>
</bean>

Ответы [ 4 ]

1 голос
/ 23 июня 2009

Не видя некорректного URL-адреса, я полагаю, что у вас возникла проблема с конструкцией URL-адреса, и он просто не соответствует ресурсу на рабочем сервере, а не связан с вашей конфигурацией, учитывая, что другие ресурсы HTML доступны.

Я всегда использую тег URL JSTL для создания URL, который покрывает все, что описано здесь (http://www.ibm.com/developerworks/java/library/j-jstl0318/#N10532)

Если использование JSTL не вариант, то ссылка должна дать вам несколько указаний относительно того, что вам нужно учитывать при создании URL.

1 голос
/ 23 июня 2009

Включите ведение журнала в регистраторах org.springframework и посмотрите, что происходит в Spring (или, если ваш веб-запрос даже обращается к DispatcherServlet), когда вы запрашиваете /link.html.

1 голос
/ 23 июня 2009

Возможно, вам необходимо отобразить запросы на файлы HTML в сервлет Controller в вашем файле web.xml, используя элемент <servlet-mapping>. Возможно, вы захотите использовать link.do вместо link.html, поскольку сопоставление запросов для файлов HTML с сервлетом контроллера может усложнить обслуживание статического содержимого в вашем приложении.

С другой стороны, в общем, вы хотите, чтобы ваш стек разработки максимально соответствовал вашему производственному стеку. Вполне вероятно, что вы, по крайней мере, узнали бы об этой проблеме раньше, если бы разрабатывали с использованием WebLogic вместо Tomcat, поскольку вы используете WebLogic на производстве.

0 голосов
/ 24 июня 2009

Проблема была на самом деле не в spring / jsp / etc ... Проблема была в том, как были настроены директивы location в apache. Конечный слеш был необходим для пути внутри директивы.

...