앞에서 설치한 HTTP 웹 서버에 접속하면 어떤 URL로 접속하더라도 "Hello World" 문자열만 출력하고 있는데, http://localhost:8080/index.html로 접속했을 때 webapp 디렉토리의 index.html 파일을 읽어 클라이언트에 응답한다.
(예시) HTTP Header |
GET /index.html HTTP/1.1 Host: localhost:8080 Connection: keep-alive Accept: */* |
HINT 1단계 | · InputStream을 한 줄 단위로 읽기 위해 BufferedReader를 생성한다. -> 구글에서 "java Inputstream bufferedreader"로 검색 후 문제 해결 · BufferedReader.readLine() 메서드를 활용해 라인별로 HTTP 요청 정보를 읽는다. · HTTP 요청 정보 전체를 출력한다. -> 헤더 마지막은 while (!"".equals(line)) {}로 확인 가능하다. -> line이 null 값인 경우에 대한 예외 처리도 해야 한다. 그렇지 않을 경우 무한 루프에 빠진다. (if (line == null) { return; }) |
HINT 2단계 | · HTTP 요청 정보의 첫 번째 라인에서 요청 URL(위 예의 경우 /index.html 이다)을 추출한다. -> String[] tokens = line.split(" ");를 활용해 문자열을 분리할 수 있다. · 구현은 별도의 유틸 클래스를 만들고 단위 테스트를 만들어 진행하면 편하다. |
HINT 3단계 | · 요청 URL에 해당하는 파일을 webapp 디렉토리에서 읽어 전달하면 된다. · 구글에서 "java files readallbytes"로 검색해 파일 데이터를 byte[]로 읽는다. byte[] body = Files.readAllBytes(new File("./webapp" + url).toPath()); |
1단계 요구사항을 해결했는가? 요구사항에 대한 문제만 해결하는 것이 중요하지 않다. 더 중요한 것은 요구사항을 해결하는 과정에서 무엇을 느끼고 학습했는가를 정리하는 것이다. 잠시 쉬는 시간을 가지면서 지금까지의 과정을 통해 새롭게 알게된 내용 또는 용어가 있다면 저장소에 첨부되어 있는 README.md 파일에 작성한다. README.md 파일은 마크다운(markdown) 문법을 따르기 때문에 이번 기회에 연습하는 것도 좋다.
※ 마크다운(markdown) 문법
마크다운은 텍스트 기반의 마크업 언어로 쉽게 쓰고 읽을 수 있으며, HTML로 변환이 가능하다. GitHub에서 사용할 수 있는 마크다운 문법은 https://guides.github.com/features/mastering-markdown/ 에서 참조할 수 있다.
이 단계까지 완료하면 Git 저장소에 변경된 내용을 커밋(commit)한 후 쉬는 시간을 가지면 좋다. 너무 조급하게 접근하기 보다 잠깐 쉬는 시간을 가지면 뇌는 지금까지 학습한 내용을 정리하는 시간을 가진다. 무조건 문제를 빨리 해결한다고 해서 더 많은 것을 학습할 수 있는 것이 아니다. 문제를 해결하는 순간까지 열심히 달렸다면 잠시 쉬는 것도 더 높은 도약을 위해 필요하다.
각 요구사항을 해결한 후 반드시 이 단계를 가질 것을 추천한다. 특히 이 단계에서 Git 저장소에 커밋하는 연습을 병행한다. 복잡한 문제를 작은 단위로 나누고 작업을 완료한 후 Git 저장소에 커밋하는 습관을 키우는 것을 추천한다. 이렇게 커밋까지 끝내고 작업을 완료했다는 느낌을 받은 후 잠시 쉬면서 다음 작업에 대한 계획을 세우고 다시 달려나가는 흐름을 만들어 본다.
요구사항 1번 문제의 난이도가 다른 요구사항에 비해 높다. 따라서 1번 문제부터 막혀 어려움을 겪었다면 4장에서 제공하는 동영상과 책에 있는 소스코드를 참고해 다시 한 번 도전한다. 만약 1번 문제를 해결하고 자신감을 얻었다면 2번 문제부터 혼자 힘으로 도전한다. 그렇게 도전하다 정말 해결하기 힘들면 동영상과 책을 참고해 해결하는 방식으로 진행한다. 포기하지 말고 끝까지 진행할 것을 추천한다. 끝까지 완료했을 때의 성취감을 느껴보면 좋겠다.
참고도서 : https://roadbook.co.kr/169
[신간안내] 자바 웹 프로그래밍 Next Step
● 저자: 박재성 ● 페이지: 480 ● 판형: 사륙배변형(172*225) ● 도수: 1도 ● 정가: 30,000원 ● 발행일: 2016년 9월 19일 ● ISBN: 978-89-97924-24-0 93000 [강컴] [교보] [반디] [알라딘] [예스24] [인터파크] [샘
roadbook.co.kr
'교재 실습 > 자바 웹 프로그래밍 Next Step' 카테고리의 다른 글
3.4.3.3 요구사항 3 - POST 방식으로 회원가입하기 (0) | 2025.02.01 |
---|---|
3.4.3.2 요구사항 2 - GET 방식으로 회원가입하기 (0) | 2025.02.01 |
3.4.3 실습 요구사항 (1) | 2025.01.30 |
3.4.2 실습 환경 세팅 및 소스코드 분석 (1) | 2025.01.29 |
3.4.1 실습 전 사전 학습 및 친구 찾기 (1) | 2025.01.28 |
댓글