오늘부터 본격적인 스프링 수업 첫 날이다.
동시에 곧 다가올 파이널 프로젝트도 멀지 않았다는 의미다.
앞서 진행했던 세미프로젝트는 2일전에 최종으로 마무리되었다. 기억이 흐릿해 지기 전에 느꼈던 점을 작성해보려고 한다.
진부한 말일 수도 있겠지만 정말 많이 성장했다.
조장님의 개인적인 사정으로 인한 수강포기 직후, 사다리타기 결과 내가 조장이 되었다. 나는 수동적인 성격이다. 하지만 막상 조장이 되니까 자리가 사람을 만든다는 말이 몸소 체감됐다. 완벽하고 뛰어난 리더십을 발휘한 조장은 아니었지만, 갑자기 생겨버린 책임감을 피하지 않았다. 회의를 진행할 때 적극적이였고 팀원들의 의견을 모두 수용한 후 효율적인 계획과 대책들을 세웠다고 생각한다. 적극적으로 임해준 팀원들 덕분에 불화가 생기거나 구현단계에서 작업이 더뎌지는 일이 없었다.
실력면에서도 많이 성장했다. 몰랐는데 난 끈질긴 사람이였다.
막히는 부분이 있으면 정말 많은 시도를 했다. 찾아보고 또 찾아보고 여러 경우의 수를 다 따져봤다. 실패했던 코드와 새로 작성하는 코드를 섞어가면서, 따옴표와 쉼표를 하나 하나 바꿔가면서 막혔던 부분을 해결해 나갔다.
그래서 구현이 됐을땐 '왜 되는거지?' 라는 생각이 들지 않았다.
수업시간에 Controller-Service-Dao로 이어지는 MVC2 패턴을 통해 얻어온 결과값을 보내줘야하는 jsp 페이지로 forward 하는것은 배웠고, 복습하면서 어느정도 익혔다고 생각했다.
하지만 배운것을 응용하여 구현해야 하는 기능은 많이 생소했다.
내가 맡은 기능은 크게 좋아요, 탭메뉴, 정렬 기능이였다.
적고 나니 Ajax가 안 들어간 기능이 없구나..
Ajax로 Controller를 호출해서 DB에서 데이터를 받아와야 했다.
그게 가능해? 라고 생각했는데, 의외로 하고보니 간단했다.
url을 Controller로 지정해주기만 하면 되는 것이였다.
그뒤는 service-dao로 연결되어 DB에서 데이터를 받은 후, 동적으로 보여줄 jsp에 포워드만 해주면 끝!
지금이야 간단하게 해결한 것처럼 보이지만, 당시에는 정말 많이 헤맸다.
Ajax로 호출하는 페이지가 한번으로 끝나면 꽤 간단하지만, 호출된 페이지 안에서 다시 Ajax로 다른 페이지를 불러와야하는......다중 Ajax는 아직 많이 헷갈린다.
가장 어려웠던 기능은 탭메뉴 중 하나인 '객실정보' 였다. 등록된 객실 수마다 생성되는 예약버튼이 달라져서 동적으로 생성되는 버튼들은 클릭되지 않는것 부터가 시작이였다. 버튼 클릭 시 예약페이지로 보내져야 하는 데이터들도 많았고, 체크인/체크아웃 날짜 설정을 하는 API값도 동시에 버튼 하나로 보내야 한다는 것에서 멘붕이 왔었다.
체크인/체크아웃 값은 Ajax get방식으로, 나머지 데이터들은 예약버튼을 클릭했을 때 get방식으로 하나의 url로 보내자니 값이 각각 따로 따로 전송됐다. 3일동안 실패를 거듭하면서 여러 시도해봤고 의외로 해결법은 복잡하지 않았다.
<input type="hidden">과 <form> 태그를 써서 for문으로 구현되어있는 jsp 페이지를 전체로 감쌌다. 체크인/체크아웃 부분은 jQuery로 선택된 날짜들을 value값에 채워준 후에 전송했다. 결과는 성공! input type="hidden"은 에러 해결과정 중에 처음으로 알게된 태그인데, 파이널 프로젝트 때도 유용하게 쓰일 것 같다.
기획부터 설계, 구현까지 온전히 협업으로 이루어져야 하는 상황은 처음이라서 서투른 점이 많았다.
이 회고를 작성하면서(회고라고 할 수 있나..?) 기록의 소중함을 다시한번 깨닫게 된다. 동시에 놓쳤던 부분들이 다시한번 아쉽게 다가왔다.
이 기록이 파이널 프로젝트때 밑거름이 되길 바라며 회고를 마친다.
파이널 프로젝트 시작 전인 지금의 나와, 마친 후의 나는 또 얼마나 달라져 있을까?