교재 실습/자바 웹 프로그래밍 Next Step101 4.2.1.7 요구사항 7 - CSS 지원하기 요구사항지금까지 구현한 소스코드는 CSS 파일을 지원하지 못하고 있다. CSS 파일을 지원하도록 구현한다. 지금까지 서비스한 HTML 소스코드를 보면 태그에 CSS 파일도 정상적으로 설정되어 있으며, 물리적인 CSS 파일도 해당 위치에 존재한다. 이클립스 콘솔을 통해 확인해보면 CSS 파일에 대한 요청도 정상이다. 문제는 응답을 보낼 때 모든 컨텐츠의 타입을 text/html로 보내는 것이다. 브라우저는 응답을 받은 후 Content-Type 헤더 값을 통해 응답 본문(body)에 포함되어 있는 컨텐츠가 어떤 컨텐츠인지를 판단한다. 그런데 지금까지 구현한 모든 응답은 text/html로 고정되어 있어 브라우저는 CSS 파일도 HTML로 인식했기 때문에 정상적으로 동작하지 않았다.이 문제를 해결하려면 C.. 2025. 3. 12. 4.2.1.6 요구사항 6 - 사용자 목록 출력 요구사항접근하고 있는 사용자가 "로그인" 상태일 경우(Cookie 값이 logined=true) http://localhost:8080/user/list로 접근했을 때 사용자 목록을 출력한다. 만약 로그인하지 않은 상태라면 로그인 페이지(login.html)로 이동한다. 이 문제는 요구사항 5에서 구현한 Cookie 헤더 값을 활용해 현재 요청을 보내고 있는 클라이언트가 로그인을 한 상태인지의 유무를 판단하는 것이다. 실제 웹 애플리케이션을 서비스할 때도 로그인한 사용자만 접근을 허용해야 한다는 요구사항은 자주 발생한다.현재 로그인 상태 유무에 따라 사용자 목록 페이지를 출력하는 기능은 다음과 같이 구현할 수 있다. - RequestHandler.javapackage webserver;import jav.. 2025. 3. 11. 4.2.1.5 요구사항 5 - 로그인하기 요구사항"로그인" 메뉴를 클릭하면 http://localhost:8080/user/login.html로 이동해 로그인할 수 있다. 로그인이 성공하면 /index.html로 이동하고, 로그인이 실패하면 /user/login_failed.html로 이동해야 한다. 앞에서 회원가입한 사용자로 로그인할 수 있어야 한다. 로그인이 성공하면 로그인 상태를 유지할 수 있어야 한다. 로그인이 성공할 경우 요청 헤더의 Cookie 헤더 값이 logined=true, 로그인이 실패하면 Cookie 헤더 값이 logined=false로 전달되어야 한다. HTTP는 요청을 보내고 응답을 받으면 클라이언트와 서버 간의 연결을 끊는다. ※ HTTP가 클라이언트와 서버의 연결을 매 요청마다 맺고, 끊는다면 성능이 많이 떨어질 것이.. 2025. 2. 25. 4.2.1.4 요구사항 4 - 302 status code 적용 요구사항"회원가입"을 완료하면 /index.html 페이지로 이동하고 싶다. 현재는 URL이 /user/create 로 유지되는 상태로 읽어서 전달할 파일이 없다. 따라서 회원가입을 완료한 후 /index.html 페이지로 이동한다. 브라우저의 URL도 /user/create가 아니라 /index.html로 변경해야 한다. 앞의 구현을 통해 회원가입을 완료했다. 회원가입을 완료한 후 사용자에게 첫 화면(/index.html)을 보여주고 싶다. 첫 화면을 보여주는 방법은 의외로 간단하다. 회원가입 요청(/user/create)을 완료한 후 요청 URL 값을 "/index.html"로 변경하면 웹 서버는 index.html 파일을 읽어 응답으로 보낼 수 있다. String url = tokens[1];if .. 2025. 2. 21. 4.2.1.3 요구사항 3 - POST 방식으로 회원가입 하기 요구사항http://localhost:8080/user/form.html 파일의 form 태그 method를 get에서 post로 수정한 후 회원가입 기능이 정상적으로 동작하도록 구현한다. 요구사항 2의 회원가입 문제를 GET 방식에서 POST 방식으로 데이터를 전달하려면 form.html의 form 태그 method 속성을 get에서 post로 수정하면 된다. method를 post로 수정하면 요청 라인은 다음과 같다. POST /user/create HTTP/1.1 GET 방식으로 요청할 때 요청 URI에 포함되어 있던 쿼리 스트링이 없어지고 method가 GET에서 POST로 변경되었다. 요청 URI에 포함되어 있던 쿼리 스트링은 HTTP 요청의 본문(body)을 통해 전달된다. POST 방식으로 .. 2025. 2. 20. 4.2.1.2 요구사항 2 - GET 방식으로 회원가입하기 요구사항"회원가입" 메뉴를 클릭하면 http://localhost:8080/user/form.html 으로 이동하면서 회원가입할 수 있다. 회원가입 한다. 회원가입을 하면 다음과 같은 형태로 사용자가 입력한 값이 서버에 전달된다./user/create?userId=javajigi&password=password&name=JaeSung&email=javajigi%40slipp.netHTML과 URL을 비교해 보고 사용자가 입력한 값을 파싱(문자열을 원하는 형태로 분리하거나 조작하는 것을 의미)해 model.User 클래스에 저장한다. "회원가입" 메뉴를 클릭하면 회원가입 화면에 접근할 수 있다. 회원가입 버튼을 클릭해 회원가입을 한다. 회원가입을 할 경우 사용자가 입력한 데이터를 웹 서버에 전달해야 한다... 2025. 2. 17. 4.2.1.1 요구사항 1 - index.html 응답하기 요구사항http://localhost:8080/index.html로 접속했을 때 webapp 디렉토리의 index.html 파일을 읽어 클라이언트에 응답한다. 이 요구사항을 구현하려면 먼저 클라이언트에서 서버로 전송하는 데이터가 어떻게 구성되었는지 확인해야 한다. 1단계 힌트를 참고해 요청 데이터를 출력한다. - RequestHandler.javapackage webserver;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.BufferedReader;import java.io.InputStreamReader;import j.. 2025. 2. 10. 4.2 HTTP 웹 서버 구현 이 절에서는 앞의 요구사항을 하나씩 구현하면서 HTTP와 관련한 이론적인 부분을 다룬다.참고도서 : 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 2025. 2. 9. 4.1 동영상을 활용한 HTTP 웹 서버 실습 3장의 요구사항을 직접 구현해 문제를 해결했다면 굳이 동영상을 보지 않아도 된다. 직접 실습을 통해 구현했다면 자신이 구현한 코드와 각 단계별 이론적인 부분을 학습하는 단계로 넘어갈 것을 추천한다. https://youtu.be/xHQ0X_Ails4 : 요구사항 1 - index.html 응답하기https://youtu.be/ioOGE8qTa94 : 요구사항 2 - GET 방식으로 회원가입하기https://youtu.be/q5bvPKbc_RM : 요구사항 3 - POST 방식으로 회원가입하기https://youtu.be/vfCpgIJU2XU : 요구사항 4 - 302 status code 적용https://youtu.be/wWEW7aYS66A : 요구사항 5 - 로그인하기https://youtu.be/p.. 2025. 2. 9. 이전 1 2 3 4 5 6 7 8 ··· 12 다음