본문 바로가기
Dev/Spring

[Spring] @ResponseBody @RequestBody

by 수목원 2021. 8. 19.

@Controller 이용하여 생성된 컨트롤로 메소드는 ViewResolver로부터 return 값으로 반환하는 문자열 이름의 view 페이지를 출력

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 SomeController { 
    @RequestMapping(value = "/someURL", method = RequestMethod.GET)
    public String someURL(){
        return "someView";//viewResolver에 세팅에 따라 someView.jsp출력
    }
}

그럼 view없이 일반적인 Text(String)을 브라우저로 바로 출력하고 싶다면 기존 서블릿의 PrintWriter를 이용하여 출력

package com.some
 
import java.io.IOException;
import java.io.PrintWriter;
 
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
 
@WebServlet("/some")
public class SomeClass extends HttpServlet {
 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        PrintWriter ptr = response.getWriter();
        int p1 = Integer.parseInt(request.getParameter("param1")); //전송된 'param1' 값
        ptr.print("Hello~"+p1);
    }
 
}

@ResponseBody이용하면 브라우저로 쉽게 출력 가능

@Controller 
public class SomeController { 
    @RequestMapping(value = "/someURL", method = RequestMethod.GET)
    @ResponceBody
    public String someURL(){
        return "Hello~";
    }
}

@RequestBody는 클라이언트가 전송하는 Json(application/json) 형태의 HTTP Body 내용을 Java Object로 변환하며 Body가 존재하지 않는 Get 메소드에 @RequestBody이용시 에러 발생

@RequestBody로 받는 데이터는 Spring에서 관리하는 MessageConverter들 중 하나인  appingJackson2HttpMessageConverte를 통해 Java 객체로 변환

 

'Dev > Spring' 카테고리의 다른 글

SQL EXPLAIN: 쿼리 성능 분석의 핵심  (0) 2025.07.15
[Spring] DispatcherServlet과 web.xml 설정  (0) 2021.08.17
[Spring] 어노테이션 정리  (1) 2021.08.17
[Spring] 스케쥴드 @Scheduled  (2) 2021.08.14