zoukankan      html  css  js  c++  java
  • Spring 框架控制器类方法可用的参数与返回类型

    参数类型

    Spring 有内建的 HTTP 消息转换器用于部分简单类型之间的转换

    • 标准 Servlet 类型:HttpServletRequest, HttpServletResponse, HttpSession, InputStream, Reader, OutputStream, Writer, java.util.Local(客户端识别出的区域), org.springframework.web.context.request.WebRequest
      用于操作原始 Servlet,这些类型的参数由 Spring 提供并保证永不为 null

    • @RequestParam(String) 基本类型(与其封装类型或 String
      获取指定的 GET 请求参数,POST 表单参数,multipart/form-data 中的参数部分

    • @RequestParam Map<String, String>
      获取所有 GET 请求参数,POST 表单参数,multipart/form-data 中的参数部分

    • @RequestHeader(String) 基本类型(或 String)
      获取指定的请求头,如果存在多个请求头值,参数可使用数组或集合形式

    • @RequestHeader Map<String, String>
      获取所有请求头

    • HttpHeaders
      获取所有请求头

    • @PathVariable(String) 基本类型(或 String)
      用于获取路径映射中的指定参数(类似于获取使用了 @RequestMapping(value = "/{userId:\d+}/{name}") 中的 userId

    • @PathVariable Map<String, String>
      用于获取路径映射中的所有参数

    • 一般的 POJO
      Spring 将自动把表单转换为该 POJO。如果是 multipart/form-data 表单用于文件上传,该 POJO 中则可以含有一个 Part 类型的属性用于获取上传的文件。可以使用 @Valid 注解进行自动验证,并将第二个参数设置为 BindingResultErrors 用于获取验证结果。该过程实际工作的是内置转换器 FormHttpMessageConverter

    • @RequestBody 其他类型
      将请求实体转换为参数类型对象,需要指定特殊的消息转换器(同时理解源格式与目标格式)。可以使用 @Valid 注解进行自动验证,并将第二个参数设置为 BindingResultErrors 用于获取验证结果。该类型通常用于自定义格式的请求实体的请求,如 XML/JSON 作为源格式的请求

    • HttpEntity<?>
      将请求实体转换为参数类型的类型参数对象,同时提供请求头的访问,需要指定特殊的消息转换器(同时理解源格式与目标格式)。不可以使用 @Valid 注解进行自动验证。该类型通常用于自定义格式的请求实体的请求,如 XML/JSON 作为源格式的请求

    • @RequestPart(String) Part
      获取 multipart/form-data 上传文件中的文件部分,多文件上传需要使用参数的数组或集合形式。(不需要特殊的消息转换器,内建的 HTTP 消息转换器会自动处理)

    • Map<String, Object>ModelMapModel 的非标注类型
      Spring 传入到视图中用于渲染的模型,可以在方法执行中添加特性。

    返回值类型

    • void
      通知 Spring 响应将手动处理。Spring 在方法返回后不会进行进一步处理

    • Map<String, Object>ModelMapModel
      即返回模型,将这些类型指定为方法参数的备用方式。Sping 隐式的使用已配置的 RequestToViewNameTranslator 确定视图名称,再使用已配置的 ViewResolver 解析成一个真正的视图

    • View
      返回一个显式的视图对象,方法返回后请求将转发至该视图。Spring 直接使用该 View,无需额外逻辑判断如何像客户端展示模型

    • String(未使用 @ResponseBody 标注方法)
      表示用于解析的视图的名称。Spring 使用已配置的 ViewResolver 将视图名称解析成一个真正的视图

    • ModelAndView
      提供了同时返回 (View 与 Model) 或(字符串视图名称与 Model) 的能力。如果是由字符串构造,Spring 使用已配置的 ViewResolver 将视图名称解析成一个真正的视图

    • HttpEntity<?>
      Spring 将把返回类型的类型参数对象转换为响应内容。ResponseEntity 继承自 HttpEntity 并提供了设置响应码的能力。HttpEntity<?> 响应码需要使用 @ResponseStatus(int) 设置(未设置时默认为 HttpStatus.OK)。Spring 基于协商的内容类型使用合适的 HTTP 消息转换器进行转换并决定展示到哪个视图

    • Callable<?>DeferredResult<?>
      返回的这些异步类型将使 Spring 释放请求线程并在一个单独的线程中执行返回值

    • 其他类型(方法上使用了 @ResponseBody 注解)
      Spring 将把返回类型的类型参数对象转换为响应内容。有 @ResponseBody 修饰时,返回类型的其他处理器将被忽略,且该注解比其他返回值处理器优先级都高。响应码需要使用 @ResponseStatus(int) 设置(未设置时默认为 HttpStatus.OK)。Spring 基于协商的内容类型使用合适的 HTTP 消息转换器进行转换并决定展示到哪个视图

    • 其他类型(方法上未使用 @ResponseBody 注解)
      即返回模型特性,将该对象用作 Model 中的一个特性,并将返回类型的驼峰式命名作为 Model 中的特性名(可以使用 @ModelAttribute(String) 显式指定)。Sping 隐式的使用已配置的 RequestToViewNameTranslator 确定视图名称,再使用已配置的 ViewResolver 解析成一个真正的视图

  • 相关阅读:
    您上次已将进行的搜狗输入法的安装或卸载,操作要求重启。您在重启之后才能继续新的输入法安装卸载程序。
    CUDPP主页
    cudaMemcpy2D介绍
    cudaMallocPitch – 向GPU分配存储器
    leanote开源云笔记
    OpenMP常用函数
    PRmakefile文件
    安装gcc,g++
    Getting aCC Error :name followed by "::" must be a class or namespace name"
    acc_set_device_num && acc_get_device_num例程
  • 原文地址:https://www.cnblogs.com/seliote/p/9914902.html
Copyright © 2011-2022 走看看