Java spring mvc是否有response.write直接输出到浏览器?
我正在使用SpringMVC和freetemplate 在asp.net中,您可以使用Response直接向浏览器写入内容Java spring mvc是否有response.write直接输出到浏览器?,java,spring,servlets,spring-mvc,Java,Spring,Servlets,Spring Mvc,我正在使用SpringMVC和freetemplate 在asp.net中,您可以使用Response直接向浏览器写入内容 您能在spring mvc中做到这一点吗?如果您使用带注释的控制器(或者我认为不带注释的控制器…),您可以在控制器中使用方法参数HttpServletResponse获取输出流,然后写入屏幕-请参阅 有关可在控制器/处理程序中使用的参数的详细信息,请参阅 (第13.11.4节)我确信在某些情况下这是可能的。例如,如果您有可用的HttpServletResponse对象(就像
您能在spring mvc中做到这一点吗?如果您使用带注释的控制器(或者我认为不带注释的控制器…),您可以在控制器中使用方法参数
HttpServletResponse
获取输出流,然后写入屏幕-请参阅
有关可在控制器/处理程序中使用的参数的详细信息,请参阅
(第13.11.4节)我确信在某些情况下这是可能的。例如,如果您有可用的
HttpServletResponse
对象(就像您在控制器中所做的那样,或者如果您编写自己的视图
),那么您可以调用getWriter()
或getOutputStream()
并写入该对象
但是您需要小心确保您所做的不会干扰您对FreeMarker模板的使用。我不确定您是否可以从FreeMarker模板中管理它。您可以:
- 获取
HttpServletResponse
并打印到其Writer
或OutputStream
(取决于要发送文本数据还是二进制数据)
- 使用:
因此,您的Hello World
文本将被写入响应流。如果您想向OutputStream发送内容,即使您使用的是Freemaker,也只需使用@ResponseBy即可
例如:
@RequestMapping(value = "report1", method = RequestMethod.GET, produces = "application/pdf")
@ResponseBody
public void getReport1(OutputStream out) {
那么@responsebody会忽略视图解析器吗?我使用的是Freemarker,可以使用类似的方法将文件直接发送到输出流吗?谢谢。@kmehta您必须获得OutputStream
。我不确定@ResponseBody
方法。很好。事实证明,使用Spring MVCs FileCopyUtils.copy()非常简单,它接受一个文件流和一个输出流。谢谢你的回复+1。
@RequestMapping(value = "/something")
@ResponseBody
public String helloWorld() {
return "Hello World";
}
@RequestMapping(value = "report1", method = RequestMethod.GET, produces = "application/pdf")
@ResponseBody
public void getReport1(OutputStream out) {