只从Spring MVC 3控制器返回string消息

任何人都可以告诉我如何可以从控制器返回string消息?

如果我只是从一个控制器方法返回一个string,然后springmvc把它视为一个jsp视图名称。

@ResponseBody在控制器中注释你的方法:

 @RequestMapping(value="/controller", method=GET) @ResponseBody public String foo() { return "Response!"; } 

来自: 15.3.2.6使用@ResponseBody注释映射响应主体 :

可以将@ResponseBody注释放在方法上,并指出返回types应直接写入HTTP响应主体(而不是放在模型中,或者解释为视图名称)。

在Spring 4中,如果Controller使用@RestController而不是@Controller注释,则不需要@ResponseBody注释。

代码将会是

 @RestController public class FooController { @RequestMapping(value="/controller", method=GET) public String foo() { return "Response!"; } } 

你可以在这里find@RestController的Javadoc

虽然,@ Tomasz是绝对正确的还有另一种方式:

 @RequestMapping(value="/controller", method=GET) public void foo(HttpServletResponse res) { try { PrintWriter out = res.getWriter(); out.println("Hello, world!"); out.close(); } catch (IOException ex) { ... } } 

但第一种方法是可取的。 如果要返回具有自定义内容types或返回二进制types(文件等)的响应,则可以使用此方法;

对于那些稍后可能会发现这个问题的人来说,这只是一个注释,但是您不必为了更改内容types而引入响应。 下面是一个例子来做到这一点:

 @RequestMapping(method = RequestMethod.GET, value="/controller") public ResponseEntity<byte[]> displayUploadedFile() { HttpHeaders headers = new HttpHeaders(); String disposition = INLINE; String fileName = ""; headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); //Load your attachment here if (Arrays.equals(Constants.HEADER_BYTES_PDF, contentBytes)) { headers.setContentType(MediaType.valueOf("application/pdf")); fileName += ".pdf"; } if (Arrays.equals(Constants.HEADER_BYTES_TIFF_BIG_ENDIAN, contentBytes) || Arrays.equals(Constantsr.HEADER_BYTES_TIFF_LITTLE_ENDIAN, contentBytes)) { headers.setContentType(MediaType.valueOf("image/tiff")); fileName += ".tif"; } if (Arrays.equals(Constants.HEADER_BYTES_JPEG, contentBytes)) { headers.setContentType(MediaType.IMAGE_JPEG); fileName += ".jpg"; } //Handle other types if necessary headers.add("Content-Disposition", , disposition + ";filename=" + fileName); return new ResponseEntity<byte[]>(uploadedBytes, headers, HttpStatus.OK); } 

关于什么:

 PrintWriter out = response.getWriter(); out.println("THE_STRING_TO_SEND_AS_RESPONSE"); return null; 

这对我来说。

用于以text/plain输出String

 @RequestMapping(value="/foo", method=RequestMethod.GET, produces="text/plain") @ResponseBody public String foo() { return "bar"; }