GET방식과 POST방식의 차이
👉 GET 방식 : 어떠한 정보를 가져와서 조회하기 위해 사용되는 방식
▪ URL에 변수를 포함시켜 요청한다.
▪ 데이터를 header를 포함하여 전송한다.
▪ URL에 데이터가 노출되어 보안에 취약하다.
▪ 캐싱이 가능하다. (캐싱: 한번 접근후, 똑같은 요청을 할 시 빠르게 접근하기 위해 레지스터에 데이터를 저장시키는것)
👉 POST 방식: 데이터를 서버로 제출하여 추가 또는 수정하기 위해서 데이터를 전송하는 방식
▪ URL에 변수에 변수를 노출하지 않고 요청을 한다.
▪ 데이터를 Body에 포함시킨다.
▪ URL에 데이터가 노출되지 않아서 기본 보안이 설정되어 있다.
▪ 전송하는데 길이 제한이 없고 캐싱이 불가능하다.
Spring을 공부하였을때 Get방식 즉, @GetMapping을 사용하여 loginRequest, joinRequest를 사용하였더니 URL에 아이디, 비밀번호 혹은 아이디, 비밀번호, 이름이 노출되는것을 확인하였다. 이것에 대한 해결방안으로 Get방식 (@GetMapping)이 아닌 Post(@PostMapping)방법을 사용하였다.
등록 페이지와 등록 처리
글이 등록된 후에는 위 처럼 모달창이 자동으로 뜨게 한다.
[ Controller ]
GET 방식에서는 화면을 보여주고, POST 방식에서는 처리 후에 목록 페이지로 이동하도록 설계한다.
- RedirectAttributes를 이용하여 한 번만 화면에 'msg'라는 이름의 변수를 사용할 수 있도록 처리한다(msg의 용도는 밑에서 설명)
- addFlashAttribute는 단 한 번만 데이터를 전달하는 용도로 사용한다.
- POST방식에서는 페이지 이동을 해야하기 때문에 위처럼 return을 준 것을 알수있다.
[ Service - interface ]
- Service 인터페이스에서 위와같이 register를 정의한다.
[ Service ]
- 정의한 register를 구현한다.
- DTO를 entity로 바꿔주고 해당 내용을 DB에 저장한다.
- Gno를 리턴하여 컨트롤러에서 "msg"값으로 사용할 수 있게 한다.
[ register.html ]
<form> 태그의 action 속성값을 '/guestbook/register'로 지정하고 POST 방식으로 전송할 수 있도록 처리한다.
[ list.html ]
- 목록 화면에서 위와 같이 모달창을 띄우기 위해 JavaScript를 이용하고 여기서 msg 변수를 사용한다.
- 글의 등록 후에 msg 변수에 새로 생성된 글의 번호가 할당되므로 msg 변수의 값을 이용하여 모달창을 실행한다.
'코드로 배우는 스프링부트 웹 프로젝트' 카테고리의 다른 글
Springboot) 관계형 DB 설계를 통한 Lazy loding/Eager loding 차이 , @ToString ,JPQL을 이용한 join (0) | 2021.12.13 |
---|---|
Springboot) 방명록의 조회,수정,삭제 처리 (0) | 2021.12.09 |
Springboot) 목록 처리 (0) | 2021.12.06 |
Springboot) 서비스 계층과 DTO (0) | 2021.12.02 |
Springboot) 동적 쿼리 처리를 위한 Querydsl 설정과 사용 (0) | 2021.12.02 |