Имеет ли 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.