如何在SpringMVC中使用@RequestMapping实现某种url格式

时间:2011-02-10 14:08:50

标签: jsp spring-mvc url-pattern

我正在尝试使用SpringMVC创建一个简单的应用程序用于学习目的。我希望以这种格式获取各种动作的网址

http://localhost:8080/appname/controllername/actionname.html

DispatcherServlet的servlet-mapping中指定的url-pattern是

<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

但是我想要网址,

http://localhost:8080/appname/contact/list.html

我尝试在方法之上使用@RequestMapping("/contact/list.html"),但它没有帮助(显示404错误描述请求的资源()不可用)。

如何做到这一点?

此外,是否可以为servlet映射设置多个url模式,例如。 *.html or *.do

PS。我在Ubuntu桌面上使用apache-tomcat

由于

3 个答案:

答案 0 :(得分:1)

添加

@RequestMapping("/controllername")

课前宣言。

答案 1 :(得分:0)

你试过这个吗?

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

此外,@RequestMapping接受一个字符串数组以允许多个映射。

答案 2 :(得分:0)

顺便说一句,你可以简化甚至更多!

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.

有关详细信息,请参阅http://www.infoq.com/articles/spring-2.5-ii-spring-mvc

上的Removing Class-Level Request Mappings一章