차근차근/JAVA JSP

Http 기초

예쁜꽃이피었으면 2014. 7. 26. 01:39

다른것 검색도중 잘 정리되어있는 블로그 발견..

덧글이라도 남기려했는데..

안되네..

일단 출처 http://www.silverwolf.co.kr/9872

 

 

  • HTTP는 하이퍼텍스트 전송 프로토콜(HyperText Transfer Protocol)의 약자입니다.
    HTTP는 웹에서 사용하는 네트워크 프로토콜이며 TCP/IP 위에서 돌아갑니다.
  • HTTP는 요청/응답(Request/Response) 모델을 사용합니다. 즉 클라이언트는 HTTPRequest를 보내고, 웹 서버는 HTTPResponse로 응답합니다. 그러면 브라우저는 내려 받은 컨텐츠 타입에 따라 문서를 출력합니다.
  • 서버로부터 온 문서가 HTML이라면, 이 HTML 페이지는 HTTP 응답에 첨부되어 날아옵니다.
  • HTTP 요청에는 요청한 URL("클라이언트가 요청한 자원), HTTP 메소드(GET, POST 등), 파라미터 데이터(없을 수도 있음. 보통 뭐리 스트링이라고 부름)가 들어 있습니다.
  • HTTP 응답에는 상태 코드, 컨텐츠 타입(보통 MIME이라고 부른다), 실제 컨텐츠(HTML, 이미지 등)가 들어 있습니다.
  • GET 메소드는 폼 데이터를 URL 뒤에 추가합니다.
  • POST 메소드는 요청의 몸체(body)에 폼 데이터를 포함합니다.
  • MIME 타입은 브라우저에게 "어떤 종류의 데이터를 받을 겁니다" 라는 정보를 미리 알려주어, 브라우저가 데이터를 어떻게 다룰지 준비하도록 합니다(HTML이면 화면에 보여주기 위한 작업을 해야 할 것이고, 이미지라면 포맷을 파악하여 출력할 것이며, 음악은 또 그에 맞는 행동을 하겠지요).
  • URL은 Uniform Resource Locator의 약자입니다. 웹에 있는 모든 자원은 자신만의 고유한 주소를 가집니다. 제일 앞에는 프로토콜의 종류, 그 다음은 서버이름, 포트번호(기본값이 아닌 경우), 자원이 있는 경로와 마지막으로 자원의 이름이 뒤따라 옵니다. 여기에 쿼리 스트링이 있다면 추가될 수 있습니다. 물론 GET 메소드인 경우에 말입니다.
  • 웹 서버는 정적인 페이지를 서비스하는데 최적화되어 있습니다. 예를 들어, 현재 시간을 페이지에 보여주려고 할 때와 같이, 동적인 페이지를 만들어야 한다면, 서버와 협업하여 이를 처리할 수 있는 도우미 애플리케이션(helper app)이 있어야 합니다. 자바 이외의 이런 프로그램을 CGI라고 부릅니다. CGI는 Common Gateway Interface의 약어입니다.
  • HTML을 println() 안에다 작성하는 방식은 컴파일 오류를 내기 쉬우며, 관리하기도 쉽지 않습니다. JSP는 자바 안에다 HTML을 작성하는 방식이 아니라, HTML 안에다 자바 코드를 작성하는 방식으로 이 문제를 해결합니다.

역할

작업 

웹 서버 

컨테이너 

서블릿 

Request와 Response 객체 생성 

 

스레드를 시작하기 바로 직전에 

 

 Service() 메소드 호출

 

service() 메소드가 doGet(), doPost() 메소드를 호출합니다. 

 

 요청을 처리하기 위한 새로운 스레드 생성

 

서블릿 스레드를 시작합니다. 

 

 Response 객체를 HTTP Response 객체로 전환

 

response 객체로 부터 HTTP 응답(response)을 생성합니다. 

 

 HTTP를 이해하고 있어야 한다

브라우저와 통신하기 위하여 사용합니다. 

 

 

 Response 객체에 HTML을 내려 보낸다

 

 

동적인 컨텐트를 생성합니다. 

 Response 객체에 대한 참조가 있다

 

컨테이너가 생성하여 서블릿에게 넘긴다 

응답에 쓰기 작업을 하기 위하여 사용합니다. 

 DD에서 URL을 찾는다

 

요청한 정확한 서블릿을 찾기 위하여 

 

 Request와 Response 객체를 소멸시킨다

 

서블릿 작업이 완료되면 

 

 동적인 컨텐츠 생성을 조율한다

이 작업을 어떻게 컨테이너에게 넘겨야 하는지를 압니다 

누가 호출했는지를 압니다 

 

 생명주기를 관리한다

 

service() 메소드 및 여타 메소드를 호출하여 

 

 DD의 <servlet-class> 항목과 일치하는 이름이 있는 것은?

 

 

저요 저 


HTTP 메소드

GET 

URL로 자원 또는 파일을 달라고(get) 요청함. 

POST 

Request에 첨부한 몸체 정보를 서버로 보내어, 요청한 URL로 이 정보를 넘겨주라고 요청함. 

HEAD 

GET이 무엇을 리턴하든 간에 헤더 정보만 요청함. 이는 Response의 몸체 정보가 없다는 것만 빼면 GET과 동일함. URL로부터 요청한 정보는 빼고 헤더 정보만 가져오는 것임. 

TRACE 

요청한 메시지의 루프백(loopback) 테스트를 요청함. 서버쪽에서 무엇을 받았는지를 알고 싶을 때 하는 테스트. 테스트 목적 또는 문제 해결을 위해 사용함. 

PUT 

동봉한 몸체 정보를 요청한 URL로 올리기 위해 사용함. 

DELETE 

요청한 URL에 있는 자원이나 파일을 삭제하기 위해 사용함. 

OPTIONS 

요청한 URL이 응답할 수 있는 HTTP 메소드가 무엇인지 요청함. 

CONNECT 

터널링의 목적으로 연결을 요청함. 

 

POST는 멱등(Idempotent)이 아닙니다.

HTTP GET은 말 그대로 무엇인가를 서버로부터 가져오는 것이지, 서버에 수정을 가하기 위한 것이 아닙니다. GET은 HTTP 스펙에 따르면 멱등 메소드입니다. GET은 어떤 부작용(bad side effect)없이 여러 번 실행할 수 있습니다.

POST는 반대로 멱등 메소드가 아닙니다. POST로 전송되는 몸체의 정보는 트랜잭션을 위한 것이며, 이는 되돌릴 수 있는 성질의 것이 아닙니다. 이런 이유 때문에 doPost()를 구현할 때 유의해야 합니다.

 

POST는 디폴트 값이 아닙니다!

method="POST"를 코딩하지 않았을 때, 디폴트는 HTTP GET입니다. 따라서 브라우저는 파라미터 정보를 몸체가 아닌 헤더에 보낸다는 것입니다.


반응형

'차근차근 > JAVA JSP' 카테고리의 다른 글

자바/Java URLEncoder와 URLDecoder  (0) 2014.07.26
URLConnection  (0) 2014.07.26
Request 객체  (0) 2014.07.26
Response 객체  (0) 2014.07.26
Response 객체를 이용한 파일 전송  (0) 2014.07.26