返回顶部
首页 > 资讯 > 后端开发 > Python >Spring Boot项目@RestController使用重定向redirect方式
  • 576
分享到

Spring Boot项目@RestController使用重定向redirect方式

2024-04-02 19:04:59 576人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录Spring Boot @RestController重定向redirect解决方法如下@RestController 注释下的重定向探讨背景那么springMVC内部的逻辑是如

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} 

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Spring Boot项目@RestController使用重定向redirect方式

本文链接: https://lsjlt.com/news/134335.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作