8주차 회고록
1) 8주차를 시작하며
8주차는 웹 백엔드 기초를 체계적으로 정리했다. JDBC로 시작해 서블릿과 HTTP 흐름, 세션과 쿠키, 필터와 래퍼, 마지막으로 스프링 IoC 컨테이너까지 학습 범위를 확장했다. 개념을 연결해 동작 흐름을 이해하는 데 집중했다.
또한, 준비하고 있는 공모전 예선에서 다행이 통과하여 드디어 본선 준비를 시작하게 되었다.
2) 학습 요약
2-1) JDBC
- DriverManager로 드라이버 로딩과 커넥션 생성
- Statement는 완성 SQL 실행, PreparedStatement는 파라미터 바인딩과 재사용
- PreparedStatement는 속도와 보안 측면에서 유리
- ResultSet은 커서 기반 순회, 사용한 자원은 반드시 반납
- 설정과 SQL 외부화로 중복 감소 및 유지보수성 향상
2-2) Servlet 기본
- 컨테이너가 서블릿 생명주기를 관리
- init 이후 요청마다 service가 호출되고 doGet 또는 doPost로 분기
- 매핑은 web xml 또는 애노테이션으로 구성
- ServletConfig는 개별 초기값, ServletContext는 전역 초기값 제공
2-3) HTTP 전송과 메서드
- GET은 쿼리스트링 전송, 캐시와 북마크에 유리
- POST는 본문 전송, 한글 처리를 위해 인코딩 지정 필요
- Request는 파라미터와 속성 접근, Response는 콘텐츠 타입과 인코딩 지정
- Forward는 서버 내부 위임, Redirect는 재요청 유도
- 변경 요청 후에는 PRG 패턴으로 중복 처리 방지
2-4) Session과 Cookie
- Cookie는 클라이언트 저장, 설정이 간단하지만 보안 취약
- Session은 서버 저장, 보안 우수하나 서버 자원 사용
- Session 범위는 로그인과 권한에 적합
- 만료 시간은 코드, 앱 설정, 서버 전역 설정 순으로 적용
2-5) Filter와 Wrapper
- Filter는 요청과 응답 전후 공통 로직 적용
- 체인으로 다단계 전처리와 후처리 구성
- Wrapper는 Request와 Response 동작을 메서드 단위로 재정의
- 비밀번호 입력값을 해시로 바꾸는 처리에 Wrapper가 유용
2-6) IoC 컨테이너
- BeanFactory와 ApplicationContext가 빈 생명주기를 관리
- 설정 방식은 XML, 자바 설정, 컴포넌트 스캔으로 구분
- 내 코드 중심은 컴포넌트 스캔, 외부 라이브러리나 팩토리 메서드는 수동 빈 등록이 적합
3) 실습 기록
- POST 본문 인코딩 공통화 필터 적용
- 요청 래퍼로 비밀번호 입력을 해시로 변환하고 검증은 matches 사용
- 변경 요청 후 목록 화면으로 Redirect하여 새로고침 중복 방지
- PreparedStatement로 CRUD 작성 후 ResultSet 자원 정리 루틴 적용
- 스프링 자바 설정으로 컨텍스트 구성, 컴포넌트 스캔과 수동 빈 등록을 병행
4) 문제와 해결
-
GET과 POST 인코딩 처리 위치 혼동
파라미터 접근 전에 인코딩 지정으로 해결
-
Redirect 후 데이터 공유 실패
세션과 쿼리 파라미터로 필요한 값만 전달
-
필터 체인 누락
chain doFilter 호출 위치를 전처리와 후처리 사이로 고정
5) 느낀 점
- 서블릿과 HTTP 흐름을 코드 경로 기준으로 정리하니 요청부터 응답까지의 단계가 명확해졌다.
- 공통 로직은 필터로 분리하는 편이 이후 유지보수와 테스트에 유리하다.
- 세션과 쿠키를 구분해 적용하니 상태 관리가 단순해졌다.
- IoC 컨테이너를 사용하니 객체 생명주기와 의존성 연결이 일관되게 관리된다.
- 예습으로 들었던 김영한 스프링 기본 강의가 도움이 많이 되었던 것 같다.
6) 다음 주 계획
- 김영한 스프링 MVC 강의 마저 듣기
- 새로 시작되는 벡엔드 조원들과 팀합 맞추기
- 피우다 프로젝트 개발 착수 준비와 모듈 구조 정의
이제 다음주 수업부턴 긴 추석 연휴가 끝나고 새로 벡엔드 프로젝트가 본격적으로 시동이 걸리는 주이기 때문에 많이 바빠질 것 같다.
특히, 현재 준비 중인 공모전인 피우다 프로젝트 본선 준비와 병행해야 되기 때문에 계속 정신 없는 날이 될 것 같아서 두렵기도 하다.
새롭게 정해지는 팀원들과도 합이 잘 맞아서, 무사히 벡엔드 프로젝트까지 끝났으면 하는 바램이다.