我不知道您使用的是什么框架,从未见过类似的代码
Response.status(Response.Status.TEMPORARY_REDIRECT).cookie(cookie).location(new URI(authUrl)).entity("Redirecting...").build();
因此,我将假设这来自您的项目使用的一些自定义/专有框架。
更新:从评论中我了解到这是泽西代码。谢谢。绝对是我要研究的东西!:)
尽管如此,Spring MVC 应用程序仍然是 Java EE 应用程序。如果您的控制器方法逻辑指示响应将是客户端重定向或 html,您可以执行以下操作。
- 拥有您的控制器方法
ModelAndView
对象。
- 根据您的逻辑,如果您决定该方法应该发出重定向,请创建一个 的实例
RedirectView
,并传递应该发生重定向的 uri。
- 将
RedirectView
实例设置为实例ModelAndView
并从方法中返回。这将导致客户端浏览器上的重定向。
- 如果您的逻辑要求提供 HTML 响应,请将您的 jsp 的路径传递给
ModelAndView
实例并返回它。
希望现在更清楚。
基本上,Spring MVC 允许控制器接受和返回不同类型的对象,因此请选择最适合您的签名。无论您做什么,都不鼓励使用容器特定的 API 并在控制器方法中创建原始响应 (HTML),因为它模糊了 MVC 中视图和控制器之间的关注点分离。
更新 2: 1. 您可以很好地使用外部(绝对)url 和RedirectView
. 2.RedirectView
负责设置响应状态和Location
标头。3. 如果您想在响应中设置 cookie,请使用标准 Java EE API -HttpServletResponse
作为控制器方法的参数,以及您想要添加的任何 cookie,直接向其中添加。