취미로 음악을 하는 개발자

서블릿 본문

공대인/Theory

서블릿

영월특별시 2022. 7. 12. 14:26
728x90
웹 관련된 업무를 한다면 한번 쯤 들어본 개념인데, 서블릿이 뭐냐고 물어보면 뭐라고 답해야할까요?

사전적 의미는 자바를 통해 웹페이지를 동적으로 생성하는 서버측 프로그램 또는 그 사양을 의미하는데 클라이언트의 요청을 처리하고 그 결과를 리턴해주는 역할이 서블릿입니다.

위처럼 우리가 사용하는 사이트들은 다 동적인 페이지로 이루어져 있는데
기존에 HTML을 이용한 정적인 페이지를 동적으로 쓰고자 만들어졌습니다.

서블릿은 아래와 같은 특징을 가지고 있다.
- 자바 스레드를 이용하여 동작
- 컨테이너는 클라이언트에서 전송되는 request/response에 대한 처리를 담당
- HTTP 프로토콜을 사용하는 웹/서버 환경에서 주로 사용
- 대표적인 서블릿 컨테이너로 톰캣(ㅈ냥이)
- WAS로는 WebLogic, WebSphere, Jeus

서블릿의 처리 과정은 아래와 같다.
1. 클라이언트가 서버에 메시지를 보냄(GET/POST 등)
2. 서버는 클라이언트로부터 온 HTTP 데이터를 해석하고 서블릿 요청이면 서블릿 컨테이너로 전달
3. 서블릿 컨테이너는 해당 서블릿을 생성하여 수행하도록 service()메소드를 호출
4. 서블릿은 서블릿 컨테이너에 의해 인스턴스가 생성되어, 필요에 따라 init()메소드가 호출(초기화)하고 그 다음 실제 서비스 메소드를 호출
5. 서블릿은 서비스를 수행하고, 해당 결과를 알려주는 결과 페이지를 서버에 전달
6. 서버는 전달받은 결과를 클라이언트에게 HTTP 응답으로 전달

위의 과정을 요약하면
클라이언트가 서버에 요청 -> 서버가 다시 컨테이너로 전달
-> 서블릿 객체 생성 + 쓰레드 생성 -> 쓰레드가 service() 메소드 호출
-> GET/POST 방식 파악 후 request/response 객체를 인자로 메소드 호출
-> 컨테이너, 서버, 클라이언트로 결과 전달

그림으로 보여주면

서블릿 역할만 보면


이러한 서블릿들을 관리해주는 것이 서블릿 컨테이너인데 역할은 아래와 같다.

- 웹서버와의 통신지원
: 서블릿 컨테이너가 API로 제공하여 복잡한 과정을 생략하여 비즈니스 로직에만 초점을 두도록 한다.

- 서블릿 생명주기 관리
: 서블릿 클래스를 로딩하여 인스턴스화 하고 또는 초기화 메소드를 호출하여 요청이 들어올 때 적절하게 처리한다.

- 멀티쓰레드 지원 관리
- 선언적인 보안 관리

서블릿은 코드 내에 HTML과 같은 프레젠테이션 로직과 비즈니스 로직이 함께 존재하기 때문에 관리하기 어려워서 이를 개선하고자 JSP가 나왔다.
물론 JSP도 문제점이 많아서 JSTL이 나왔고 전체적인 유지보수 및 확장성을 위해 MVC패턴이 등장했고 더 고도화된 스프링 프레임워크가 나오게 되었다.

참고자료
https://mangkyu.tistory.com/14
 

[JSP] 서블릿(Servlet)이란?

1. Servlet(서블릿) 서블릿을 한 줄로 정의하자면 아래와 같습니다.  클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술 간단히 말해

mangkyu.tistory.com

 

https://milancode.tistory.com/19

 

Servlet Programming - 서블릿 개요와 동작 과정

1. 서블릿 개요 - Server Side Applet의 약어. 웹 컨테이너에서 수행되는 Java 클래스. - Java에서도 CGI 방식을 따라 웹 프로그래밍이 가능하도록, 자바 서버 프로그래밍 기술인 서블릿이 등장. 2. 서블릿

milancode.tistory.com

https://coding-factory.tistory.com/742

 

[Web] 서블릿(Servlet)이란 무엇인가? 서블릿 총정리

 서블릿(Servlet)이란? 서블릿이란 Dynamic Web Page를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술입니다. 웹을 만들때는 다양한 요청(Request)과 응답(Response)이 있기 마련이고 이

coding-factory.tistory.com

 

'공대인 > Theory' 카테고리의 다른 글

컨테이너  (0) 2022.07.12
AES/CBC/PKCS7  (0) 2022.07.12
쿠키 세션 캐시  (0) 2019.05.21
JSON JSP JS  (0) 2019.05.14
[TOPCIT] 소프트웨어 개발 및 관리  (0) 2019.05.11
Comments