웹 클라이언트와 웹 서버가 어떻게 서로 커뮤니케이션하는가
|
웹서버는 어떤 일을 하나요? 웹 서버는 클라이언트로부터 요청을 받아, 요청한 것을 넘겨주는일
|
클라이언트는 무엇을 하나? 사용자가 서버에 요청을 보낼 수 잇는 기능 제공. 요청 보내고 난 다음, 서버가 보내온 요청의 결과를 화면에 출력
HTML코드를 읽어서(파싱) 화면에 보임 |
(클라이언트)와 (서버)는 HTML과 HTTP를 어떻게 다룰지 압니다
HTML
(클라이언트) 요청 수신후; 서버는 브라우저에게 컨텐츠 타입이 무엇인지 알려줌.
(브라우저)는 이 내용에 기초하여 어떻게 화면에 출력할지 준비 HTML이라는 명령어로; 브라우저가 화면에 컨텐츠를 출력할지에 대한 명령문(instruction) |
컨테이너가 주는 혜택
|
서블릿 실행하고 관리
|
1. 통신(커뮤니케이션)지원
|
서블릿과 웹 서버가 서로 통신할 수 있는 손쉬운 방법 제공.
개발자가 서버와 대화하기 위해 ServerSocket을 만들고, 특정 포트에 리스닝 하고, 연결요청이 들어오면 스트림 생성 // 할필요 없음
컨테이너는 어떻게 웹 서버와 통신해야하는지 잘 알 고 있으며, 이런 통신기능을 API로 제공함 |
2. 생명주기(라이프사이클)관리
|
컨테이너는 서블릿의 탄생과 죽음을 관리
컨테이너는 서블릿 클래스를 로딩하여 인스턴스화하고, 초기화 메소드를 호출하고, 요청이 들어오면 적절한 서블릿 메소드를 호출하고, 서블릿이 생명을 다하면 GC진행 // 서블릿 자원을 효율적으로 관리해줌 |
3. 멀티스레딩 지원
|
//다중요청에 대한 스레드 생성 및 운영에 대해서 처리해줌(스레드안전성보장)
컨테이너는 요청마다 스레드 만듬 클라이언트 요청에 따라 적절한 HTTP서비스 메소드를 실행하면, 스레딩 작업끝남(스레드 죽음) |
4.선언적인 보안관리
|
보안관련된 내용을 서블릿 또는 자바 클래스 코드안에 하드코딩 할 필요없고
XML 배포서술자(Deploy Descriptor)에 기록하면됨. -->보안 수정사항시 javacode수정하고 다시 컴파일하지 않아도 보안관리 가능 |
5. JSP지원
|
JSP코드를 실제 자바코드로 변환
|
- 개발자가 비지니스 로직에 충실하게 해주며, 스레딩이나 보완 네트워크 통신에 관련된 문제를 컨테이너에 위임.
- 서블릿은 서비스 클라이언트;클라이언트 요청 수신 및 응답; 컨테이너는 서블릿을 관리해주고 생성, 소멸하는 사후까지 관리가 컨테이너
1. 서블릿과 JSP는 어디에쓰는 물건인고?
웹 애플리케이션은 이제 막 달아오른 시장.
|
2. 웹 애플리케이션 아키텍쳐
서블릿은 도움이 필요합니다. 요청이 들어오면, 누군가 서블릿을 초기화해서, 요청을 처리할 새로운 스레드를 만들어야 합니다. 그러면 그 누군가는 서블릿의 doPost()또는 doGet()메서드를 호출.
여기에 또 하나, 이 두 메소드의 매개변수로 들어가는 HTTPRequest 와 HTTPResponse객체를 누군가가 생성해서 서블릿으로 넘겨주어야 겠지요. 또한 누군가는 서블릿이 생성, 소멸하는 시점에서 리소스 관리도 해야합니다. 그 누군가가 누구냐 하는 것인데, 바로 컨테이너입니다. |
3. 초간단 미니 MVC 튜토리얼
|
4.서블릿이 되어보자
서블릿은 평생을 서비스 클라이언트로 삶니다.
서블릿이 하는 일은 클라이언트로부터 요청을 받아 이에 응답하는 일입니다. 요청은 "환영페이지 보여주세요(GET)"에서부터 "결제해주세요"라는 것까지 다양. Request객체에는 사용자의 중요한 데이터들이 들어있기 때문에, 서블릿은 어떻게 이 정보를 읽어오고, 사용할 것인지 알아야 합니다. Response객체는 브라우저가 화면에 정보를 출력하거나, 바이트 정보를 내려받는것과 같은 정보 전송역할을 하기에, 서블릿은 데이터를 어떻게 전송하는가도 미리 알고 있어야 합니다. |
5. 웹애플리케이션이 되어보자
|
6. 대화 상태 유지하기
웹 서버에는 메모리가 없습니다. 웹 서버는 응답을 보낸 다음에는 당신이 누구였는지 조차 잊어버립니다. 다음 번에 다시 요청을 해도, 그가 이전의 당신이었다는 것을 모르죠. |
7. JSP가 되어보자
JSP, 서블릿이 되다. 개발자가 서블릿을 만들지는 않았지만, 컨테이너는 알아서 JSP를 서블릿 소스코드로 변환한 다음, 컴파일하여 완전한 서블릿 클래스로 탈바꿈시킵니다. |
8. 스크립트가 없는 페이지
|
9. 막강한 커스텀 태그
|
10. JSTL만으로 만족스럽지 않을때
|
11. 웹 애플리케이션을 배포해보자
이제 개발한 웹 애플리케이션을 배포할 때가 되었군요. |
12. 비밀스럽게, 안전하게
지금 당신의 웹 애플리케이션이 위험에 처해 있다. |
13. 막강 필터
필터는 요청을 중간에서 가로 챕니다. 요청(Request)을 중간에서 가로챌 수 있다는 것은 응답(Response)도 함께 가로챈다는 것을 의미합니다. 이 방식의 장점은 무엇보다도 서블릿이 눈치채지 못한다는 것이죠. 즉 클라이언트의 요청과 컨테이너가 서블릿의 service()메소도를 호출하는 중간에 끼어 들기 때문에 무슨 일이 있었는지 모른다는 말이죠. 그런데 뭐하려고 이러냐고요? |
14. 엔터프라이즈 디자인 패턴
누군가는 이 문제를 겪었습니다. 자바로 웹 애플리케이션 개발이 처음이라면, 운이 좋군요. 이제 J2EE 셔츠를 입고, 이 길을 걸어간 수 많은 개발자들이 흘린 땀과 지혜의 총화를 만나게 될 것입니다. |
reference : Head First Servlet & JSP
댓글 없음:
댓글 쓰기