博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
@ReuqestMapping注解的处理方法和返回类型
阅读量:7242 次
发布时间:2019-06-29

本文共 3075 字,大约阅读时间需要 10 分钟。

hot3.png

    支持的方法参数类型

    1、请求或响应对象(Servlet API),可以是任何具体的请求或响应类型的对象,比如ServletRequest
    或HttpServletRequest对象等
    2、HttpSession类型的会话对象(Servlet API),使用该类型的参数将要求这样一个session存在,因
    此参数永不为null
    3、org.springframework.web.context.request.WebRequest或org.springframework.web.context.request
    .NativeWebRequest
。允许存取一般的请求参数和请求/会话范围的属性,无需绑定使用Servlet/Portlet的
    API
    4、当前请求的地区信息java.util.Locale,由已配置的最相关的地区解析器解析得到。在MVC的环境下,
    就是应用中配置的LocaleResolverLocaleContextResolver
    5、与当前请求绑定的时区信息java.util.TimeZone/java.time.ZoneId,由LocaleContextResolver解析得到
    6、用于存取请求正文的java.io.InputStreamjava.io.Reader,该对象与通过Servlet API拿到的输入
    流/Reader
是一样的
    7、用于生产响应正文的java.io.OutputStreamjava.io.Writer,该对象与通过Servlet API拿到的输出
    流/Writer
是一样的
    8、org.springframework.http.HttpMethod,可以拿到HTTP请求方法
    9、包装了当前被认证用户信息的java.security.Principal
    10、带@PathVariable注解的方法参数,其存放了URL模板变量中的值,如find/{id}
    11、带@MatrixVariable注解的方法参数,其存放了URI路径段中的键值对,如矩阵变量等
    12、带@RequestParam注解的方法参数,其存放了Servlet请求中所指定的参数,参数的值会被转换成方法
    参数所声明的类型
    13、带@RequestHeader注解的方法参数,其存放了Servlet请求中所指定的HTTP请求头的值,参数的值会被
    转换成方法参数所声明的类型
    14、@RequestBody注解的参数,提供了对HTTP请求体的存取,参数的值通过HttpMessageConverter被转换成
    方法所声明的类型
    15、@RequestPart注解的参数,提供了对一个"multipart/form-data"请求块(request part)内容的存取
    16、HttpEntity<?>类型的参数,提供了对HTTP请求头和请求内容的存取,请求流是通过HttpMessageConverter被转换成
    entity对象的
    17、java.util.Map/org.springframework.io.Model/org.springframework.ui.ModelMap类型为参数,用以
    增强默认暴露给视图层的模型(model)的功能
    18、org.springframework.web.servlet.mvc.support.RedirectAttributes类型的参数,用以指定重定向
    下要使用到的属性集和添加flash属性
    19、命令或表单对象,用以将请求参数直接绑定到bean字段(可能是通过setter方法),也可以通过@InitBinder
    注解和/或HanderAdapter的配置来定制这个过程的类型转换。
    20、org.springframework.validation.Errors/org.springframework.validation.BindingResult验证结果
    对象
,用以存储前面的命令或表单对象的验证结果
    21、org.springframework.web.bind.support.SessionStatus对象,用以标记当前的表单处理已结束,这
    将触发一些清理操作:@SessionAttributes在类级别注解的属性将被移除
    22、org.springframework.web.util.uriComponentsBuilder构造器对象,用以构造当前请求URL相关的
    信息,比如主机名、端口号、资源类型、上下文路径、servlet映射中的相对部分等     
    
    
    支持的方法返回类型
    1、ModelAndView对象,其中model隐含填充了命令对象,以及注解了@ModelAttribute字段的存取器被调用
    所返回的值
    2、Model对象,其中视图名称默认由RequestToViewNameTranslator决定,model隐含填充了命令对象以
    及注解了@ModelAttribute字段的存取器被调用所返回的值
    3、Map对象,用以暴露model,与Model对象一样
    4、View对象,其中model隐含填充了命令对象,以及注解了@ModelAttribute字段的存取器被调用所返回的值。
    handler方法也可以增加一个Model类型的方法参数来增强model
    5、String对象,其值会被解析成一个逻辑视图名,其中model将默认填充了命令对象以及注解了@ModelAttribute
    字段的存取器被调用所返回的值。handler方法也可以增加一个Model类型的方法参数来增强model
    6、void,如果处理器方法中已经对response响应数据进行了处理(比如在方法参数中定义一个ServletResponse
    或HttpServletResponse类型的参数并直接向其响应体写东西),handler方法也可以增加一个Model类型的方法参
    数来增强model
    7、如果处理器方法注解了ResponseBody,那么返回类型将被写到HTTP的响应体中,而返回值会被HttpMessageConverters
    转换成所方法声明的参数类型
    8、HttpEntity<?>或ResponseEntity<?>对象,用以提供对Servlet HTTP响应头和响应内容的存取,对象体会被
    HttpMessageConverters转换成响应流
    9、HttpHeaders对象,返回一个不含响应体的response
    10、Callable<?>对象,当应用希望异步地返回方法值时使用,这个过程由Spring MVC自身的线程来管理
    11、DeferredResult<?>,当应用希望方法的返回值交由线程自身决定时使用
    12、ListenableFutue<?>,当应用希望方法的返回值交由线程自身决定时使用
    13、ResponseBodyEmitter对象,可用它异步地向响应体中同时写多个对象
    14、SseEmitter对象,可用它异步地向响应体中写服务器端事件
    15、StreamingResponseBody对象,可用它异步地向响应对象的输出流中写东西
    16、其它任何返回类型,都会被处理成model的一个属性并返回给视图,该属性的名称为方法级的@ModelAttribute所注解
    的字段名(或以返回类型的类名作为默认的属性名)

转载于:https://my.oschina.net/u/3378039/blog/3005089

你可能感兴趣的文章
Codeforces Round #447 (Div. 2) C. Marco and GCD Sequence【构造/GCD】
查看>>
求多个区间合并后区间大小的巧妙解决方法【差分】
查看>>
转载:AAC编解码概述
查看>>
POJ 3370 Halloween treats( 鸽巢原理简单题 )
查看>>
STL vector list deque区别与实现(总结)
查看>>
讨论76 怎么查一下我机器的内存?AIX环境
查看>>
001设计模式 -- 策略模式
查看>>
Java中的基本数据类型
查看>>
wordpress 插件推荐
查看>>
对于[]()+!的研究
查看>>
jquery中对于为一组标签赋予点击事件
查看>>
文档模型(JSON)使用介绍
查看>>
实验2 柱状图生成
查看>>
利用GCTA工具计算复杂性状/特征(Complex Trait)的遗传相关性(genetic correlation)...
查看>>
Python递归报错:RuntimeError: maximum recursion depth exceeded in comparison
查看>>
[Codeforces178F2]Representative Sampling
查看>>
NPOI创建Word
查看>>
Entity Framework 使用注意:Where查询条件中用到的关联实体不需要Include
查看>>
mysql因为服务器异常关机倒是启动不了 找不到mysql.sock
查看>>
矩阵的坐标变换(转)
查看>>