Spring MVC RequestMapping PathVariable首先

时间:2014-10-27 18:11:07

标签: spring spring-mvc request-mapping

我想为每个用户设置自己的个人资料链接 像这样:

   @RequestMapping(value = "/{userlogin}", method = RequestMethod.GET)
    public String page(@PathVariable("userlogin") String userlogin, ModelMap model) {
        System.out.println(userlogin);
        return "user";
    }

但静态页面也得到了这个表达式。
像这样:

@RequestMapping(value = "/hello", method = RequestMethod.GET)
public String hello() {
    System.out.println("hello mapping");
    return "hello";
}

那是我请求GET请求"你好"它会调用两个控制器 我想这样做,只有在没有调用其他方法的情况下,用户控制器才会调用。

控制台,当我调用 localhost:8080/123:

123

控制台,当我调用 localhost:8080 / hello:

hello 
hello mapping


hello mapping
hello 

我想只得到

hello mapping

当调用 localhost:8080 / hello

谁知道如何实施?

1 个答案:

答案 0 :(得分:0)

Spring MVC可以使用带有正则表达式的URI模板模式。提供:

  • userlogin仅包含数字
  • 其他直接在root下的网址包含至少一个非数字字符

您可以在@RequestMapping

中使用它
@RequestMapping(value = "/{userlogin:\\d+}", method = RequestMethod.GET)
public String page(@PathVariable("userlogin") String userlogin, ModelMap model) {
    //...
}

如果userlogin与其他网址之间的分隔与我想象的不同,则很容易适应。