Имеет ли spring mvc response.write для вывода в браузер напрямую?

Я использую spring mvc с freetemplate.

В asp.net вы можете прямо писать в браузер с помощью Response.Write( "привет, мир" );

Можете ли вы сделать это в spring mvc?

Ответы

Ответ 1

Вы можете:

  • получить 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 будет записан в поток ответов.

Ответ 2

Если вы используете аннотированный контроллер (или не аннотированный, если на то пошло, я верю...), вы можете использовать аргумент метода 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)

Ответ 3

Если вы хотите отправить что-то в OutputStream, даже если вы используете Freemaker, просто используйте @ResponseBody

Пример:

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

Ответ 4

Я уверен, что это возможно в некоторых контекстах. Например, если у вас есть объект HttpServletResponse, доступный для вас (как вы это делаете в Controller, или если вы пишете свой собственный View), вы можете вызвать getWriter() или getOutputStream() и записать на него.

Но вам нужно быть осторожным, чтобы убедиться, что то, что вы делаете, не мешает вам использовать шаблоны FreeMarker. И я не уверен, если вы сможете управлять им из шаблона FreeMarker.