본문 바로가기

전체 글280

[Spring] 서블릿, JSP, MVC패턴 회원관리 웹 애플리케이션 요구사항회원관리 웹을 만들고자 한다 package hello.servlet.domain.member; import lombok.Getter; import lombok.Setter; @Getter @Setter public class Member { private Long id; private String username; private int age; public Member() { } public Member(String username, int age) { this.username = username; this.age = age;} }회원 정보는 다음과 같다 package hello.servlet... 2025. 4. 7.
[Spring] 서블릿 Hello 서블릿서블릿은 원래 톰캣같은 웹 애플리케이션 서버를 직접 설치하고, 그 위에 서블릿 코드를 클래스 파일로 빌드해서 올린다음 톰캣서버를 실행해야하는데, 스프링부트는 톰캣서버를 내장하고있어서 편리하게 서블릿 코드를 실행할 수 있다. 스프링부트에서 서블릿을 직접 등록해서 사용하려면package hello.servlet; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.web.servlet.ServletComponentScan; @ServletComponentScan //서블릿 .. 2025. 4. 4.
[Spring] 웹 애플리케이션의 이해 웹 서버, 웹 애플리케이션 서버웹은 HTTP 기반으로 통신한다.웹 서버HTTP 기반으로 동작한다.정적인 리소스를 제공한다정적이란? HTML, CSS, JS, 이미지, 영상 등 웹 애플리케이션 서버(WAS - Web Application Server)HTTP 기반으로 동작웹 서버 기능 + 정적 리소스 제공프로그램 코드를 실행해서 애플리케이션 로직을 실행동적이란? 동적 HTML, HTTP API(JSON), 서블릿, JSP, 스프링 MVC 웹 서버는 정적리소스, WAS는 애플리케이션 로직WAS는 애플리케이션 코드를 실행하는데 더 특화되어있다. WAS는 동적, 정적 리소스를 모두 제공 가능하니까 이런식으로 구성할 수 있다.하지만 WAS에 장애가 발생한다면? 사용자는 에러화면조차 보지 못한다.따라서 정적 리소스.. 2025. 3. 30.
[네트워크] HTTP 헤더 - 캐시와 조건부 요청 캐시 기본 동작기본적으로 웹 브라우저가 서버에게 요청을 하면 서버는 해당 정보를 모두 준다.여기서는 1.1M 용량을 클라이언트에게 전송했다. 만약 두번째 요청을 한다면?마찬가지로 서버는 1.1M용량의 별 사진을 보낼 것이다. 이렇게 하면 브라우저 로딩 속도 저하, 비용문제 등등이 발생한다.따라서 캐시 컨트롤을 통해서 캐시를 적용하면 브라우저 캐시에 해당 정보가 저장된다.그러면 사용자가 60초 내에 다시 요청을 하게되면 서버에 요청을 하여 데이터를 얻는 것이 아니라, 브라우저 캐시를 통해서 얻게 된다. 만약 60초가 초과된다면? 다시 서버에 요청을 하게된다.이때 별 사진에 업데이트 된 내용이 없더라도 다시 네트워크 다운로드가 발생한다.  검증 헤더와 조건부 요청만약 2번의 경우라면? 다시 요청해서 모든 정.. 2025. 3. 28.
[네트워크] HTTP 헤더 - 일반헤더 HTTP 헤더 개요 일반적으로 헤더 내 필드의 구성은 이러하다 헤더는 HTTP 전송에 필요한 모든 부가정보를 가지고 있다. 최신스펙에서 메세지는 표현헤더와 표현데이터로 나뉜다.메세지 본문 = 페이로드표현은 요청이나 응답에서 전달할 실제 데이터이다. 표현헤더는 표현 데이터를 해설할 수 있는 정보를 제공한다.(유형, 길이..) 표현Content - Type미디어 타입, 문자 인코딩을 나타낸다. Content - Encoding표현 데이터를 압축하기 위해 사용한다.데이터를 전달하는 곳에서 압축 후 인코딩 헤더를 추가한다.그러면 데이터를 읽는 곳에서 인코딩 헤더의 정보로 압축해제한다. Content-Language표현 데이터의 자연언어를 표현한다.Content-Length표현데이터의 길이바이트 단위로 표현된다... 2025. 3. 28.
[네트워크] HTTP 상태코드 HTTP 상태코드 소개상태코드란? 클라이언트가 보낸 요청의 처리 상태를 응답에서 알려주는 기능이다.이렇게 상태코드의 앞자리 부분에 따라 의미가 달라진다 1XX는 거의 사용되지 않으므로 생략한다. 2xx - 성공200번대는 클라언트의 요청을 성공적으로 처리했음을 의미한다.200 OK요청 성공을 의미한다. 201 created요청 성공해서 새로운 리소스가 생성됨을 나타낸다. 202 Accepted요청이 접수되었으나 처리가 왼료되지는 않음접수시간과 처리 시간의 시간차가 있을 때 주로 사용된다. 204 No Content서버가 요청을 성공적으로 수행했지만, 응답 본문에 보낼 데이터가 없음예를 들어 save를 했을 때 결과로 받을 내용이 아무것도 없다. 3xx - 리다이렉션요청을 완료하기 위해 유저 에이전트의 추.. 2025. 3. 28.