Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 레이디스코드
- nginx
- 오라클
- 개발자
- 신입
- 핑거스타일
- db
- 러블리즈
- SQL 처리
- 악보
- 봄 사랑 벚꽃 말고
- I'm fine thank you
- 인덱스
- DBMS 구성요소
- IT
- 스위트라떼
- 데이터베이스
- DBMS
- 니가 참 좋아
- 말 더듬
- 6학년 8반 1분단
- 아이유
- 기타
- Inside Of Me
- index
- 오라클 아키텍처
- 천공의 시간
- 슬픔의 후에
- 장범준
- oracle
Archives
취미로 음악을 하는 개발자
서블릿 본문
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 객체를 인자로 메소드 호출
-> 컨테이너, 서버, 클라이언트로 결과 전달
그림으로 보여주면
사전적 의미는 자바를 통해 웹페이지를 동적으로 생성하는 서버측 프로그램 또는 그 사양을 의미하는데 클라이언트의 요청을 처리하고 그 결과를 리턴해주는 역할이 서블릿입니다.
위처럼 우리가 사용하는 사이트들은 다 동적인 페이지로 이루어져 있는데
기존에 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
https://milancode.tistory.com/19
https://coding-factory.tistory.com/742
'공대인 > 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