我不知道你正在使用,從來沒有見過這樣的代碼
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