我不知道你正在使用,从来没有见过这样的代码
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允许控制器接受和返回不同类型的对象,所以选择最适合您的签名。无论您做什么,都不鼓励使用Container特定的API并在控制器方法中创建原始响应(HTML),因为它会模糊MVC中视图和控制器之间的关注点分离。
更新2: 1.你可以很好地使用外部(绝对)网址RedirectView
。 2. RedirectView
负责设置响应状态和Location
标题。 3.如果您想在响应中设置cookie,请使用标准Java EE API - HttpServletResponse
作为控制器方法的参数,以及任何要直接添加到其中的cookie。
这是泽西岛代码。 –
我应该使我的控制器方法无效,只是操纵响应? –
即时更新我的回应,更具体的东西..和更简单的解决方案。 – Akshay