spring mvc有response.write直接输出到浏览器吗?

时间:2010-06-30 04:23:20

标签: java spring servlets spring-mvc

我正在使用带有freetemplate的spring mvc。

在asp.net中,您可以使用Response.Write直接写入浏览器(“hello,world”);

你能在春天的mvc吗?

4 个答案:

答案 0 :(得分:43)

你可以:

  • 获取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文本将被写入回复流。

答案 1 :(得分: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节)

答案 2 :(得分:1)

我确信在某些情况下这是可能的。例如,如果您拥有HttpServletResponse对象(就像在Controller中一样,或者您自己编写View),那么您可以致电getWriter()getOutputStream()并写信给他。

但是您需要小心确保您所做的事情不会干扰您对FreeMarker模板的使用。而且我不确定你是否可以在FreeMarker模板中管理它。

答案 3 :(得分:1)

如果您想向OutputStream发送内容,即使您使用的是Freemarker,也只需使用@ResponseBody 示例:

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