2012-02-05 1 views
0

Я пытаюсь изучить основы Spring MVC и проблемы с тем, как URL-адрес разрешен для контроллеров. Я работаю с этим tutorial в качестве трамплина. Я могу получить его работает отлично под котом и URL /context/welcome.htm решает контроллер, который аннотированный как таковой:Настройка диспетчераServlet для URL стиля REST

@Controller 
@RequestMapping("/welcome") 
public class HelloWorldController 

Файл web.xml конфигурируется с помощью

<servlet> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>*.htm</url-pattern> 
</servlet-mapping> 

Я бы например, чтобы иметь возможность вводить/контекст/приветствовать и разрешать HelloWorldController, но это не работает. Я попытался установить *, но это приводит к невозможности загрузки сервлета. Если кто-то может объяснить, почему этот шаблон URL недействителен, и как настроить этот контроллер для работы со всеми запросами, такими как/welcome и/welcome, а не только те, которые заканчиваются на * .htm, было бы весьма полезно. В ASP.NET MVC была предоставлена ​​страница маршрутизации для отладки таких проблем с сопоставлением контроллера. Каков наилучший способ сделать это с помощью Spring?

ответ

5

Попробуйте это:

<servlet-mapping> 
    <servlet-name>mvc-dispatcher</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

Узор/* расставит все через сервлет.

Шаблон/делает ваш сервлет сервлетом по умолчанию для приложения, то есть он будет отображать каждый шаблон, который не имеет другого точного соответствия.

+0

Отправлено /, и теперь все работает должным образом. – dcompiled

0

Попробуйте использовать/*

Ваш другой шаблон не был действительным, поскольку он не соответствует требованиям, указанным в спецификации serlvet: https://jira.sakaiproject.org/secure/attachment/16135/servlet-2_4-fr-spec.pdf

Одна из проблем, вы можете использовать это в том, что запросы на JS-файлов и Файлы css направляются через диспетчер. Вам нужно настроить Spring, чтобы игнорировать запросы на эти файлы.

1

С помощью существующего кода вы можете решить, изменив сопоставление запросов на RequestMapping ("/ welcome.htm"), так как вы сделали .htm в своем отображении сервлета. Все наше желание, как должен выглядеть наш приложение. Другие предложения о создании/ также будут работать, разница в/* позволяет использовать любой URL-адрес URL-адреса, но * .htm ограничивает другие шаблоны, которые нужно разрешить.

Я не думаю, что у js или css возникнут проблемы из-за этого, потому что js и css не полагаются на сервлет весеннего диспетчера. js и css могут быть внедрены без наличия сервлета на месте. рассмотрим автономный html с js и css, все, что вам нужно, это контекст сервера, а не сервлет.