溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Boot項目@RestController如何使用重定向redirect

發布時間:2021-09-02 13:50:53 來源:億速云 閱讀:1349 作者:小新 欄目:開發技術

這篇文章主要介紹Spring Boot項目@RestController如何使用重定向redirect,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

Spring Boot @RestController重定向redirect

Spring MVC項目中頁面重定向一般使用return "redirect:/other/controller/";即可。而Spring Boot使用了@RestController注解,上述寫法只能返回字符串

解決方法如下

將一個HttpServletResponse參數添加到處理程序方法然后調用response.sendRedirect("some-url");

@RestController
public class FooController {
  @RequestMapping("/foo")
  void handleFoo(HttpServletResponse response) throws IOException {
    response.sendRedirect("some-url");
  }
}

@RestController 注釋下的重定向探討

背景

在工作中遇到需要@RestController 內部的方法直接進行重定向或者轉發

我們知道@RestController注解后,方法默認返回json。但是如果返回ModelAndView 則依然按ModelAndView曾經的邏輯走

那么springmvc內部的邏輯是如何走的呢?

HandlerMethodReturnValueHandlerComposite#selectHandler()
HandlerMethodReturnValueHandlerComposite#handleReturnValue() 
ServletInvocableHandlerMethod#invokeAndHandle()
RequestMappingHandlerAdapter#invokeHandlerMethod()
RequestMappingHandlerAdapter#handleInternal() 
AbstractHandlerMethodAdapter#handle() 
DispatcherServlet#doDispatch()
DispatcherServlet#doService()

自下向上調用,最終通過依據返回參數和MethodParameter(方法參數的簡述類) 得到使用何種HandlerMethodReturnValueHandler,當我們加上@RestController 如果方法返回ModelAndView 或者 View自然返回ModelAndViewMethodReturnValueHandler去處理,因此就解決了需要在@RestController注解下轉發或重定向的問題。

下面是springmvc 默認的15種HandlerMethodReturnValueHandler

0 = {ModelAndViewMethodReturnValueHandler@7121} 
1 = {ModelMethodProcessor@8372} 
2 = {ViewMethodReturnValueHandler@8373} 
3 = {ResponseBodyEmitterReturnValueHandler@8374} 
4 = {StreamingResponseBodyReturnValueHandler@7125} 
5 = {HttpEntityMethodProcessor@8375} 
6 = {HttpHeadersReturnValueHandler@8376} 
7 = {CallableMethodReturnValueHandler@8377} 
8 = {DeferredResultMethodReturnValueHandler@8378} 
9 = {AsyncTaskMethodReturnValueHandler@8379} 
10 = {ModelAttributeMethodProcessor@8380} 
11 = {RequestResponseBodyMethodProcessor@7132} 
12 = {ViewNameMethodReturnValueHandler@8381} 
13 = {MapMethodProcessor@8382} 
14 = {ModelAttributeMethodProcessor@8383}

以上是“Spring Boot項目@RestController如何使用重定向redirect”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女