2010-06-30 65 views

回答

42

您可以:

  • 得到HttpServletResponse並打印到其WriterOutputStream(取決於你是否要發送文本或二進制數據)

    @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文本將被寫入響應流。

+0

因此然後@ResponseBody忽略的視圖解析?我正在使用freemarker – Blankman 2010-06-30 15:04:59

+0

我認爲是...... – Bozho 2010-06-30 15:13:12

+0

可以使用類似的方法將文件直接發送到輸出流嗎?謝謝。 – kmehta 2011-03-23 19:11:28

1

如果使用帶註釋的控制器(或者未標註爲此事,我相信......),你可以使用方法參數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)

0

我敢肯定,它有可能在某些情況下。例如,如果您有HttpServletResponse對象可用(如您在Controller中做的那樣,或者如果您編寫自己的View),則可以撥打getWriter()getOutputStream()並寫入該對象。

但是您需要小心以確保您所做的不會干擾您使用FreeMarker模板。我不確定你是否可以在FreeMarker模板中管理它。

1

如果你想送東西來的OutputStream,即使您正在使用freemaker的,只是用@ResponseBody

例如:

@RequestMapping(value = "report1", method = RequestMethod.GET, produces = "application/pdf") 
    @ResponseBody 
    public void getReport1(OutputStream out) {