在傳統的開發過程中,我們的控制CONTROLL層通常需要轉向一個JSP視圖;但隨着WEB2.0相關技術的崛起,我們很多時候只需要返回數據即可,而不是一個JSP頁面。
SPRING MVC3的@ResponseBody使Controller直接返回數據,而不是直接指向具體的視圖;同時通過
MessageConverter和produces(如produces="text/plain;charset=UTF-8")可以返回各種格式的數據(XML,json,RSS,TEXT,字節流等),本章只介紹最簡單的使用;
見代碼:
@ResponseBody可以直接返回結果,
而ResponseEntity 可以定義返回的HttpHeaders和HttpStatus,見文章最后的兩張圖
- @RequestMapping(value="/response", method=RequestMethod.GET)
- public class ResponseController {
- //http://127.0.0.1:8010/response/annotation
- @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)";
- }
- //http://127.0.0.1:8010/response/charset/produce
- @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)";
- }
- //http://127.0.0.1:8010/response/entity/status
- @RequestMapping("/entity/status")
- public ResponseEntity<String> responseEntityStatusCode() {
- return new ResponseEntity<String>("The String ResponseBody with custom status code (403 Forbidden)",
- HttpStatus.FORBIDDEN);
- }
- //http://127.0.0.1:8010/response/entity/headers
- @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);
- }
- }