@ResponseBody(서버 → 클라), ( 주로 비동기 )

메서드의 반환값을 HTTP 응답의 body에 직접 작성하도록 하는것

더 자세히 설명하면 메소드 파라미터가 Web Request Body에 명시한 데이터를 통해 bind 되는것을 나타내는 어노테이션이다 (@Valid 를 통해 자동 유효성검사 가능)

비동기 - ajax에 대한 요청을 json 데이터로 반환할때 사용

동기 - 사용은 가능하나 동기방식일땐 주로 HTML 페이지를 반환하는 뷰 렌더링 방식이 일반적으로 사용하기에 많이 쓰이진 않는다

 

@ResponseBody
@RequestMapping(value = "/ajaxTest.do")
public UserVO ajaxTest() throws Exception {

  UserVO userVO = new UserVO();
  userVO.setId("테스트");

  return userVO;
}

 

 

 

@RequestBody(서버 ← 클라), ( 비동기에서 주로 사용 )

클라이언트한테 받은 http Body를 자바객체 (Entity)로 변환해서 메서드 파라미터로 바인딩할때사용

클라이언트가 서버에 데이터를 전송할때 서버는 해당 데이터를 처리하기 위해 객체로의 형 변환이 필요한데 이를 담당하는것 (Message Converter가 변환해줌)

만약 Http의 Content Type을 지정해주지 않으면 415 에러가 나타난다

동기 - 주로 form 데이터나 쿼리 파라미터를 사용하는 동기방식에선 덜 사용됨

비동기 - 자주 사용(ajax로 JSON 데이터를 요청 본문에 담아 전송할때)

@RequestMapping(value = "/ajaxTest.do")
public String ajaxTest(@RequestBody UserVO getUserVO) throws Exception {

  System.out.println(getUserVO.getId());

  return "test/login.tiles";
}

 

 

쿼리스트링 → ?category=books&sort=price_asc&page=2

쿼리 파라미터 - 쿼리 스트링 내부에서 개별적인 데이터를 나타내는 키-값 쌍으로 여러 파라미터는 &로 구분된다

category=books (키 - category, 값 - books)

sort=price_asc (키 - sort, 값 - price_asc)

 

 

@RequesetParam ( 서버 → 클라 ) , ( 동기방식 )

ajax의 경우 보통 json 형태의 데이터를 요청본문에 담아서 사용하는데 어차피 여기에 데이터가 있기때문에 비동기에선 잘 안쓴다.

@RestController

class 최상단에 붙이는 어노테이션으로 리턴값에 자동으로 @ResponseBody가 붙게된다.

자바 객체를 할당하면 알아서 json 형식으로 매핑해서 응답한다.

 

@PathVariable ( 서버 ← 클라 )

URL 경로(Path)에 있는 변수값을 매개변수에 바인딩할때 사용 name=test?id=hello 일때 (@PathVariable String name, @PathVariable String id) 이런 형태로 사용

@GetMapping("/users/{name}/{id}")
public String getUser(@PathVariable String name, @PathVariable String id) {
    // 로직 처리
}

비동기 (AJAX) - RequestBody, ResponseBody를 주로사용

동기 - ResponseBody, RequestParam을 사용

+ Recent posts