Может ли кто-нибудь сказать мне, как я могу вернуть строковое сообщение от контроллера?
Если я просто возвращаю строку из метода контроллера, тогда spring mvc обрабатывает ее как имя представления jsp.
java
spring
spring-mvc
user960567
источник
источник
@RequestMapping(value="/controller", method=GET, produces="text/plain")
В Spring 4, если ваш контроллер аннотирован
@RestController
вместо@Controller
, вам не нужна@ResponseBody
аннотация.Код будет
@RestController public class FooController { @RequestMapping(value="/controller", method=GET) public String foo() { return "Response!"; } }
Вы можете найти Javadoc
@RestController
здесьисточник
Хотя @Tomasz абсолютно прав, есть другой способ:
@RequestMapping(value="/controller", method=GET) public void foo(HttpServletResponse res) { try { PrintWriter out = res.getWriter(); out.println("Hello, world!"); out.close(); } catch (IOException ex) { ... } }
но предпочтительнее первый способ. Вы можете использовать этот метод, если хотите вернуть ответ с настраиваемым типом содержимого или вернуть двоичный тип (файл и т. Д.);
источник
Это просто примечание для тех, кто может найти этот вопрос позже, но вам не нужно тянуть ответ, чтобы изменить тип содержимого. Вот пример ниже, чтобы сделать это:
@RequestMapping(method = RequestMethod.GET, value="/controller") public ResponseEntity<byte[]> displayUploadedFile() { HttpHeaders headers = new HttpHeaders(); String disposition = INLINE; String fileName = ""; headers.setContentType(MediaType.APPLICATION_OCTET_STREAM); //Load your attachment here if (Arrays.equals(Constants.HEADER_BYTES_PDF, contentBytes)) { headers.setContentType(MediaType.valueOf("application/pdf")); fileName += ".pdf"; } if (Arrays.equals(Constants.HEADER_BYTES_TIFF_BIG_ENDIAN, contentBytes) || Arrays.equals(Constantsr.HEADER_BYTES_TIFF_LITTLE_ENDIAN, contentBytes)) { headers.setContentType(MediaType.valueOf("image/tiff")); fileName += ".tif"; } if (Arrays.equals(Constants.HEADER_BYTES_JPEG, contentBytes)) { headers.setContentType(MediaType.IMAGE_JPEG); fileName += ".jpg"; } //Handle other types if necessary headers.add("Content-Disposition", , disposition + ";filename=" + fileName); return new ResponseEntity<byte[]>(uploadedBytes, headers, HttpStatus.OK); }
источник
Что о:
PrintWriter out = response.getWriter(); out.println("THE_STRING_TO_SEND_AS_RESPONSE"); return null;
Меня это волнует.
источник
Для вывода в
String
видеtext/plain
использования:@RequestMapping(value="/foo", method=RequestMethod.GET, produces="text/plain") @ResponseBody public String foo() { return "bar"; }
источник