java - Spring MVC - 使用路径变量编辑响应 URL

标签 java rest spring-mvc path-variables

我将使用 StackOverflow 的用户配置文件页面作为示例。假设我们有这个 URL:

https://stackoverflow.com/users/2036414/userlogin

如果我们像这样更改(在浏览器的 url 栏中编辑)最后一个路径变量:

https://stackoverflow.com/users/2036414/aWordThatIsNotTheLoginOfThisUser

...然后按 Enter,返回的 URL 将是第一个,这意味着这个变量被设置为正确的登录,基于另一个变量,它可能是用户的 ID (2036414)。换句话说,URL 被更正为:

https://stackoverflow.com/users/2036414/userlogin

我的问题是:如何使用 Spring MVC 做到这一点?这是我的 Controller :

@RequestMapping(value="/{id}/{login}", method = RequestMethod.GET)
public String showPerfilUsuario(@PathVariable("id") long id, @PathVariable("login") String login, Map<String, Object> model){
    Usuario usuario = usuarioService.buscarUsuarioPorId(id);
    model.put("usuario", usuario);
    return "usuario"; //that's the tiles definition's name
}

任何帮助将不胜感激,谢谢。

最佳答案

Stackoverflow 可能会做一些花哨的事情 URL rewriting .一种简单的方法是发送重定向。让您的处理程序方法获取用户 ID 并检查它是否与用户名字符串匹配。 如果没有,则发送重定向

return "redirect:/users/" + id + "/" + correctUserName;

这将向浏览器发送 302 响应。浏览器将向构造的地址发送新的 HTTP 请求。

关于java - Spring MVC - 使用路径变量编辑响应 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19504019/

相关文章:

JAVA:如何使用扫描仪向字符串数组输入未定义数量的值?

java - 为什么我的倒计时器似乎在倒退?

rest - paypal rest api更新存储的信用卡

java - 返回InputStream时生成swagger文档

java - Spring ComponentScan 导致 java.lang.IllegalStateException : ApplicationEventMulticaster not initialized

java - 从每行中删除特定文本

java - 处理RxJava即时搜索时中断异常

java - 我们可以使用Java中的 "new"关键字创建一个HttpResponse对象吗?

javascript - 如何检测发送到我的 REST http post 端点的空 JSON 数据?它破坏了我的服务器代码

spring - 在 weblogic 10.3.6 中部署 Spring 4.1.6 mvc webapp