[Spring] Ajax JSON 게시판 만들기 및 댓글 기능 만들기 Stringify(), parse()

. URI 정의

  URI  HTTP메서드  
읽기 /board/read?bno=번호  GET 지정된 번호의 게시물을 보여줌
삭제 /board/remove POST 게시물 삭제
쓰기
/board/write
GET  게시물 작성 화면 보여줌
  /board/write POST 작성한 게시물 저장
수정 /board/modify?bno=번호 GET 게시물 수정하기 위해 읽어옴
  /board/modify  POST
수정된 게시물 저장

 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.” 

 

 

2. log4j

 

1) 개요

- 로그 기능을 제공하는 오픈 소스 라이브러리

- 웹 사이트에 접속한 사용자 정보나 각 클래스의 메서드 호출 시각 등 여러 가지 정보를 로그로 출력해서 관리한다.

- 메이븐에서 프로젝트 생성 시 자동으로 log4j 라이브러리가 설치된다.

 

2) 태그

 

-

- 로그의 출력 위치를 결정 (콘솔, 파일)함

- XXXAppender로 끝나는 클래스들의 이름을 보면 출력 위치를 알 수 있음

- ConsoleAppender : 콘솔에 로그 메시지 출력

- FileAppender : 파일에 로그 메시지를 출력

- Daily Rolling Appender : 설정한 기간 단위로 새 파일을 만들어 로그 메시지를 기록

-

- 어떤 형식으로 출력할지 출력 레이아웃을 결정한다.- PatternLayout 클래스에서 사용되는 출력 속성들

- %p :  debug, info, error, fatal 등의 로그 레벨 이름 출력

- %m : 로그 메시지 출력

- %d : 로깅 이벤트 발생 시각 출력

- %F : 로깅이 발생한 프로그램 파일 이름 출력

- %L : 로깅이 발생한 caller의 라인 수 출력

 

-

- 로깅 메시지를 appender에 전달한다.

- 로그 레벨을 이용해 출력 여부를 조정할 수 있다.

* 여러 가지 로그 레벨들

 

- FATAL : 시스템 차원에서 심각한 문제가 발생해 애플리케이션 작동 불가능한 경우에 해당하는 레벨

- ERROR : 실행 중 문제가 발생한 상태를 나타냄

- WARN : 향후 시스템 오류의 원인이 될 수 있는 경고 메시지를 나타냄.

- INFO : 로그인, 상태 변경과 같은 운영과 관련된 정보 메시지를 나타냄.

- DEBUG : 개발 시 디버깅 용도로 사용한 메시지를 나타냄.

- TRACE : DEBUG 레벨보다 상세한 로깅 정보를 출력하기 위해 도입된 레벨임.



3. JSON

 

1) JavaScript Object Notation

2) 자바스크립트 객체 표기법

3) {속성명 1 : 속성 값 1, 속성명 2 : 속성 값 2}

4) [{속성명 1 : 속성 값 1,... }, {속성명1 : 속성값1, ... },... ]     //객체 배열

5) {키 1 : {속성명 1 : 속성 값 1,... }, 키2 : {속성명1 : 속성값1, ... },... }     //Map

 

 

" 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다." 

 

 

 

 

4. stringify()와 parse()

 

1) JS객체를 서버로 전송하려면, 직렬화(문자열로 변환)가 필요하다.

- JSON.stringify()

- 객체를 JSON 문자열로 변환 (직렬화, JS객체 => 문자열)

 

2) 서버가 보낸 데이터(JSON 문자열)를 객체로 변환 (역직렬화, 문자열 => JS객체)

- JSON.parse()

- JSON 문자열을 객체로 변환 (역직렬화, 문자열 => JS객체)


JSON.Stringify() , JSON.parse()

 

 

 

 

5. JackSON Databind

 

1) 문자열을 자바 객체로 변환해준다.

2) 자바 컨트롤러가 데이터를 받을 수 있다.

 

 

" 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다." 

 

 

6. AjaX

 

1) Asynchronous javascript and XML

2) 요즘은 JSON을 주로 사용한다.

3) 비동기 통신으로 데이터를 주고받기 위한 기술이다.

4) 웹 페이지 전체(data + UI)가 아닌 일부(data)만 업데이트 가능하다.

 

5) jQuery Ajax 사용 형식

$.ajax({
      type: 'post' 또는 'get'
      url: 요청할 URL
      headers :
      dataType : 서버에서 전송받을 데이터타입
      data : 서버로 전송할 데이터
      success : { 정상 요청, 응답 시 처리 }
      error : { 오류 발생 시 처리 }
      complete : { 작업 완료 후 처리 }
})

 

7. REST

 

1) 웹 서비스 디자인 아키텍처 접근 방식

2) 프로토콜에 독립적이며, 주로 HTTP를 이용해서 구현

3) 리소스 중심의 API 디자인

4) HTTP 메서드로 수행할 작업을 정의

 

5) 예  

리소스  POST  GET  PUT  DELETE
/customers 새 고객 만들기 모든 고객 검색 고객 대량업데이트 모든 고객 제거
/customers/1 ERROR  고객1에 대한 세부정보검색 고객1이 있는 경우 세부 정보 업데이트 고객1 정보 제거
/customers/1/order 고객1에 대한 새 주문 만들기 고객1에 대한 모든주문검색 고객1의 주문에 대한 대량 업데이트 고객1 주문 제거

" 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다." 



8. REST API

 

1) REST 규약을 준수하는 API

 

2) 예

작업  URI  HTTP메서드  
읽기  /board/read?bno=번호 GET 지정된 번호의 글을 보여줌
쓰기 /board/write POST 작성한 게시물을 저장
삭제 /board/remove POST 게시물을 삭제
수정 /board/modify POST 수정된 게시물을 저장

" 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

 

 

작업  URI  HTTP메서드  
읽기 /comments GET 모든 댓글을 보여줌
/comments/{cno} GET 지정된 번호의 댓글을 보여줌
쓰기 /comments POST  새로운 댓글을 저장
삭제 /comments/{cno} DELETE  지정된 번호의 댓글을 삭제
수정 /comments/{cno} PUT/PATCH 지정된 번호의 수정된 댓글을 저장

9. 댓글 기능 구현 순서

 

1) DB 테이블 생성

2) Mapper XML 작성

3) DAO 작성 (& 테스트)

4) Service 작성 (& 테스트)

5) 컨트롤러 작성 (& 테스트)

6) 뷰(UI) 작성