弹簧 MVC 控制器方法的有效返回类型有哪些?

我在Spring MVC方面没有太多经验,我有以下关于控制器方法可以返回的有效返回类型

因此,我知道用户生成由 DispatcherServlet 接收和处理的 HttpRequest,该请求将此请求分派给特定的控制器类。

控制器类如下所示:

@Controller
public class AccountController {

    @RequestMapping("/showAccount")
    public String show(@RequestParam("entityId") long id, Model model) {
        ...
    }

    .......................................
    .......................................
    .......................................
}

因此,我知道每个方法都处理特定的请求,并且处理的请求由@RequestMapping注释指定。

我还知道该方法返回一个作为逻辑视图名称String对象(然后由视图解析程序解析以呈现视图)

因此,在此阶段,我认为控制器类的方法仅返回 String 对象。但我不确定。也许像这样的方法也可以返回一些不同类型的对象?


答案 1

有许多返回类型可用于由控制器内部注释的 Handler 方法,例如:@RequestMapping

  • ModelAndView (Class)

  • 模型(接口)

  • 地图
  • 字符串
  • 无效
  • 视图
  • HttpEntity<?>ResponseEntity<?>
  • HttpHeaders

还有更多.....查看文档

每个返回类型都有其特定的用途,例如:如果您使用的是 String,则表示返回视图名称,此视图名称将由 解析。如果不想返回任何视图名称,请将返回类型称为 .如果要设置视图名称以及要发送一些数据以供查看,请使用作为返回类型。ViewResolvervoidModelAndView

请浏览文档,您还将了解可以在处理程序方法中传递哪种方法参数。


答案 2

您在文档中有直接的答案

请特别注意

如果使用 @ResponseBody 对方法进行批注,则返回类型将写入响应 HTTP 正文。返回值将使用 HttpMessageConverters 转换为声明的方法参数类型。

当使用@ResponseBody调用方法时,返回类型可以是任何自定义类型,任何Java pojo,框架将转换为适当的重复批号JSON,XML等并写回响应正文


推荐