Как добиться определенного формата 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 2

3 ответа:

Вы пробовали это?

@RequestMapping("/contact")
public class ContactController
{
  @RequestMapping("/list.html")
  public ModelAndView showContacts()
  {
    // ...
  }
}

Также, @RequestMapping принимает массив строк, чтобы разрешить несколько отображений.

Добавить

@RequestMapping("/controllername")

Перед объявлением класса.

Кстати, вы можете упростить еще больше!

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