在传统的开发过程当中,咱们的控制CONTROLL层一般须要转向一个JSP视图;但随着WEB2.0相关技术的崛起,咱们不少时候只须要返回数据便可,而不是一个JSP页面。java
SPRING MVC3的@ResponseBody使Controller直接返回数据,而不是直接指向具体的视图;同时经过json
MessageConverter和produces(如produces="text/plain;charset=UTF-8")能够返回各类格式的数据(XML,json,RSS,TEXT,字节流等),本章只介绍最简单的使用;
见代码:app
@ResponseBody能够直接返回结果,spa
而ResponseEntity 能够定义返回的HttpHeaders和HttpStatus,见文章最后的两张图
- @RequestMapping(value="/response", method=RequestMethod.GET)
- public class ResponseController {
-
- @RequestMapping("/annotation")
- public @ResponseBody String responseBody() {
- return "The String ResponseBody";
- }
-
-
- @RequestMapping("/charset/accept")
- public @ResponseBody String responseAcceptHeaderCharset() {
- return "\u3053\u3093\u306b\u3061\u306f\u4e16\u754c\uff01 (\"Hello world!\" in Japanese)";
- }
-
- @RequestMapping(value="/charset/produce", produces="text/plain;charset=UTF-8")
- public @ResponseBody String responseProducesConditionCharset() {
- return "\u3053\u3093\u306b\u3061\u306f\u4e16\u754c\uff01 (\"Hello world!\" in Japanese)";
- }
-
- @RequestMapping("/entity/status")
- public ResponseEntity<String> responseEntityStatusCode() {
- return new ResponseEntity<String>("The String ResponseBody with custom status code (403 Forbidden)",
- HttpStatus.FORBIDDEN);
- }
-
- @RequestMapping("/entity/headers")
- public ResponseEntity<String> responseEntityCustomHeaders() {
- HttpHeaders headers = new HttpHeaders();
- headers.setContentType(MediaType.TEXT_PLAIN);
- return new ResponseEntity<String>("The String ResponseBody with custom header Content-Type=text/plain",
- headers, HttpStatus.OK);
- }
-
- }


