コントローラーから文字列メッセージを返す方法を教えてもらえますか?
コントローラーメソッドから文字列を返すだけの場合は、mvcをSpringしてjspビュー名として扱います。
コントローラーから文字列メッセージを返す方法を教えてもらえますか?
コントローラーメソッドから文字列を返すだけの場合は、mvcをSpringしてjspビュー名として扱います。
回答:
コントローラでメソッドに注釈を付けます@ResponseBody
:
@RequestMapping(value="/controller", method=GET)
@ResponseBody
public String foo() {
return "Response!";
}
From:15.3.2.6 @ResponseBody
アノテーションとレスポンス本文のマッピング:
@ResponseBody
注釈は、[...]は、方法に置くことができ、戻り型がHTTPレスポンスボディに直接書き込まれた(モデルに入れていない、またはビュー名として解釈)されるべきであることを示しています。
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);
}
@RequestMapping(value="/controller", method=GET, produces="text/plain")