사용자가 주소창에 URL입력 >
브라우저는 이 정보를 HTTP GET 요청을 만듬 >
HTTP GET을 서버로 날려 보냄 >
서버는 요청한 페이지를 서버에서 찾고 > 서버는 HTTP 응답을 작성 >
HTTP 응답을 클라이언트로 내려 보냄 >
브라우저는 HTML을 화면에 출력!
사용자의 이름과 패스워드를 넘겨주고 싶어요.POST
하이퍼링크로 새로운 페이지를 요청합니다.GET
채팅 방에서 대화 내용을 넘겨주고 싶어요.POST
다음(NEXT) 페이지를 보기 위해 다음 버튼을 클릭합니다.GET
보안이 중요한 은행 사이트에서 '로그아웃'을 클릭합니다.post
뒷 페이지로 돌아가기 위해서 '뒤로' 버튼을 클릭합니다. GET
서버에 사용자의 이름과 주소를 넘겨주고 싶어요. POST
사용자가 라디오 버튼으로 값을 선택하도록 하고 싶어요. post
URL(Uniform Resource Lcators)
: 웹 사에 있는 모든 자원은 교유한 이름을 가짐, 이 고유한 이름을 부여하는 방식이 URL
예제)
http://www.wickedlysmart.com:80/beeradvice/select/beer1.html
http://
www.wickedlysmart.com
:80
beeradvice/select
/beer1.html
질의어(쿼리 스트링)
아파치 : 오픈 소스 웹 서버
B: http://www.wickedlysmatt.com:80/skiingAdvice/
C: http://www.wickedlysmatt.com:80/beerAdvice/
D: http://www.wickedlysmatt.com:80/beerAdvice/select/selectBeer.html
HTML 안에 변수를 집어 넣을 수 있을까?
예) html 페이지 안에 insertTimeOnServer이라는 시간을 표시하는 변수 넣은 경우
<html> <body> The crrent time is [insertTimeOnServer] </body> </html>
만약 요청이 날아가기 바로 전까지 존재하지 않았던 페이지를 바로 그 자리에서 만들고자 하는 경우, 또는 파일이나 데이터베이스에 데이터를 저장하고자 하는 경우
웹 서버는 단지 정적인 페이지만 제공, 그러나 동적인, 실시간으로 작성한 페이지를 제공하도록 도우미 애플리케이션이 있음.
동적인 페이지는 도서목록(catalog)에서 웹 방문 로그(weblog)까지 다양하게 존재. 아래와 같은 페이지를 원할 때
<html>
<body>
The crrent time is [insertTimeOnServer]
</body>
</html>
실시간페이지는 요청이 들어오기 전까지 존재하지 않는다.
요청이 들어오면 도우미 애플리케이션이 html을 작성하고, 웹 서버는 이를 클라이언트로 넘겨줌
사용자가 폼에 데이터를 입력하고 전송 버튼을 누른다. >
웹서버는 폼 데이터를 받고 웹서버는 파라미터를 애플리케이션에 넘겨주고, 응답 하도록 부탁.
CGI 프로그램 : 펄스크립트, C, 파이썬, PHP 같은 언어 등으로 작성
핵심
- 웹 애플리케이션에는 하나의 배포 서술자(DD)만 존재
- DD 안에는 다수의 서블릿을 정의할 수 있음
<servlet-name>
태그는<servlet>
태그를<servlet-mapping>
태그와 연결<servlet-class>
에는 자바 클래스 이름이 들어감<url-pattern>
클라이언트가 요청을 보낼 이름
배포 서술자 : Deployment Descriptor
자바 프로그램이 html을 출력하도록 한 것
java.util.Date today = new java.util.Date();
out.println("<html>" +
"<body>" +
"<h1 align=center>hf\'s Chapter1 Servlet</h1>"
+ "<br>" + today + "</body>" + "</html>");
매핑 : 가상주소와 물리주소의 대응 관계 또는 가상 주소로부터 물리 주소를 찾아내는 일을 말한다.