2

假设我有 3 个 url 模式需要 Spring MVC 处理,如下所示:

1) www.example.com/login(到登录页面)

2)www.example.com/home(到我的主页)

3) www.example.com/john(到用户主页)

我想知道处理将用户名作为 url 一部分的 url 模式的最佳实践方法是什么(现实世界的例子是 facebook fanpage www.faceboo.com/{fanpage-name})

我想出了自己的解决方案,但不确定这是否是干净的方法或可能的方法。

在我的方法中,我需要在将请求传递给 Spring MVC 的 dispatchservlet 之前拦截请求,然后查询数据库以将用户名转换为用户 ID,并将请求 URI 更改为 Spring MVC 可以识别的模式,例如 www.example/user/userId= 45. 但我不确定这是否可行,因为 ServletAPI 没有 requestURI 的 setter 方法(它确实有 requestURI 的 getter 方法)

或者如果您有更好的解决方案,请与我分享。预先感谢 :-)

4

1 回答 1

2

Spring MVC 应该能够使用 PathVariables 处理这个问题。

一个处理程序用于 /login,一个处理程序用于 /home,一个处理程序用于 /{userName}。在用户名处理程序中,您可以进行查找以获取用户。像这样的东西:

@RequestMapping(value="/login", method=RequestMethod.GET)
public String getLoginPage() {
    // Assuming your view resolver will resolve this to your jsp or whatever view
    return "login";
}

@RequestMapping(value="/home", method=RequestMethod.GET)
public String getHomePage() {
    return "home";
}

@RequestMapping(value="/{userName}", method=RequestMethod.GET)
public ModelAndView getUserPage( @PathVariable() String userName ) {
    // do stuff here to look up the user and populate the model
    // return the Model and View with the view pointing to your user page
}
于 2013-03-06T16:24:46.627 回答