앞서 servlet은 설명을 했었다. 다시 보자면

 

servelt 

 

웹 또는 응용프로그램 서버에서 실행되며 HTTP클라이언트의 요청과 HTTP서버의 데이터베이스 또는 응용 프로그램 간의 중간 계층 역할을 하는 프로그램이다.

 

 

JSP ( JavaServer Pages)

개발자가 특수 JSP태그를 사용하여 HTML페이지에 Java코드를 삽입하는데 도움이 되는 동적 컨텐츠를 지원하는 웹 페이지를 개발하는 기술이다.

 

jsp는 서버사이드에서 실행되는 ASPX, php 와 유사하다. JSP page안의 javascript , html 코드는 클라이언트측에서 실행된다.

 

 

정리

1. servelt는 java안의 html,  JSP는 html안의 java

2. servlet은 jsp보다 비교했을때 빠르다. ( 환경,코드에 따라는 다를 수 있음 )

3. JSP는 java Servlet에서 컴파일 될 수 있다.

4. JSP는 다이나믹 컨텐츠를 생성할 수 있는 웹페이지 스크립팅 언어이고, servlet은 다이나믹 컨텐츠를 수행하기 위해 이미 컴파일된 자바      프로그램이다.

5. MVC에서 JSP는 뷰의 역할, servlet은 컨트롤러의 역할이다.

6. JSP는 일반적으로 필요한 데이터 처리량이 많지 않을때 선호되고, 반대는 servlet이 선호된다 ( 비지니스에 따라 바뀔수있음 )

7. JSP는 JavaBean을 직접 호출 할 수 있는 사용자 정의 태그를 작성할 수 있다.

8. 

web server

 

간단하게 말해서 HTML, 파일,이미지, 비디오 등 정적 웹 사이트의 컨텐츠에 대한 클라이언트 요청을 수행한다.

클라이언트는 거의 브라우저,모바일이며 웹서버의 응답과 마찬가지로 요청은 HTTP메시지의 형태이다.

 

요청이 웹 서버로 들어오면 웹 서버는 요청을 처리 할 수 있는 가장 좋은 프로그램으로 요청을 전달한다. 웹 서버는 서버 측 프                      로그램이 생성 된 응답을 실행하고 다시 전달할 수 있는 중간 환경을 제공하는 것 이상의 기능을 넣지 않는다.

 

웹서버 자체가 트랜잭션 또는 데이터베이스 연결을 지원하지는 않지만 로드밸런싱, 캐싱 및 클러스터링과 같은 내결함성 및 확                    장성에 대한 다양한 전략을 진행할 수 있다.

 

 

web application server

 

동적 콘텐츠에 대한 작업을 한다, 즉 비지니스, 서비스 또는 응용 프로그램에서 제공하는 특수 기능을 제공하도록                                        데이터를 조회하고, 전달하는 등 다양한 기능을 한다. ( 실질적으로 헤비한 작업 )

                

 대부분의 경우 was는 EJB(Enterprise JavaBean)컴포넌트 모델과 같은 컴포넌트 api를 통해 비지니스 로직을                                             수행한다.

 

 

Servlet

 

요청-응답 프로그래밍 모델을 통해 액세스하는 응용프로그램을 호스팅하는 서버의 기능을 확장하는데 사용되는 Java 프로그래밍 언어 클래스이다.

서버측에 있으며 동적 웹 페이지를 작성한다.

Servlet이전에는 CGI(Common Gateway Interface)스크립트언어가 있었지만 여러 문제가 있었다 ( 다음에 다룰 예정 )

Servlet API에는 Servlet, GenericServlet, HttpServlet, ServletRequest, ServletResponse 등의 다양한 인터페이스와 클래스가 있다.

 

servlet라이프사이클을 보자

 

servlet의 라이프 사이클은 servlet이 배포 된 컨테이너에 의해 제어된다. 요청이 servlet에 맵핑되면 컨테이너는 다음 단계를 수행한다.

1. servlet의 인스턴스가 존재하지 않으면 웹 컨테이너는 servlet 클래스를 로드한다.

2. servlet클래스의 인스턴스를 생성한다.

3. init메소드를 호출하여 servlet 인스턴스를 초기화한다.

4. 컨테이너는 service메소드를 호출하여 요청 및 응답 오브젝트를 전달한다.

* servlet을 제거해야하는 경우 컨테이너는 servlet의 destroy메소드를 호출하여 servlet을 마무리한다.

 

웹 컴포넌트들은 작업을 수행하면서 다른 오브젝트들과 유기적으로 소통하공 움직여야 하는데, web 컴포넌트들은 다음과 같은 방식으로 동작될 수 있다.

1. private helper object를 사용 ( ex. javaBeans component)

2. public scope의 atrribute를 공유한다.

3. database를 사용한다.

4. 다른 웹 리소스를 호출한다.

 

또한 멀티쓰레드 서버에서 공유 리소스에 동시에 엑세스가 가능하다. 

공유리소스에는 인스턴스, 클래스 변수와 같은 in memory data, file, database connection, network connection과 같은 외부객체도 포함된다.

https://www.tutorialspoint.com/servlets/servlets-life-cycle.htm#:~:text=A%20servlet%20life%20cycle%20can,to%20process%20a%20client's%20request.

'혼자 공부하는 내용 ( 잡다한 것들 )' 카테고리의 다른 글

TCP 핸드쉐이크 주요 플래그  (0) 2025.04.19
osi 7계층  (0) 2025.04.19
servlet , JSP  (0) 2020.06.27
yaml 기본 문법  (0) 2020.05.28
웹 서비스 구조를 알아보자  (0) 2019.10.03

+ Recent posts