기본 콘텐츠로 건너뛰기

[자바 웹 프로그래밍]3장 개발 환경 구축 및 웹 서버 실습 요구사항

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로 결과 값을 저장한다.
  - 각 요청과 응답 헤더는 각 요청과 응답이 포함하고 있는 본문 컨텐츠에 대한 정보를 제공하고 있다.





댓글

이 블로그의 인기 게시물

[자바 웹 프로그래밍]2장 문자열 계산기 구현을 통한 테스트와 리펙토링

이번엔 2장에 나와 있는 내용 정리와 느낀점을 정리 해 보겠다. 1. main() 메소드를 활용한 테스트의 문제점.   - 소스코드 구현 후 정상적으로 동작하는지 확인 위해 일반적인 방법은 main()메소드를 활용하는 것이다.   - 실제 서비스를 담당하는 프로덕션 코드와 이 프로덕션 코드가 정상 동작 하는지 확인을 위한 main() 으로 나뉜다.   - 이 방법의 첫번째 문제점은 프로덕션코드와 main() 메서드가 함께 있다는 것이다.   - 프로덕션 코드와 테스트코드(main)을 분리할 수 있다.   - 두 번째 문제는 내가 구현하고 있는 메서드만 집중 할 수 없고, 클래스가 가지고 있는 모든 메서드를 테스트 할 수 밖에 없다.   - 다른 문제는 항상 콘솔로 확인을 할 수 밖에 없다는 것이다.   - 이를 위해 등장한 라이브러리가 JUnit 이다. 내 관심을 가지는 메서드에 대해 테스트 가능하다. 2. JUnit을 활용해 main() 메서드 문제 극복 2.1 한 번에 메서드 하나에만 집중.   - JUnit관련 라이브러리 추가 후  테스트 메서드에 @Test를 붙이면 된다.   - test 관련 코드 작성 후 Run > Run as> JunitTest를 실행해 보자.   - 각각 테스트 메서드를 독립적으로 실행할 수 있기 때문에 현재 내가 구현하고 있는 프로덕션 코드의 메서드에 집중할 수 있다. import org.junit.Test; public class CalculatorTest { @Test public void add() { Calculator cal = new Calculator(); System.out.println(cal.add(1,2)); } } 2.2 결과 값을 눈이 아닌 프로그램을 통해 자동화 import org.junit.Test; import static org.junit.Assert.assertEquals;

[고량주] 라오왕 연태고량주 플러스

나에게 처음 고량주란 이런것이다 라는걸 알려준 녀석이다. 부모님이 중국집을 하다 보니 가끔 초록색병 고량주를 먹었을때  역한 공업용 알콜 맛에 고량주는 나랑 안맞는다 생각했다가 우연히 양고기에 이녀석을 접한 뒤로 고량주의 맛을 알아버렸다... 제품명 : 라오왕 연태고량주플러스 제품유형 : 일반증류주 도수 : 34.2% 가격 : 9000원(홈플러스 익스프레스 기준) 재구매 의사 : 있다 시음평 : 역시 고량주 특유의 향인데, 열대과일 향도나고, 배향, 살짝 달달한 향이 난다.            목넘김은 34.2%에도 불구하고 그리 힘들지 않았다(주당이 된걸수도..)             중국요리나 양꼬치집에서 맛있는 술이 땡긴다면 강력추천한다.