코드로 배우는 스프링부트 웹 프로젝트

Springboot) GET & POST 방식의 차이점 / 등록 페이지와 등록 처리

HDev 2021. 12. 9. 16:05
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 변수의 값을 이용하여 모달창을 실행한다.