Spring - REST 방식과 AJAX를 이용하는 댓글 처리

Luna·2023년 3월 21일
0

EZEN

목록 보기
40/40

Ajax

Ajax를 사용하는 이유

  • 서버에 HTTP에 HTML 대한 요청을 하지 않는다. - 웹브라우저와 상관이 없다.
  • 그래서 모바일 쪽에 개발한 앱을 통해 만들어진 화면에 데이터를 표시하는 용도로 사용한다.
  • XML(안드로이드)이나 JSON 데이터를 보통 사용한다.
  • XML은 find 함수를 이용한 태그, JSON은 key:value

Ajax 배우기 : jQuery - AJAX load() Method


Part4 - REST 방식과 AJAX를 이용하는 댓글 처리

chapter 16 - REST 방식으로 전환

AJAX는 Java쪽에서 하는것이고 REST는 서버쪽에서 하는 것

동기 URL - /board/view.do?no=~
+ 댓글 등록과 수정에 사용하는 폼
+ 댓글 리스트 공간
+ 비동기 URL
- /reply/list.do : get 방식 - 동기 URL 처리 후 바로 동작, 댓글 등록 / 수정 /삭제 되면 바로 동작
- /reply/write.do : post 방식 - 댓글 등록 처리
- /reply/updat.do : post 방식 - 댓글 수정 처리
- /reply/delete.do : delete 방식 - 댓글 삭제 처리

REST 컨트롤러는 특별한 라이브러리가 필요하지는 않다.
Spring 4 버전 이상이면 사용 가능 하다.

16.2.1 단순 문자열 반환

@GetMapping(value =  "/getText", produces = "text/plain; charset=UTF-8")
public String getText() {
	log.info("MIME TYPE: " + MediaType.TEXT_PLAIN_VALUE);
	return "안녕하세요";
}

16.2.2 객체의 반환

@GetMapping(value = "/getVO",
		produces = {MediaType.APPLICATION_JSON_UTF8_VALUE, 
					MediaType.APPLICATION_XML_VALUE})
public BoardVO getVO() {
	BoardVO vo = new BoardVO();
	vo.setNo(10);
	vo.setTitle("제목입니다.");
	return vo;
}

16.2.3 컬렉션 타입의 객체 변환

  • List
@GetMapping(value = "/getList",
		produces = {MediaType.APPLICATION_JSON_UTF8_VALUE, 
					MediaType.APPLICATION_XML_VALUE})
public List<BoardVO> getList() {
	List<BoardVO> list = new ArrayList<BoardVO>();	
	
	BoardVO vo = new BoardVO();
	vo.setNo(10);
	vo.setTitle("제목입니다.");
	list.add(vo);
	
	BoardVO vo2 = new BoardVO();
	vo2.setNo(11);
	vo2.setTitle("제목입니다1.");
	list.add(vo2);
	
	return list;
}
  • Map
@GetMapping(value = "/getMap",
		produces = {MediaType.APPLICATION_JSON_UTF8_VALUE, 
				MediaType.APPLICATION_XML_VALUE})
public Map<String, Object> getMap() {
	List<BoardVO> list = new ArrayList<BoardVO>();	
	
	BoardVO vo = new BoardVO();
	vo.setNo(10);
	vo.setTitle("제목입니다.");
	list.add(vo);
	
	BoardVO vo2 = new BoardVO();
	vo2.setNo(11);
	vo2.setTitle("제목입니다1.");
	list.add(vo2);
	
	PageObject pageObject = new PageObject();
	
	// list와 pageObject를 동시에 넘긴다.
	// 자바는 return을 한개만 할 수 있기 때문에 Map을 쓴다.
	// 1. 맵 생성
	Map<String, Object> map = new HashMap<String, Object>();
	
	// 2. 생성한 Map에 list와 pageObject를 담는다.
	map.put("list", list);
	map.put("pageObject", pageObject);
	
	// 3. map을 리턴
	return map;
}

16.2.4 ResponseEntity 타입

@GetMapping(value = "/check", params = { "height", "weight" })
public ResponseEntity<BoardVO> check(Double height, Double weight){
	
	log.info("height : " + height + ", weight : " + weight);
	
	ResponseEntity<BoardVO> result = null;
	
	BoardVO vo = new BoardVO();
	vo.setNo(10);
	vo.setTitle("제목입니다.");
	
	if(height < 150) {
		result = ResponseEntity.status(HttpStatus.BAD_GATEWAY).body(vo);
	} else {
		result = new ResponseEntity<BoardVO>(vo, HttpStatus.OK);
	}
	
	return result;
}

16.5 다양한 전송 방식

작업 - 전송방식
Create 등록 - POST
Read 조회 - GET
Update 수정 - PUT
Delete 삭제 - DELETE

실습

spring0320 - 게시판 리스트, 보기, 등록, 수정 삭제 완성
ex03 - 게시판 리스트,보기,등록,수정,삭제 완성 된 것에 댓글 추가

0개의 댓글