@RequestMapping(value = "/bam/ba0030/detailInfo.do", method = RequestMethod.POST)
public ModelAndView insertDetailInfo(@ModelAttribute("vo") BA0030 vo, ModelMap model) throws Exception
@RequestMapping(value = "/bam/ba0030/detailInfo.do", method = RequestMethod.POST)
public ModelAndView insertDetailInfo(@RequestBody BA0030 vo, ModelMap model) throws Exception
POST
@RequestBody
HTTP Body안에 JSON을 VO에 맵핑하는 스프링 어노테이션이다. Body를 자바 객체로 받는다.
HTTP 요청 본문(JSON 및 XML 등)을 Java 오브젝트로 변환하는 것.
Spring에서 제공하는 HttpMessageConverter를 통해 타입에 맞는 객체로 변환.
VO로 받는 법
dataType : text contentType : application/json; charset=UTF-8 data : JSON.stringify(data)
@RequestBody Vo vo
controller에서 json형태의 vo를 받으려면 json문자열 형식으로 변환해야 하기에
JSON.stringify(data)로 파싱해서 보내준다. (자바스크립트 객체를 JSON 문자열로 변환)
@RequestParam
RequestBody는 Data를 넣어서 전달하고, RequestParam는 Parameter를 넣어서 전달한다.
@RequestParam String id 메소드 리턴이 String이면
ajax dataType옵션을 text로 해야하며, dataType옵션을 json으로 하면 아무것도 받지 못한다.
@RequestParam Map으로 값 받기
dataType : text contentType : 생략 @RequestParam Map<String, Object> vo / 데이터를 body에 담아 보낸다.
contentType을 생략하면 default값이 application/x-www-form-urlencoded; charset=UTF-8로 적용된다.
@RequestBody 사용하지 않고 vo 로 받는 법
dataType : "text"
contentType : "application/x-www-form-urlencoded; charset=utf-8"
voName.toString()
@ModelAttribute
클라이언트가 보내는 HTTP 파라미터들을 특정 Java Object에 바인딩(맵핑)하는 것.
/modelattribute?name=req&age=1 같은 Query String 형태 혹은 요청 본문에 삽입되는 Form 형태의 데이터를 처리.
----------------------------------------------------------------------------------------------------------------------------------------------------------
PutMapping, DeleteMapping은 PostMapping과 다르게 @RequestBody형태로 받아야 하며, ajax에서는 json형태로 보내야 한다.
PUT
@RequestBody Vo vo
type : put contentType : application/json data : JSON.stringify(data)
Delete
@RequestBody Vo vo
type : delete contentType : application/json data : JSON.stringify(data)
----------------------------------------------------------------------------------------------------------------------------------------------------------
JAVASCRIPT
ajax에서 JSON.parse()와 JSON.stringify()을 사용해보자.
JSON.parse() 는 String 객체를 json객체로 변환 시키고
JSON.stringify() 는 json객체를 String 객체로 변환 시킨다.
----------------------------------------------------------------------------------------------------------------------------------------------------------
ajax 에서 contentType: 'application/json' 으로 보내면 Map으로
contentType: 'text' 로 보내면 VO로 받습니다.
Controller에서 @RequestParam 은 Map 으로
@RequestBody는 Map 또는 VO로 받을 수 있습니다.
spring 설정(2) controller, dao, service, serviceImpl, vo, mapper, mybatis (0) | 2023.03.30 |
---|---|
JUnit4 Test path 설정 (0) | 2023.03.28 |
Spring Controller 에서 Jsp 값 넘기기 (0) | 2022.11.14 |
Spring 부서목록 (select 만 있음) (0) | 2022.09.13 |
Spring visit 방명록 (0) | 2022.09.13 |