Как добиться определенного формата URL с помощью @RequestMapping в SpringMVC - PullRequest
2 голосов
/ 10 февраля 2011

Я пытаюсь создать простое приложение, используя 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?

PS. Я использую Apache-Tomcat на рабочем столе Ubuntu

Спасибо

Ответы [ 3 ]

1 голос
/ 10 февраля 2011

Добавить

@RequestMapping("/controllername")

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

0 голосов
/ 06 марта 2011

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

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

0 голосов
/ 10 февраля 2011

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

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

Кроме того, @RequestMapping принимает массив строк для нескольких сопоставлений.

...