회고
[커널아카데미] 백엔드 12기 9주차 - 회고
recordari
2025. 5. 23. 18:46
이번주에 배운 Spring
1. Base64 인코딩과 URL 인코딩 차이
- Base64 인코딩
- 바이너리 데이터를 텍스트로 변환하는 방식
- 예) 이미지, 파일 데이터를 문자열로 표현할 때 사용
- URL 인코딩
- URL에 사용할 수 없는 문자(공백, 특수문자 등)를 안전하게 변환하는 방식
- 예) 한글, 공백 등을 % 기호와 16진수로 변환
2. 관심사의 분리(Separation of Concerns)
- MVC 패턴이 등장한 이유
→ 관심사를 분리하여 코드 유지보수와 확장성을 높이기 위해
3. 서블릿과 JSP 이해
- JSP는 결국 서블릿으로 변환되어 실행됨
- JSP 내에 기본 객체들이 있어서 직접 생성하지 않아도 사용 가능 (request, response, session 등)
4. JSP/서블릿의 스코프(Scope)
스코프(Scope)
application | 웹 애플리케이션 전체 | 전역 데이터 저장, 서버 재시작 전까지 유지 |
session | 사용자 한 명 당 1개 | 사용자별 데이터 저장, 서버 부담 큼 (가능한 적게 사용) |
request | 한 번의 요청 당 1개 | 요청 처리 시에만 존재, 빠르게 사라짐 |
page | JSP 페이지 내 한정 | 가장 짧은 생명주기 |
- 서버 부담이 가장 큰 것은 session
- 편리하지만 서버 메모리 부담 때문에 저장 용량과 시간에 주의 필요
- 요청 별로 데이터가 필요하면 request에 저장하는 것이 좋음
5. URL 패턴 매핑과 서블릿
- 서블릿은 클래스 단위로 URL과 매핑된다.
- 스프링 MVC에서
- @Controller가 붙은 클래스가 하나의 URL 경로 세그먼트 담당
- 클래스 내 메서드에 @RequestMapping을 붙여 더 구체적인 경로를 처리
- 서블릿 = 클래스 단위로 URL과 연결
- @Controller가 붙은 클래스는 서블릿처럼 동작하고, 해당 클래스는 하나의 URL 경로 세그먼트를 담당. 예: /ch2
- 요청 URL의 나머지 경로는 메서드 단위로 연결됨.
- @RequestMapping("/yoil") 같은 애너테이션으로, 클래스 내의 각 메서드가 더 구체적인 URL 경로를 처리
- 따라서 클래스와 메서드의 조합이 하나의 완전한 URL을 구성하게 됩니다.
- 예: @RequestMapping("/ch2") + @RequestMapping("/yoil") → /ch2/yoil
6. 정적 리소스와 동적 리소스 구분
- 정적 리소스: 이미지, 텍스트, CSS, JS 파일 등
→ 별도 메서드 호출 없이 바로 전달 - 동적 리소스: 프로그램 실행 결과, 스트리밍 등
→ 서버 내 메서드 호출 필요
7. JSP에서 <% %> 대신 JSTL 사용
- JSP 내 <% %> 태그 사용은 유지보수 어렵고 복잡해서
- JSTL <c:xxx> 태그 라이브러리를 사용해 표현식과 제어문을 대체
8. 필터(Filter)와 인터셉터(Interceptor)
- 필터: 서블릿 실행 전후에 동작, 전처리/후처리 담당
- 예) 로깅, 권한 검사, 문자 인코딩 처리
- 인터셉터: 스프링에서 제공하는 필터 대체 기능
- 메서드 호출 전, 후로 세분화 가능 (before, after)
- 관심사 분리가 필터보다 명확함
9. Redirect와 Forward의 차이
Redirect
- 클라이언트가 서버에 요청
- 서버가 302 응답 코드와 함께 Location 헤더에 새 URL을 보냄
- 브라우저가 자동으로 새 URL로 재요청
- 서버가 재요청을 처리하고 최종 응답
- 요청 횟수: 2번
- 1번: 사용자가 보낸 수동 요청
- 2번: 브라우저가 Location 보고 보낸 자동 요청
- 응답 횟수: 2번
- 1번: 302 리다이렉트 응답
- 2번: 최종 컨텐츠 응답
- URL 변경: O (브라우저 주소창에 새 URL 표시됨)
- 주로 사용: 잘못된 요청 처리, POST 후 새로고침 방지, URL 변경 필요할 때
Forward
- 클라이언트가 서버에 요청
- 서버 내부에서 다른 컴포넌트로 요청을 전달
- 해당 컴포넌트가 요청을 처리하고 응답
- 요청 횟수: 1번 (클라이언트는 1번만 요청)
- 응답 횟수: 1번
- URL 변경: X (브라우저 주소는 그대로)
- 주로 사용: 서버 내부 컴포넌트 간 협력 처리, JSP → JSP, 컨트롤러 → JSP 연결
10. 쿠키(Cookie)
- 클라이언트 식별용 신분증 역할
- 한글 등 ASCII 문자가 아닌 문자는 URL 인코딩 필요
- 쿠키가 사라지면 세션 식별 불가능해지고 세션이 끊어짐
11. 세션(Session)
- 여러 Tx(요청+응답)을 하나로 묶는 것
- 서버가 사용자별로 세션 객체 생성
- 세션은 보통 쿠키를 통해 사용자 식별
회고
이번주에 스프링을 공부를 시작하고 실습을 진행하니까 시간이 순식간에 지나간 것 같다. 그래서 주말에 과제를 하면서 스프링과 친해져야 겠다는 생각을 했다. 벌써 2달이라는 시간이 흘렀다니....!! 그리고 정말 2달 동안 모든 내용을 압축해서 배웠다는 생각이 든다. 스프링하면서 계속 복습을 해야지 머리속에 남아있고 아니면 다 흘러넘칠 것 같다... 마치,,, 스택 오버플로우?ㅎㅎ 다음주도 화이팅해야지!