spring mvc有response.write直接输出到浏览器吗?
我正在使用带有freetemplate的spring mvc。
在asp.net中,您可以使用Response.Write直接写入浏览器(“hello,world”);
你能在spring的mvc做这个吗?
你可以:
-
获取
HttpServletResponse
并打印到其Writer
或OutputStream
(取决于您是否要发送文本或二进制数据)@RequestMapping(value = "/something") public void helloWorld(HttpServletResponse response) { response.getWriter().println("Hello World") }
-
使用
@ResponseBody
:@RequestMapping(value = "/something") @ResponseBody public String helloWorld() { return "Hello World"; }
因此,您的Hello World
文本将写入响应流。
如果您使用带注释的控制器(或者我认为是非注释的……),您可以在控制器中使用方法参数HttpServletResponse
来获取输出流,然后写入屏幕 – 请参阅http:// download。 oracle.com/docs/cd/E17410_01/javaee/6/api/javax/servlet/ServletResponse.html#getOutputStream%28%29
有关可在控制器/处理程序中使用的参数的更多信息,请参阅http://static.springsource.org/spring/docs/2.5.x/reference/mvc.html (第13.11.4节)
我确信在某些情况下这是可能的。 例如,如果您可以使用HttpServletResponse
对象(就像在Controller
,或者您编写自己的View
),那么您可以调用getWriter()
或getOutputStream()
并写入。
但是您需要小心确保您所做的事情不会干扰您对FreeMarker模板的使用。 而且我不确定你是否可以在FreeMarker模板中管理它。
如果您想向OutputStream发送内容,即使您使用的是Freemaker,也只需使用@ResponseBody即可
例:
@RequestMapping(value = "report1", method = RequestMethod.GET, produces = "application/pdf") @ResponseBody public void getReport1(OutputStream out) {