memostack
article thumbnail
블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.tistory.com/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
반응형

보통은 @Controller 어노테이션을 이용하여 Controller를 생성했을때, (ViewResolver에 의해) return 값으로 반환하는 문자열 이름의 view 페이지를 띄어준다. (아래 예시 코드 참고)

더보기

HelloCotroller.java

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

@Controller
public class HelloController {

    @RequestMapping(value = "/helloworld", method = RequestMethod.GET)
    public String helloWorld() {
        return "helloworld";
    }

}

 

context.xml (View Resolver 설정)

...
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"></property>
    <property name="suffix" value=".jsp" />
</bean>
...

 

만약, View 페이지가 아닌 반환값 그대로 클라이언트한테 return 하고 싶은 경우 @ResponseBody를 사용하면 된다.

 

@ResponseBody

만약 @ResponseBody를 사용하지 않고 아래와 같이 코드를 작성하면, helloworld.jsp 라는 찾는다.

하지만, helloworld.jsp를 생성하지 않았기 때문에, view 페이지를 찾지 못해서 아래와 같이 500 Internal Server Error 가 발생한다.

500 Internal Server Error

 

view 페이지가 아닌 helloworld 라는 문자열을 그대로 반환하고 싶다면, 해당 메소드 위에 @ResponseBody를 추가한다.

@ResponseBody
@RequestMapping(value = "/helloworld", method = RequestMethod.GET)
public String helloWorld() {
    return "helloworld";
}

 

그리고 다시 확인해보면, 아래와 같이 return 값 그래도 Client한테 반환한다.

데이터 반환

 

문자열이 아닌 VO 객체를 반환해도 된다. 객체를 반환하게 되면, json 형태로 반환한다.

json 형태로 반환

 

 

다른 방법으로도 위와같이 API를 만들 수 있다. (아래 글 참고)

 

https://memostack.tistory.com/244

 

@RestController 를 이용하여 REST API 개발

@Controller 어노테이션을 이용하면 기본적으로 view 페이지를 찾아서 띄어주는 역할을 한다. 하지만 REST API 를 개발해야하는 상황이라면 각 메소드마다 @ResponseBody 를 붙여서 데이터를 그대로 반환

memostack.tistory.com

 

반응형
블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.tistory.com/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
profile

memostack

@bluemiv_mm

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!