只从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"; }
- 春季testing和安全:如何模拟身份validation?
- 我可以在哪里下载Spring Framework jars而不使用Maven?
- Spring MVC – 如何在Spring控制器中获取地图中的所有请求参数?
- Spring中的BeanPostProcessor和init / destroy方法有什么区别?
- Spring MVC – 绑定date字段
- 根据.properties文件中的属性导入Springconfiguration文件
- 在应用程序启动时使用Spring MVC执行Java类
- 如何实例化一个在Spring框架中使用generics的对象?
- 持久性单元作为RESOURCE_LOCAL或JTA?