2

我想使用普通的 spring mvc 控制器并使用路径变量请求映射。

我不想转发或重定向,只需更改用户看到的字符串。

@RequestMapping(value = "/Foo/{id}/*", method = RequestMethod.GET)
public ModelAndView getFoo(@PathVariable final String friendlyUrl) {
//how can I rewite the url that user sees ?
}

(与您在 stackoverflow 上更改现有问题的标题时的行为相同)

4

1 回答 1

1

如果您在 wireshark、firebug 或您看到的东西中查看流量,stackoverflow 会向最终 URL 发送 HTTP 301 Moved Permanently。你也可以这样做。

为此,您需要HttpServletResponse,您可以将其添加到方法签名中以将其注入。设置永久重定向:

String rightUrl = urlCompleter.complete(friendlyUrl);
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", rightUrl);

您需要自己实施的地方urlCompleter,例如。查看数据库条目表并找到正确的 url 组件。

于 2012-12-29T12:21:31.780 回答