四 @ReponseBody 注解
@Target({java.lang.annotation.ElementType.TYPE, java.lang.annotation.ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface ResponseBody {}
@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文(ResponseBody)中,一般在异步获取数据时使用,通常是在使用 @RequestMapping 后,返回值通常解析为跳转路径,加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中。
作用于方法上。
@RequestMapping(value="/register") @ResponseBody public String register(User user){ }
四.一 运行过程:
该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区
四.二 使用时机
返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用。 常常是用JSON格式,后面专门讲解。
是将方法的返回结果 以JSON的方式,返回给前端。 与@RequestBody 正好相反。
五. @RequestHeader
@Target({java.lang.annotation.ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface RequestHeader { @AliasFor("name") String value() default ""; @AliasFor("value") String name() default ""; boolean required() default true; String defaultValue() default "\n\t\t\n\t\t\n\n\t\t\t\t\n"; }
把 请求 request 的Header 头部的内容直接绑定在参数上,方便获取浏览器头部的值。
常见的头部值有:
Host: 请求的web服务器域名地址
User-Agent: HTTP客户端运行的浏览器类型的详细信息。通过该头部信息,web服务器可以判断到当前HTTP请求的客户端浏览器类别。
Accept: 指定客户端能够接收的内容类型,内容类型中的先后次序表示客户端接收的先后次序。
Accept-Language: 指定HTTP客户端浏览器用来展示返回信息所优先选择的语言。
Accept-Encoding: 指定客户端浏览器可以支持的web服务器返回内容压缩编码类型。表示允许服务器在将输出内容发送到客户端以前进行压缩,以节约带宽。而这里设置的就是客户端浏览器所能够支持的返回压缩格式
Accept-Charset: 浏览器可以接受的字符编码集。
Content-Type: 显示此HTTP请求提交的内容类型。一般只有post提交时才需要设置该属性。
Keep-Alive: 显示此HTTP连接的Keep-Alive时间。使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。以前HTTP请求是一站式连接,从HTTP/1.1协议之后,就有了长连接,即在规定的Keep-Alive时间内,连接是不会断开的。
@RequestHeader 注解标记在方法参数上,每一个参数都要进行相应的标识。
@RequestMapping(value="/register") public String register(@RequestHeader(value="User-Agent") String user_agent, @RequestHeader(value="Accept") String accept ){ System.out.println("浏览器:"+user_agent); System.out.println("接收类型:"+accept); return "user/login"; }
请求之后,控制台打印输出: