[SPRING]게시판 만들기
카테고리: SPRING
[22] 게시판 만들기 - URI, JSON, REST API 등Permalink
22.1. URI 정의Permalink
URI | HTTP메서드 | ||
---|---|---|---|
읽기 | /board/read?bno=번호 | GET | 지정된 번호의 게시물을 보여줌 |
삭제 | /board/remove | POST | 게시물 삭제 |
쓰기 | /board/write /board/write |
GET POST |
게시물 작성 화면 보여줌 작성한 게시물 저장 |
수정 | /board/modify?bno=번호 /board/modify |
GET POST |
게시물 수정하기 위해 읽어옴 수정된 게시물 저장 |
22.2. log4jPermalink
- 개요
- 로그 기능을 제공하는 오픈 소스 라이브러리
- 웹 사이트에 접속한 사용자 정보나 각 클래스의 메서드 호출 시각 등 여러가지 정보를 로그로 출력해서 관리한다.
- 메이븐에서 프로젝트 생성 시 자동으로 log4j 라이브러리가 설치된다.
- 태그
<apeender></apeender>
- 로그의 출력 위치를 결정 (콘솔, 파일)함
- XXXAppender로 끝나는 클래스들의 이름을 보면 출력 위치를 알 수 있음
- ConsoleAppender : 콘솔에 로그 메시지 출력
- FileAppender : 파일에 로그 메시지를 출력
- DailyRollingAppender : 설정한 기간 단위로 새 파일을 만들어 로그 메시지를 기록
<layout></layout>
- 어떤 형식으로 출력할지 출력 레이아웃을 결정한다.
- PatternLayout 클래스에서 사용되는 출력 속성들
- %p : debug, info, error, fatal 등 로그 레벨 이름 출력
- %m : 로그 메시지 출력
- %d : 로깅 이벤트 발생 시각 출력
- %F : 로깅이 발생한 프로그램 파일 이름 출력
- %L : 로깅이 발생한 caller의 라인 수 출력
<logger></logger>
- 로깅 메시지를 appender에 전달한다.
- 로그 레벨을 이용해 출력여부를 조정할 수 있다.
- 여러 가지 로그 레벨들
- FATAL : 시스템 차원에서 심각한 문제가 발생해 애플리케이션 작동 불가능한 경우에 해당하는 레벨
- ERROR : 실행 중 문제가 발생한 상태를 나타냄
- WARN : 향후 시스템 오류의 원인이 될 수 있는 경고 메시지를 나타냄.
- INFO : 로그인, 상태 변경과 같은 운영과 관련된 정보 메시지를 나타냄.
- DEBUG : 개발 시 디버깅 용도로 사용한 메시지를 나타냄.
- TRACE : DEBUG 레벨보다 상세한 로깅 정보를 출력하기 위해 도입된 레벨임.
22.3. JSONPermalink
- JavaScript Object Notation
- 자바스크립트 객체 표기법
1) {속성명1 : 속성값1, 속성명2 : 속성값2} 2) [{속성명1 : 속성값1, ... }, {속성명1 : 속성값1, ... }, ... ] //객체배열 3) {키1 : {속성명1 : 속성값1, ... }, 키2 : {속성명1 : 속성값1, ... }, ... } //Map
23.4. stringify()와 parse()Permalink
- JS객체를 서버로 전송하려면, 직렬화(문자열로 변환)가 필요하다.
- JSON.stringify()
- 객체를 JSON 문자열로 변환 (직렬화, JS객체 => 문자열)
- 서버가 보낸 데이터(JSON 문자열)을 객체로 변환 (역직렬화, 문자열 => JS객체)
- JSON.parse()
- JSON 문자열을 객체로 변환 (역직렬화, 문자열 => JS객체)
{name: "codifi", age: 30} '{"name" : "codifi", "age":30}'
------------------------- JSON.stringify() ------------------------------
JS객체 --------------------> String
<--------------------
JSON.parse()
22.5. JackSON DatabindPermalink
- 문자열을 자바객체로 변환해준다.
- 자바 컨트롤러가 데이터를 받을 수 있다.
22.6. AjaXPermalink
- Asynchronous javascript and XML
- 요즘은 JSON을 주로 사용한다.
- 비동기 통신으로 데이터를 주고 받기 위한 기술이다.
- 웹 페이지 전체(data + UI)가 아닌 일부(data)만 업데이트 가능하다.
- jQuery Ajax 사용 형식
$.ajax({ type: 'post' 또는 'get' url: 요청할 URL headers : dataType : 서버에서 전송받을 데이터타입 data : 서버로 전송할 데이터 success : { 정상 요청, 응답 시 처리 } error : { 오류 발생 시 처리 } commplete : { 작업 완료 후 처리 } })
22.7. RESTPermalink
- 웹 서비스 디자인 아키텍쳐 접근 방식
- 프로토콜에 독립적이며, 주로 HTTP를 이용해서 구현
- 리소스 중심의 API 디자인
- HTTP 메서드로 수행할 작업을 정의
- 예
|리소스|POST|GET|PUT|DELETE| |:–:|:–|:–|:–|:–| |/customers|새 고객 만들기|모든 고객 검색|고객대량 업데이트|모든 고객 제거| |/customers/1|ERROR|고객1에 대한 세부정보검색|고객1이 있는 경우 세부 정보 업데이트|고객1 정보 제거| |/customers/1/order|고객1에 대한 새 주문 만들기|고객1에 대한 모든주문검색|고객1의 주문에 대한 대량 업데이트|고객1 주문 제거|
22.8. REST APIPermalink
- REST 규약을 준수하는 API
-
예
작업 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 지정된 번호의 수정된 댓글을 저장
22.9. 댓글 기능 구현 순서Permalink
- DB 테이블 생성
- Mapper XML 작성
- DAO 작성 (& 테스트)
- Service 작성 (& 테스트)
- 컨트롤러 작성 (& 테스트)
- 뷰(UI) 작성
댓글 남기기