Spring MVC控制器方法的有效返回类型是什么?


问题内容

我在Spring MVC中没有太多经验,并且我对 控制器方法可以返回的有效返回类型 有以下了解。

因此,我知道用户生成了一个 DispatcherServlet 接收并处理的 HttpRequest, 并将此请求 分派
到特定的控制器类。

控制器类是这样的:

@Controller
public class AccountController {

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

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

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

我也知道该方法返回一个 String 对象,该对象是 逻辑视图名称 (然后由 视图解析器解析 以呈现视图)

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


问题答案:

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

  • ModelAndView(class)
    Model (Interface)

    Map
    String
    Void
    *View
  • HttpEntity<?> 要么 ResponseEntity<?>
  • HttpHeaders

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

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

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