본문 바로가기

전체 글142

[Spring] SLF4J 로깅 간단한 정리 1. 개요 이번 게시물에서는 로그 사용법에 대해서 알아 볼 것이다. 사실 깊이있게 들어가면 공부할 내용들이 많지만, 우선 간단하게 로그를 왜 사용해야 하는지, 실제로 사용하는 방법들 위주로 작성할 예정이다. 2. 로깅 코딩을 하다 보면, 여러 정보를 확인하기 위해서 콘솔에 직접 값을 출력하고 싶을 때가 있다. 이때, System.out.println()와 같이 직접 출력하는 것이 아닌, 로그를 사용해 남기면 다음과 같은 이점이 있다. - 성능이 더 뛰어남 - 상황에 맞춰서 로그를 출력할지 결정할 수 있음 - 로그 기록을 파일 혹은 별도의 위치에 남길 수 있음 Logback, Log4J, Log4J2 등 많은 라이브러리가 있으며, 이를 통합해서 제공하는 것이 SLF4J 라이브러리다. 실제로는 스프링 부트가.. 2023. 5. 24.
[Spring] 서블릿, HttpServletRequest, HttpServletResponse 1. 개요 이번 게시물에서는 실제로 서블릿을 사용해 볼 것이다. 서블릿에 대한 설명은 아래 게시물을 참고해보자. (서블릿에 대한 설명) 2. 서블릿 사용하기 서블릿을 사용하려면 웹 애플리케이션 서버를 직접 설치하고, 서블릿 코드를 클래스 파일로 빌드한 후, 톰캣 서버를 실행해야 한다. 이는 매우 번거럽기 때문에 톰캣 서버를 내장하고 있는 스프링 부트를 사용하면 된다. (사실 이제는 스프링 MVC 패턴을 주로 사용, 서블릿 동작 원리만 확인해 보기 위함이기 때문) - 스브링 부트 서블릿 환경 구성 @ServletComponentScan //서블릿 자동 등록 @SpringBootApplication public class ServletApplication { public static void main(Str.. 2023. 1. 17.
[Spring] 서블릿, 서블릿 컨테이너 1. 개요 이번 게시물에서는 서블릿과 이를 담고 있는 서블릿 컨테이너에 대해 알아볼 것이다. 2. 서블릿 1) 서블릿이 그래서 뭐하는 건데? HTTP 요청과 응답을 처리하기 위해서, 서버에서는 왼쪽에 적힌 모든 처리를 해주어야 한다. 하지만, 저 중에서 의미있는 비즈니스 로직에 해당되는 것은 초록색 네모 만의 부분 뿐이다. 따라서 서블릿은 초록색 네모를 제외한 나머지를 개발자 대신 해줌으로서, 개발자로 하여금 비즈니스 로직에 집중할 수 있도록 해준다. 2) 실제 코드 - urlPatterns(/hello)의 URL이 호출되면, 해당 서블릿 코드가 실행된다. - 파라미터를 보면, HTTP 요청을 관리하는 HttpServletRequest와 HTTP 응답을 관리하는 HttpServletResponse가 있다.. 2023. 1. 16.
웹 서버, 웹 어플리케이션(WAS), 그리고 사용법 1. 개요 이번 게시물에서는 웹 서버, 웹 어플리케이션(WAS), 그리고 어떻게 활용하면 좋은지에 대해 적도록 할 것이다. 2. 웹 서버 웹 서버(Web Server)는 "정적인 상황"에 사용한다고 생각하면 된다. HTTP 기반으로 동작하며, 정적인 리소스를 주로 제공한다.(정적 HTML, CSS, JS, 이미지, 영상..) 기타 부가기능도 있으며 예시로는 NGINX, APACHE가 있다. 3. 웹 애플리케이션 서버 웹 애플리케이션 서버(WAS, Web Application Server)도 마찬가지로 HTTP 기반으로 동작한다. 이는 웹 서버의 기능을 포함함과 동시에, 정적 리소스를 제공 가능하다. 프로그램 코드를 실행해서 애플리케이션 로직 수행이 가능하며, 이로 인해 동적 HTML, HTTP API(J.. 2023. 1. 15.
HTTP 캐시와 조건부 요청, 프록시 캐시 0. 개요 이번 게시물에서는 HTTP 캐시와 조건부 요청, 프록시 캐시에 대해 작성할 것이다. 해당 게시물을 보기 전, 아래 링크의 글을 보고 오는 것을 추천한다. (HTTP란?) 1. 캐시를 사용하지 않을 경우 우선 캐시가 무엇인지, 그리고 왜 사용되는지를 알기 위해서 우선 캐시를 사용하지 않을 경우 어떻게 되는지에 대해 알아보자. - 첫번째 요청 서버에서 star.jpg라는 이미지를 받기 위해 요청하고, 해당 이미지가 담긴 HTTP 메시지를 응답받는다. - 두번째 요청 한번 더 같은 이미지 요청을 하면, 다시 해당 이미지가 담긴 HTTP 메시지를 응답받는다. - 이렇게 데이터가 변경되지 않아도, 클라이언트는 네트워크를 통해서 데이터를 다운로드 받아야한다. -> 인터넷 네트워크는 느리고 비싸며, 브라우.. 2023. 1. 13.
HTTP 쿠키 0. 개요 이번 게시물에서는 HTTP 쿠키에 대해 작성할 것이다. 해당 게시물을 보기 전, 아래 링크의 글을 보고 오는 것을 추천한다. (HTTP란?) 1. 쿠키란? HTTP 쿠키란 서버가 클라이언트의 웹 브라우저에 전송하는 작은 데이터 조각이다. 이 쿠키로 사용자의 로그인 세션 관리, 광고 정보 트래킹 등을 관리하게 된다. 쿠키 정보는 항상 서버에 전송되기 때문에, 최소한의 정보만 사용해야 한다.(세션 id, 인증 토큰, ...) 참고로 보안에 민감한 데이터(주민번호, 신용카드 번호 등)은 저장하면 안된다! 쿠키를 사용하는 이유는 HTTP의 특징중 Stateless와 관련이 있는데, 아래에서 한번 살펴보자. 2. 쿠키 사용 이유 - 쿠키 미사용 - 먼저 클라이언트가 로그인을 하고, 그 후 시작 페이지로.. 2023. 1. 13.
HTTP 헤더 0. 개요 이번 게시물에서는 HTTP 헤더 대해 작성할 것이다. 해당 게시물을 보기 전, 아래 링크의 글을 보고 오는 것을 추천한다. (HTTP란?) 1. HTTP 헤더 HTTP 헤더는 HTTP 전송에 필요한 부가정보를 저장하는 곳이다. 메시지 바디의 내용 및 크기, 압축, 인증, 요청 클라이언트 정보 등등.. 수많은 표준 헤더가 존재한다. 이 게시물에서는 주로 사용하는 HTTP 헤더들에 대해 적어볼 예정이다. 우선 모든 HTTP 헤더의 양식은 아래와 같다. field-name ":" OWS field-value OWS (OWS는 띄어쓰기 허용이라는 뜻) + field-name은 대소문자를 구분하지 않는다. 2. 표현(Representation) HTTP표준이 RFC7230~7235로 변함에 따라, 기존.. 2023. 1. 13.
HTTP 상태코드 0. 개요 이번 게시물에서는 HTTP 상태코드 대해 작성할 것이다. 해당 게시물을 보기 전, 아래 링크의 글을 보고 오는 것을 추천한다. (HTTP란?) 1. 상태코드 HTTP 응답 메시지 중 시작라인 (start-line)에 오는 코드로서, 클라이언트가 보낸 요청의 처리 상태를 알려주는 기능을 뜻한다. 그 종류로는 - 1xx (Informational): 요청이 수신되어 처리중 - 2xx (Successful): 요청 정상 처리 - 3xx (Redirection): 요청을 완료하려면 추가 행동이 필요 - 4xx (Client Error): 클라이언트 오류, 잘못된 문법등으로 서버가 요청을 수행할 수 없는 경우 - 5xx (Server Error): 서버 오류, 서버가 정상 요청을 처리하지 못함 여기서 .. 2023. 1. 12.