Как добиться определенного формата URL-адреса с помощью @RequestMapping в инфраструктуре springmvc
Я пытаюсь создать простое приложение, используя SpringMVC для обучения. Я хочу иметь URL-адреса для различных действий в этом формате
http://localhost:8080/appname/controllername/actionname.html
Url-шаблон, указанный внутри сопоставления сервлетов для DispatcherServlet, является
<url-pattern>*.html</url-pattern>
Вот один из моих методов в ContactController
@RequestMapping("list.html")
public ModelAndView showContacts() {
ModelAndView modelandview = new ModelAndView("list");
modelandview.addObject("message","Your contact book");
return modelandview;
}
Теперь все работает нормально, когда я перехожу к,
http://localhost:8080/appname/list.html
Однако я хочу, чтобы url был,
http://localhost:8080/appname/contact/list.html
Я попробовал использовать @RequestMapping("/contact/list.html")
поверх метода, но он не помогает (показывает ошибку 404 с описанием запрошенный ресурс () недоступен).
Как это можно сделать ?
Также, возможно ли иметь несколько url-шаблонов для отображения сервлетов, например. *.html or *.do
?
ПС. я использую apache-tomcat на рабочем столе Ubuntu
Спасибо
3 ответа:
Вы пробовали это?
@RequestMapping("/contact") public class ContactController { @RequestMapping("/list.html") public ModelAndView showContacts() { // ... } }
Также,
@RequestMapping
принимает массив строк, чтобы разрешить несколько отображений.
Кстати, вы можете упростить еще больше!
This is easily remedied by using an XML-configured strategy for matching URI paths to controller classes and @RequestMapping annotations for method-level mapping only.
Подробнее см. Главу
Removing Class-Level Request Mappings
в http://www.infoq.com/articles/spring-2.5-ii-spring-mvc