【发布时间】:2016-08-12 07:47:41
【问题描述】:
成功登录后,下面的控制器方法将转发到另一个控制器以提供模型和视图。这很好用——但是浏览器的 url 在转发完成后显示“http://localhost:8080/AppName/loginSuccessForward”,即使它正在显示来自转发控制器的视图。
有没有办法让浏览器显示转发控制器的 url?如果它按我的意愿工作,用户将在浏览器中看到“http://localhost:8080/AppName/l/l/profile”或“http://localhost:8080/AppName/t/t/profile”,具体取决于他或她属于哪一类用户。
@RequestMapping("/loginSuccessForward")
public String loginForward(Principal principal){
if (principal == null){
return "/";
} else {
if (user1Service.getUser(principal.getName()) != null){
return "forward:/t/t/profile";
} else if (user2Service.getUser(principal.getName()) != null){
return "forward:/l/l/profile";
} else {
return "/";
}
}
}
对于上下文:这是基于 Spring MVC 构建的(尽管看起来像是一般的 Java 问题)。
【问题讨论】:
-
当然。这是一个服务器端转发。根本不涉及客户端(Web 浏览器)。另一种方法是将 redirect 发送回浏览器,以便 it 可以向更新的 URL 发送新请求。
-
@Andreas -- 明白,非常感谢您的解释。我不知道这是 forward: 和 redirect: 前缀之间的区别。解锁后我会接受你的回答。
标签: java spring url controller forward