항해99/개발일지

20220128 개발일지

paran21 2022. 1. 29. 13:44

주특기 2주차가 시작되었다.

이번 주의 개인과제는 첫주와 유사한 게시판이지만 여기에 로그인 등 Spring security 기능을 추가하는 것이었다.

심화 2주차 강의 중 소셜로그인(카카오로그인) 구현 전까지 강의를 들으면서 개인 과제의 로그인 기능을 먼저 구현했다.

그리고 주특기 1주차에 작업한 내용을 바탕으로 기본 페이지를 구현하였다.

이번에는 개인과제 샘플이 있어서 어떤 식으로 구현해야할 지 방향 잡기가 쉬웠다.

 

개인과제에서 구현해야 할 기능들과 조건이 많아서 쉽지 않아보인다.

크게 고민되는 부분은 다음과 같다.

 

1. 페이지 구현방식 : 타임리프? json?

먼저 고민했던 부분은 페이지 구현방식이었다.

타임리프를 쓸 것인지가 가장 고민이 되는 부분이었다.

심화강의에서는 페이지 이동은 타임리프를 사용하여 template에 있는 html파일로 return되게 하였고, 세부 기능들의 경우에는 json만 보내기도 하고, 타임리프 문법을 사용한 것도 있었다.

 

우선 로그인은 심화강의 코드를 거의 그대로 가져오면서,

페이지 이동은 타임리프로

기능은 html에서 form action을 사용하였다.

 

기본페이지를 전체 게시물 조회 페이지(/board)로 호출하는 부분은 별도의 controller를 만들어서 타임리프로 html값을 return하였다.

 

2. 로그인 여부에 따라 보이는 화면을 다르게 구현하기

로그인을 하기 전에는 회원가입/로그인 버튼이 보이고

로그인을 한 후에는 로그아웃/글쓰기 버튼을 보이게 구현해야했다.

각각 페이지를 두 개의 html로 만들어서 로그인 후에는 다른 페이지로 이동하도록 controller에 작성하였다.

다른 화면에서도 차이가 있는데 이렇게 항상 별도의 html을 만들어야 하는지, 다른 방법은 없는지 더 찾아봐야 할 것 같다.

 

3. controller 구성

전체 게시글을 조회하는 GETMapping의 리턴값이 BoardList인데 해당 controller를 @Controller로 하니 undefied?가 무한대로 페이지에 출력되는 현상이 있었다. @RestController로 바꾸니 등록된 게시물만 조회가 되었다.

Controller를 어떻게 구성할지, @Controller를 쓸지 @RestController를 쓸지, 다른 기능들을 추가하면서 계속 확인해야 할 것같다.