1,@RequestBody 、 @ResponseBody
概念
1,Http请求和响应报文本质上都是一串字符串 2,java将报文封装成I/O流,从流中读取以及写入原始字符 3,HttpMessageConverter(消息转换器)提供了转换,(read方法)请求报文-->@RequestBody注解的对象 (write方法)@ResponseBody注解对象-->响应报文 4,spring提供了请求报文的抽象,HttpInputMessage(Represents an HTTP input message,consisting of headers and a readable body)以及响应报文的抽象 HttpOutputMessage(Represents an HTTP output message, consisting of headers and a writable body)。 5,RequestResponseBodyMethodProcessor,处理@RequestBody注解的方法参数以及@ResponseBody方法注解的返回值。 6,HttpInputMessage和可以从servlet标准的HttpServletRequest构造,HttpOutputMessage可以从HttpServletResponse构造。
1)Request消息结构
POST /course/jzcf3e875d82d147449f3271219c0ad4b0/modifyInfo HTTP/1.1 //请求行
//请求头
Connection: keep-alive
//空行
type=3&price=0.02 //请求体
- Response消息结构
HTTP/1.1 200 OK //响应行
Server: nginx//响应头
Date: Wed, 17 May 2017 18:15:17 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
//空行
{"uptoken":"123","success":true} //响应体
使用@RequestBody,指定一个方法的参数绑定到一个web请求的body。
参数传递的时候,需要增加Content-type的请求头。
eg:设置 Header参数 Content-Type application/json
Http协议中,如果不指定Content-Type,则默认传递的参数就是application/x-www-form-urlencoded类型
使用@RequestBody接受的参数是不会被Servlet转化统一放在request对象的Param参数集中,@RequestParam是可以的。
2,@bean @component
1)每个Spring Bean都有作用域,默认情况Spring应用上下文中的Bean都是单例对象,也就是说,无论给某个Bean被多少次装配给其他Bean,都是同一个实例,即Spring Bean默认的作用域为Singleton。
2)一个对象没有状态并且能够在应用中重复使用,就可以使用Singleton模式。
3)要对Bean的作用域进行配置,在使用@Component或@Bean标注的同时使用@Scope标注。
登录 | 立即注册