3장에 나온 내용 정리와 책 소개를 정리하였다.
1. 책소개
- 리눅스 커맨드라인 완벽입문서(2013)
- HTTP 완벽 가이드 - 수준이 쌓이면 보자
- HTTP & Network : 그림으로 배우는~ - 그림도 많고 내용도 쉽게 풀어 써있는듯 하다.
2. 웹 서버 실습
- InputStream : 클라이언트에서 서버로 요청을 보낼 때 전달되는 데이터 담당 스트림.
- OutputSTream : 서버에서 클라이언트에 응답을 보낼 때 전달되는 데이터를 담당하는 스트림
- 프로그래밍 중 좋은 습관은 프로그래밍 실행 중 발생하는 로그 메시지를 주의깊게 보는 것이다.
- 정상으로 실행되고 있는지 판단할 수 있다.
- 작성 중 새로 알게된 내용 또는 용어는 README.md 파일에 작성하자. 마크다운 문법을 따름.
- 각 요청마다 클라이언트의 포트는 서로 다른 포트로 연결한다.
- 서버는 각 요청에 대해 순차적으로 실행하는 것이 아니라 동시에 각 요청에 대응하는 스레드를 생성해 동시에 실행한다.
- HTTP 요청에 대해 요청라인, 요청 헤더, 빈 공백 문자열은 필수고, 요청 본문은 필수가 아니다.
- 요청라인 : "HTTP-메소드 URI HTTP-버전".
- 요청 헤더 : <필드이름> : <필드 값> 쌍으로 이뤄졌다.
- 응답 메시지에는 상태라인, 응답헤더, 빈 공백, 응답 본문이 들어있다.
- /user/create?userId=java&name=javaoh 에서 /user/create는 경로, ?뒤는 '쿼리스트링'이라 부른다.
- POST 방식으로 요청을 하면 쿼리 스트링은 HTTP body에 전달 된다. Content-Length라는 필드 이름으로 본문데이터 길이가 전달된다.
- 구한 길이만큼 본문을 읽은 후 본문 데이터를 Map<String, String> 형태로 변환하면 된다.
- 브라우저가 이전 정보를 유지하고 있기 떄문에 새로 고침을 클릭하면 유지하고 있던 요청을 다시 요청하는 방식으로 동작한다.
- 이와 같이 구현할 경우 같은 데이터가 중복으로 전송되는 이슈가 발생한다.
- 이 문제를 해결하는 방법은 /user/create 요청과 첫화면(/index.html)을 보여주는 요청을 분리한 후 HTTP 302 상태코드를 활용해 해결한다.
- 302 상태 코드를 활용해 페이지를 이동할 경우 요청과 응답이 두번 발생한다. 리다이렉트 방식이라한다.
- HTTP는 요청을 보내고 응답을 받으면 클라이언트와 서버간 연결을 끊는다. 이를 HTTP 무상태 프로토콜이라 부른다.
- HTTP는 클라이언트 행위를 기억하기위해 쿠키를 사용한다.
- 로그인 성공 유무에 따라 응답헤더에 Set-Cookie로 결과 값을 저장한다.
- 각 요청과 응답 헤더는 각 요청과 응답이 포함하고 있는 본문 컨텐츠에 대한 정보를 제공하고 있다.
1. 책소개
- 리눅스 커맨드라인 완벽입문서(2013)
- HTTP 완벽 가이드 - 수준이 쌓이면 보자
- HTTP & Network : 그림으로 배우는~ - 그림도 많고 내용도 쉽게 풀어 써있는듯 하다.
2. 웹 서버 실습
- InputStream : 클라이언트에서 서버로 요청을 보낼 때 전달되는 데이터 담당 스트림.
- OutputSTream : 서버에서 클라이언트에 응답을 보낼 때 전달되는 데이터를 담당하는 스트림
- 프로그래밍 중 좋은 습관은 프로그래밍 실행 중 발생하는 로그 메시지를 주의깊게 보는 것이다.
- 정상으로 실행되고 있는지 판단할 수 있다.
- 작성 중 새로 알게된 내용 또는 용어는 README.md 파일에 작성하자. 마크다운 문법을 따름.
- 각 요청마다 클라이언트의 포트는 서로 다른 포트로 연결한다.
- 서버는 각 요청에 대해 순차적으로 실행하는 것이 아니라 동시에 각 요청에 대응하는 스레드를 생성해 동시에 실행한다.
- HTTP 요청에 대해 요청라인, 요청 헤더, 빈 공백 문자열은 필수고, 요청 본문은 필수가 아니다.
- 요청라인 : "HTTP-메소드 URI HTTP-버전".
- 요청 헤더 : <필드이름> : <필드 값> 쌍으로 이뤄졌다.
- 응답 메시지에는 상태라인, 응답헤더, 빈 공백, 응답 본문이 들어있다.
- /user/create?userId=java&name=javaoh 에서 /user/create는 경로, ?뒤는 '쿼리스트링'이라 부른다.
- POST 방식으로 요청을 하면 쿼리 스트링은 HTTP body에 전달 된다. Content-Length라는 필드 이름으로 본문데이터 길이가 전달된다.
- 구한 길이만큼 본문을 읽은 후 본문 데이터를 Map<String, String> 형태로 변환하면 된다.
- 브라우저가 이전 정보를 유지하고 있기 떄문에 새로 고침을 클릭하면 유지하고 있던 요청을 다시 요청하는 방식으로 동작한다.
- 이와 같이 구현할 경우 같은 데이터가 중복으로 전송되는 이슈가 발생한다.
- 이 문제를 해결하는 방법은 /user/create 요청과 첫화면(/index.html)을 보여주는 요청을 분리한 후 HTTP 302 상태코드를 활용해 해결한다.
- 302 상태 코드를 활용해 페이지를 이동할 경우 요청과 응답이 두번 발생한다. 리다이렉트 방식이라한다.
- HTTP는 요청을 보내고 응답을 받으면 클라이언트와 서버간 연결을 끊는다. 이를 HTTP 무상태 프로토콜이라 부른다.
- HTTP는 클라이언트 행위를 기억하기위해 쿠키를 사용한다.
- 로그인 성공 유무에 따라 응답헤더에 Set-Cookie로 결과 값을 저장한다.
- 각 요청과 응답 헤더는 각 요청과 응답이 포함하고 있는 본문 컨텐츠에 대한 정보를 제공하고 있다.
댓글
댓글 쓰기