* 구조 : 서블릿 - 서블릿 컨테이너 - 웹서버

 

1. Servlet

웹에서 자바 프로그래밍 구현을 위해 탄생함

자바 프로그램이 서버 역할을 잘 할 수 있도록 확장해주는 것

보안성이 있고, 이식이 가능함. 사용이 쉬워서 CGI로 대체 가능

클라이언트(웹서버)의 요청에 따라 동적으로 모듈을 처리하고 그 결과를 다시 클라이언트에게 전송하는 서블릿 클래스

HTTP 프로토콜 서비스를 지원하는 Javax.http:.HttpServlet 클래스를 상속한다 (Servlet은 Container에 의해 실행되고 관리된다)

JVM에서 작동함. 서버 측 프로그램이라 브라우저를 가리지 않는다

HTML 변경시 Servlet을 재컴파일 해야 한다

 

ㄱ. 역할 : request header와 user가 보낸 데이터를 받음 > 결과 생성 > response header와 생성된 결과를 보여줌

 

ㄴ. 구성 : javax.Servlet = 보편적인 서블릿 인터페이스

javax.Servlet.http = HTTP용 서블릿 인터페이스

 

ㄷ. 자바 서블릿의 생명 주기 : public void init = 서블릿이 처음 적재될 때 호출되는 초기화 함수

   public void service = 클라이언트의 요청이 들어올 때마다 호출(doGet / doPost 호출)

   public void destroy = 서블릿이 메모리에서 해제될 때 호출되는 종료 함수

 

 

2. Servlet Container (서블릿 관리)

서블릿 생명 주기를 관리하고 요청에 따른 스레드를 생성한다

HTTP를 요청 받아서 Servlet 을 실행시키고 결과를 사용자 브라우저에게 전달해주는 기능을 가진 컴포넌트

서블릿과 웹 서버(Apache)가 서버로 통신하는 방법을 제공

멀티스레딩을 지원하여 클라이언트가 다중 요청을 알아서 처리한다

 

ㄱ. 역할 : 통신 지원

생명 주기 관리

멀티스레딩 관리

선언적 보안 관리

jsp 지원

 

ㄴ. 대표적인 컨테이너 : Tomcat, jetty, jboss etc

 

 

 

* Web Server : 웹서버로 들어온 클라이언트의 요청을 받아 컨테이너로 전송하고 웹 컨테이너의 결과값을 받아

클라이언트로 전송한다.

클라이언트가 get, post 등의 메소드를 이용하여 요청하면, 프로그램이 어떤 결과를 돌려준다.

정적인 data를 처리하는 서버.

단순 이미지나 html과 같은 리소스를 제공하는 서버 전달시 WAS보다 빠르다.

사용자의 요청을 효율적으로 처리 가능

(ex. apache)

 

 

* Web Application Server(=WAS) : 웹서버 + 웹컨테이너

다양한 기능을 컨테이너에 구현하고 다양한 역할을 수행하는 서버

넘겨받은 요청을 내부적인 연산으로 처리한 후 출력할 내용을 웹서버로 전달하여 웹서버가 다시 클라이언트로 전송한다.

동적인 data를 처리하는 서버.

DB와 연결되어 데이터를 주고받거나 프로그램으로 데이터의 조작이 필요한 경우 활용한다.(java, jsp, css 등)

(ex. apache tomcat)

 

 

* 보통 대용량의 DB가 오고 가는 곳에서는 web server와 was를 동시에 사용하는데, 그 이유는 정적인 데이터 / 동적인 데이터를 나누어서 처리할 수 있기 때문에 효율성을 극대화할 수 있어서이다(속도).

+ Recent posts