我想使用普通的 spring mvc Controller 并使用路径变量请求映射。
我不想转发或重定向,只是改变用户看到的字符串。
@RequestMapping(value = "/Foo/{id}/*", method = RequestMethod.GET)
public ModelAndView getFoo(@PathVariable final String friendlyUrl) {
//how can I rewite the url that user sees ?
}
(与更改 stackoverflow 上现有问题的标题时的行为相同)
最佳答案
如果您在 wireshark、firebug 或其他东西中观察流量,stackoverflow 会向最终 URL 发送 HTTP 301 永久移动。 你也可以这样做。
为此您需要HttpServletResponse
,您可以将它添加到方法签名中以将其注入(inject)。
设置永久重定向:
String rightUrl = urlCompleter.complete(friendlyUrl);
response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
response.setHeader("Location", rightUrl);
您需要自己实现 urlCompleter
的地方,例如。查看数据库条目表并找到正确的 url 组件。
关于java - Spring mvc 将 url "myapp.com/Foo/12345/test-one"重写为 "myapp.com/Foo/12345/test-one-a-b",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14081570/