복붙노트

[SPRING] Spring MVC 3 Controller로부터 만 문자열 메시지를 돌려 준다.

SPRING

Spring MVC 3 Controller로부터 만 문자열 메시지를 돌려 준다.

컨트롤러에서 문자열 메시지를 반환 할 수있는 방법을 말해 줄 수 있습니까?

난 그냥 컨트롤러 메서드에서 문자열을 반환하는 경우 jv 뷰 이름으로 mvc 봄.

해결법

  1. ==============================

    1.@ResponseBody를 사용하여 컨트롤러에서 메서드 주석을 작성하십시오.

    @ResponseBody를 사용하여 컨트롤러에서 메서드 주석을 작성하십시오.

    @RequestMapping(value="/controller", method=GET)
    @ResponseBody
    public String foo() {
        return "Response!";
    }
    

    From : 15.3.2.6 @ResponseBody 주석을 사용하여 응답 본문 매핑 :

  2. ==============================

    2.Spring 4에서 Controller가 @Controller 대신 @RestController로 주석을 달면 @ResponseBody annotation이 필요 없다.

    Spring 4에서 Controller가 @Controller 대신 @RestController로 주석을 달면 @ResponseBody annotation이 필요 없다.

    코드는

    @RestController
    public class FooController {
    
       @RequestMapping(value="/controller", method=GET)
       public String foo() {
          return "Response!";
       }
    
    }
    

    @RestController에 대한 Javadoc을 찾을 수 있습니다.

  3. ==============================

    3.그러나, @ 토마스는 절대적으로 옳습니다. 다른 방법이 있습니다 :

    그러나, @ 토마스는 절대적으로 옳습니다. 다른 방법이 있습니다 :

    @RequestMapping(value="/controller", method=GET)
    public void foo(HttpServletResponse res) {
        try {       
            PrintWriter out = res.getWriter();
            out.println("Hello, world!");
            out.close();
        } catch (IOException ex) { 
            ...
        }
    }
    

    제 1 방법이 바람직하다. 사용자 정의 컨텐츠 유형으로 응답을 보내거나 2 진 유형 (file, etc ...)을 리턴하려면이 메소드를 사용할 수 있습니다.

  4. ==============================

    4.이것은 나중에이 질문을 찾을 수있는 사람들을위한 메모이지만 콘텐츠 유형을 변경하기 위해 응답을받을 필요가 없습니다. 다음은 그 일을하기위한 예입니다.

    이것은 나중에이 질문을 찾을 수있는 사람들을위한 메모이지만 콘텐츠 유형을 변경하기 위해 응답을받을 필요가 없습니다. 다음은 그 일을하기위한 예입니다.

    @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);
    }
    
  5. ==============================

    5.이건 어떤가요:

    이건 어떤가요:

    PrintWriter out = response.getWriter();
    out.println("THE_STRING_TO_SEND_AS_RESPONSE");
    return null;
    

    이것은 나를 위해 작동합니다.

  6. ==============================

    6.텍스트 / 일반 용도로 문자열 출력 :

    텍스트 / 일반 용도로 문자열 출력 :

    @RequestMapping(value="/foo", method=RequestMethod.GET, produces="text/plain")
    @ResponseBody
    public String foo() {
        return "bar";
    }
    
  7. from https://stackoverflow.com/questions/7672858/return-only-string-message-from-spring-mvc-3-controller by cc-by-sa and MIT license