# 개요

학원 다니면서 개인 프로젝트로 플래너 개발을 해보기로 했다.

처음에는 타이머로 시작했다가 내가 생각했던 방향이 아닌거 같아서 플래너로 바꿨다.

처음에 타이머로 생각한 이유는 단순히 뽀모도로 타이머(https://chromewebstore.google.com/detail/focus-to-do-%EB%BD%80%EB%AA%A8%EB%8F%84%EB%A1%9C-%ED%83%80%EC%9D%B4%EB%A8%B8-+-%EC%97%85%EB%AC%B4/ngceodoilcgpmkijopinlkmohnfifjfb?pli=1)를 개발하려고 했기 때문인데.. 코드 작성하다보니 타이머가 돌아가는 로직은 프론트에서 간단하게 처리 할 수 있다고 생각했기 때문이다.

원래는 프로젝트 개발진행하면서 블로그도 같이 쓰려고했는데, 개발 중간에서야 작성하게 됐다 ㅎㅎ;

콘솔창에 View를 출력하는 것에서 Web에 출력하는 것으로 변환하는 과정

 


 

# WebServer 구현

책을 참고하며 WebServer를 구현했다. 로그 출력을 System.out.println()등으로 하는 것보다 Log 라이브러리를 사용하는 것이 더 좋다고 해서 Log 라이브러리도 추가하여 사용했다.  

WebServer가 클라이언트 접속을 기다리다가 연결이 되면 Thread를 상속받은 RequestHandler가 실행되는데, RequestHandler는 클라이언트에서 보낸 요청을 받고 요청에 맞는 응답을 보내는 역할을 한다.

RequestHandler에서 요청을 받는 부분은 HttpRequest가 담당하고 응답을 보내는 부분은 HttpResponse가 담당한다.

HttpRequest는 클라이언트가 보낸 요청을 처리하는데, 요청의 첫 라인인 request line을 RequestLine통해 method(GET, POST 등..), path, parameter를 추출하고 header와 request body를 key-value로 추출한다.

HttpResponse는 html을 구성하여 클라이언트로 응답을 보낸다.

 

temp commit · JinHoooooou/MiniTimer@b18b1a2

JinHoooooou committed Feb 8, 2024

github.com

 


 

# Path 추가에 따른 Controller와 RequestMapping 추가

각 기능이 추가 될 때마다 Path들도 추가가 되는데 그에 따라 RequestHandler에서 Path를 확인하는 if 조건문이 늘어난다. 그래서 Controller 인터페이스를 추가하고 각 기능들은 Controller를 구현하는 클래스들을 만들어 주었다. 그리고 그 기능들의 Path 매핑을 RequestMapping에 추가했다.

기존에 각 Path에 대한 Html 파일을 작성하는 부분도 HttpResponse에 작성했는데, 각 기능 Controller 클래스에 작성하는 것으로 변경했다.

 

Modify to Web and project restructure · JinHoooooou/MiniTimer@3d53313

JinHoooooou committed Feb 10, 2024

github.com

각 Controller마다 공통된 부분이 있어 AbstractController에 공통 기능을 추가했다.

 

Refactor: Use AbstractController · JinHoooooou/MiniTimer@da223f5

JinHoooooou committed Feb 12, 2024

github.com

Web으로 변환했으므로 기존 Console에 출력하던 View들은 전부 삭제했다.

 

erase command line view · JinHoooooou/MiniTimer@12b6616

JinHoooooou committed Feb 12, 2024

github.com

 


 

# 간단 회고

Modify to Web and project structure 커밋을 Modify console view to web view / Modify project structure 두 부분으로 나눴어야 했다. 지금 한참 지난 커밋을 보는 것인데... 엄청 헷갈린다... 매번 작성글 회고에서 커밋 단위가 큰 것을 체감하고 있다 ㅜㅜ

Web view로 변환하고 나니까 삭제한 console view 관련 코드들이 아깝게 느껴졌다. 특히 테스트코드 작성한게 엄청 아까웠는데 화면 구성같은 코드들은 테스트 코드를 작성하는 것보다 직접 확인하는게 낫겠다는 생각이 들었다.

+ Recent posts