sanhaa
sanha story
sanhaa
전체 방문자
오늘
어제
  • 분류 전체보기 (93)
    • 일상 (3)
    • Programming (42)
      • Back-end Language (32)
      • Front-end Language (8)
      • Database Language (2)
    • Etc. (35)
      • Coding Test (23)
      • Algorithm (7)
      • Data structure (1)
      • IDE (1)
      • Job Preparation (3)
    • Project (3)
    • Engineer Information Proces.. (10)
    • secret space (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 신고받기
  • 백준 2018번
  • 정처기 #DCL #SQL #DB
  • 백준
  • hash #java #프로그래머스 #코딩테세트 #백준
  • 큐
  • 삼발자 #일상
  • 투 포인트 알고리즘
  • JAVA #백준 #구간합
  • 주몽의명령
  • Spring
  • 스택
  • DFS #백준
  • JAVA 구간 합 구하기
  • iterator #
  • 프로그래머스
  • 알고리즘
  • 시간복잡도 #JAVA #코딩테스트
  • 사이드 프로젝트 #여기로모여라 #web socket #실시간 위치공유
  • spring #java #k6 #
  • 코딩테스트
  • Java
  • oEmebed
  • 연속된 자연수의 합 구하기
  • 자바
  • DDL #SQL #DB #정보처리기사 #SQL응용 #MySQL
  • 1253번
  • connection reset by peer
  • 정보처리기사 #정처기 #기출 #2021기출
  • DML #정처기 #시나공 #SQL #MYSQL #SPRING #JAVA

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
sanhaa

sanha story

[Spring] @ResponseBody은  무엇일까?
Programming/Back-end Language

[Spring] @ResponseBody은 무엇일까?

2022. 3. 28. 23:16

 

컨트롤러에서 리턴 값으로 문자를 반환하면 뷰 viewResolver가 화면을 찾아서 처리를 한다. 

 

//testController
@Controller
public class HelloworldController {
    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String hello(Model model) {
        model.addAttribute("hello", "서버에서 보내준 값입니다");
        return "/hello";
    }

 

//hello.html
<!DOCTYPE html>
<html lang="en"  xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>hello.html입니다</h1>
<p>viewResolver가 hello.html을 찾아서 반환</p>
</body>
</html>

controller에서 /매핑을 받아 return값으로 /hello 문자를 반환을 하면 viewResolver가 /hello 화면을 찾아서 처리를 하게 되는데   Controller에서 값을 받고 처리를 할 때 값을 넘겨줘야 하는 상황이 있다. 이때 @ResponsBody를 사용하면 쉽게 처리가 가능하다.

 

@ResponsBody를 사용하면 뷰 리졸버를 사용하지 않고 HTTP의 BODY에 문자 내용을 직접 반환한다. 

 

  • @ResponseBody 를 사용 HTTP의 BODY에 문자 내용을 직접 반환
  • viewResolver 대신에 HttpMessageConverter 가 동작
  • 기본 문자처리: StringHttpMessageConverter
  • 기본 객체처리: MappingJackson2HttpMessageConverter byte 처리 등등 기타 여러 HttpMessageConverter가 기본으로 등록되어 있음
 @GetMapping("/hello-api")
    @ResponseBody
    public Hello helloapi(@RequestParam("name") String name) {
        Hello hello = new Hello();

        hello.setName(name);
        return hello;
    }

        static class Hello{
            private String name;

            public String getName() {
                return name;
            }

            public void setName(String name) {
                this.name = name;
            }
        }

뷰 리졸버를 사용한 코드와 달리 return값이 객체이다. 

 

 

주소에 name= json형식!! 을 넣어주었으며 화면에는 json 형식으로 출력이 됨을 확인할 수 있다. 

 

따라서 Controller가 매핑을 받아 동작할 때 @ResponsBody 어노테이션이 있으면 뷰 리졸버가 아닌 HttpMessageConverter가 처리를 하게 된다. 

 

 

출처 - 스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

 

'Programming > Back-end Language' 카테고리의 다른 글

[Spring] DI 의존성 주입이란 ?  (0) 2022.04.13
[JAVA] AOP란 무엇일까?  (0) 2022.03.28
[Spring]Failed to load resource: the server responded with a status of 404 () 오류 해결 방법  (0) 2022.03.24
[개발환경] Spring boot+React 연동하기  (0) 2022.03.23
[Spring] The import org.springframework.boot.test cannot be resolved 해결 방법  (0) 2022.02.21
    'Programming/Back-end Language' 카테고리의 다른 글
    • [Spring] DI 의존성 주입이란 ?
    • [JAVA] AOP란 무엇일까?
    • [Spring]Failed to load resource: the server responded with a status of 404 () 오류 해결 방법
    • [개발환경] Spring boot+React 연동하기
    sanhaa
    sanhaa
    sanha history book

    티스토리툴바