데이터 수정 과정
1. 수정 페이지 만들고 기존 데이터 불러오기
2. 데이터를 수정해 DB에 반영한 후(@PostMapping(action 속성 링크))
결과를 볼 수 있게 상세 페이지로 리다이렉트(return "redirect~")
1번 과정 (사용자가 내용 수정할 수 있는 상태로 만드는 과정)
1. 상세 페이지에서 edit 페이지 만들고 클릭
2. 요청을 받은 컨트롤러는 해당 글의 id로 DB에서 데이터를 찾아 가져오기
3. 컨트롤러는 가져온 데이터를 뷰에서 사용할 수 있게 모델에 등록하기
4. 모델에 등록된 데이터를 "수정 페이지"에서 보여주기
2번 과정
1. 폼 데이터(수정 요청 데이터)를 DTO에 담아 컨트롤러에서 받기
2. DTO를 엔티티로 변환
3. DB에서 기존 데이터를 수정 데이터로 갱신
4. 수정 데이터를 "상세페이지"로 리다이렉트
편집 페이지 만들기
/articles/{id}에서 show.mustache를 반환하므로 show.mustache에서 수정하기
a태그로 링크이지만, css로 버튼모양으로 만들어줬다.
Edit 요청을 받아 데이터 가져오기
edit 버튼을 누르면 에러가 뜬다. 왜냐? edit 요청을 받을 컨트롤러를 만들지 않았기 때문.
클라이언트와 서버 간 처리 흐름을 크게 4가지 기술로 나누어 보면 아래와 같다.
1. MVC(Model-View-Controller) : 서버 역할을 분담해 처리하는 기법
2. JPA(Java persistence API) : 서버와 DB간 소통에 관여하는 기술
3. SQL(Structured Query Language) : DB 데이터를 관리하는 언어
4. HTTP(HyperText Transfer Protocol) : 데이터를 주고 받기 위한 통신 규약
MVC, JPA, SQL이 유기적으로 동작하는 것은, HTTP의 요청과 응답으로 시작되고 끝난다.
HTTP 메서드
클라이언트와 서버 간에 데이터를 전송할 때는 다양한 통신 규약(*프로토콜)을 따른다.
(* 컴퓨터 간에 원활하게 통신하기 위해 사용하는 전 세계 표준.
기기 간에 각종 신호 처리 방법/오류처리/암호/인증 방식 등 규정하고 있어
이를 따라야만 오류나 지연없이 원활하게 통신 가능)
프로토콜의 종류 (기기와 목적에 따라서)
- FTP(File Transfer Protocol) : 파일 전송을 위한
- SMTP(Simple Mail Transfer Protocol) : 이메일 전송을 위한
- HTTP(HyperText Transfer Protocol) : 웹 서비스에 사용하는
.... 등등 있음.
HTTP는 클라이언트의 다양한 요청을 메서드를 통해 서버로 보내는 역할을 함.
1) POST : 데이터 생성 요청
2) GET : 데이터 조회 요청
3) PATCH(PUT) : 데이터 수정 요청
4) DELETE : 데이터 삭제 요청
CRUD(Create, Read, Update, Delete) : 데이터 관리에서 가장 기본이 되는 동작
: SQL문으로 적용가능, 이 개념이 HTTP의 메서드에도 그대로 적용된다.
데이터 관리 | SQL | HTTP |
데이터 생성(Create) | INSERT | POST |
데이터 조회(Read) | SELECT | GET |
데이터 수정(Update) | UPDATE | PATCH(PUT) |
데이터 삭제(Delete) | DELETE | DELETE |
2번을 수정하려고 edit을 누르고 submit을 누르니 method not allowed란 에러가 뜬다.
더미 데이터 (dummy data) : 서버를 껐다 켤 때마다 매번 데이터를 입력하는게 번거러워 더미 데이터 자동 생성하게.
: 확장자를 sql로 설정한다.
이렇게 설정하면 article 테이블에 id, title, content에 VALUES로 지정한 데이터를 삽입하겠다는 뜻.
(서버를 껐다 켤때마다 데이터 3개가 자동으로 삽입된다.)
form 태그는 옛날에 만들어진 태그이므로, GET과 POST밖에 사용을 못 한다.
이렇게 작성하면 수정 폼으로 title, content과 hidden 속성인 id를 서버에 전송할 수 있게 된다.
하지만, 수정하고 submit을 눌렀을 때, 에러 메시지의 /articles/update로 이동하므로, 수정한 내용이 적용된 사이트로 이동시켜주기 위해서 redirect를 사용한다.
// SQL로 데이터 수정하기 명령문 형식
UPDATE 테이블명 SET 속성명=변경할_값 WHERE 조건;
// 모든 데이터를 동일하게 바꾸고 싶을 때.
UPDATE 테이블명 SET 속성명=변경할_값;
// 특정 데이터만 바꾸고 싶을 때, WHERE로 조건 지정
UPDATE 테이블명 SET 속성명=변경할_값 WHERE 조건;
코딩 자율학습 스프링 부트 3 자바 백엔드 개발 입문
만들면서 배우는 친절한 백엔드 개발 자습서
www.gilbut.co.kr
'Backend > Spring' 카테고리의 다른 글
[Spring] CRUD와 SQL 쿼리 종합 (3) | 2023.08.27 |
---|---|
[Spring] 게시글 삭제하기 : Delete (0) | 2023.08.27 |
[Spring] 게시판 내 페이지 이동하기 (링크와 리다이렉트) (1) | 2023.08.21 |
[Spring] 게시물 읽기 (Read)* (1) | 2023.08.21 |
[Spring] 어노테이션 정리.zip (ing~) (0) | 2023.08.19 |