logo

English

이곳의 프로그래밍관련 정보와 소스는 마음대로 활용하셔도 좋습니다. 다만 쓰시기 전에 통보 정도는 해주시는 것이 예의 일것 같습니다. 질문이나 오류 수정은 siseong@gmail.com 으로 주세요. 감사합니다.

서블릿(Servlet) 이란 무엇인가?

by siseong@naver.com posted Nov 01, 2017
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print Update Delete
?

Shortcut

PrevPrev Article

NextNext Article

Larger Font Smaller Font Up Down Go comment Print Update Delete

1. 서블릿(Servlet)

서블릿의 용어는 Server + Let 의 합성어라고 하는 사람들도 있고 Server + Applet 이라는 사람들도 있다. 뭔가 더 햇갈리는 느낌이 강하게 나지만 결국 "클라이언트 요청을 처리하고 그 결과를 다시 클라이언트에게 전송하는 Servlet 클래스의 구현 규칙을 지킨 자바 프로그램" 이라고 이해하면 될 것 같다. 그렇게 타협했다. 물론 자바와 관련이 있으므로 당연히 JDK 가 필요하다. 즉 자바 API 와 이를 동작시키는 JVM 이 필요하다는 소리이다.

 

2. 서블릿 컨테이너

그렇다면 서블릿이라는 놈을 관리해주는 놈이 있어야 하지 않을까? 그냥 서버에 서블릿 만들어서 위치해 둔다고 클라이언트의 Request/Response 를 처리해줄리가 없다. 결론적으로 서블릿을 관리해주는 놈을 서블릿 컨테이너라고 한다. 서블릿 컨테이너는 서블릿의 생명주기를 관리하고 요청에 따른 스레드를 생성해준다. 또, 클라이언트의 Request 를 받아주고 Response 를 보낼 수 있게 웹 서버와 소켓을 만들어서 통신을 해준다. 자세한 서블릿 컨테이너의 역할은 아래와 같다.

 

  • 통신 지원
    서블릿과 웹 서버가 통신할 수 있는 손쉬운 방법을 제공한다. 우리가 통신을 한다고 생각할 때 소켓을 만들고, 특정 포트를 리스닝하고, 연결 요청이 들어오면 스트림을 생성해서 요청을 받는다고 알고있는데 이 과정을 서블릿 컨테이너가 대신 해주는 것이다. 서블릿 컨테이너는 이런 통신 과정을 API 로 제공하고 있기 때문에 우리가 쉽게 사용할 수 있다.
  • 생명주기 관리
    서블릿 컨테이너가 기동되는 순간 서블릿 클래스를 로딩해서 인스턴스화하고, 초기화 메서드를 호출하고, 요청이 들어오면 적절한 서블릿 메소드를 찾아서 호출한다. 만약 서블릿의 생명이 다하는 순간 가비지 컬렉션을 진행한다.
  • 멀티스레딩 관리
    서블릿 컨테이너는 해당 서블릿의 요청이 들어오면 스레드를 생성해서 작업을 수행한다. 즉 동시의 여러 요청이 들어온다면 멀티스레딩 환경으로 동시다발적인 작업을 관리한다.
  • 선언적인 보안관리
    서블릿 컨테이너는 보안 관련된 기능을 지원한다. 따라서 서블릿 코드 안에 보안 관련된 메소드를 구현하지 않아도 된다.
  • JSP 지원

 

 

3. 톰캣

 톰캣이라면 프로그래밍을 하는 사람들은 다 들어봤을 이름이다. 하지만 솔직하게 말해서 나는 톰캣을 "오픈소스 웹 서버 아니야? 그거 돌리면 고양이 웹 페이지 뜨던데" 정도로 알고 있었다. 뭐... 어찌됐든 톰캣은 서블릿 컨테이너이다. 톰캣은 웹 서버와 연동하여 실행할 수 있는 자바 환경을 제공하여 자바 서버 페이지(JSP)와 자바 서블릿이 실행할 수 있는 환경을 제공하고 있다. 톰캣은 관리툴을 통해 설정을 변경할 수 있지만, XML 파일을 편집하여 설정할 수도 있다. 그리고, 톰캣은 HTTP 서버도 자체 내장하기도 한다. 보통 톰캣은 WAS 의 기능을 수행한다라고 말한다. 요즘 톰캣의 버젼이 올라가면서 웹 서버의 기능도 충분히 잘 수행하기 때문에 굳이 웹 서버와 WAS 를 나눠서 생각하지 않아도 되지만... 정확한 개념을 필요하는 사람은 여기를 참고하면 되겠다. (http://blog.naver.com/PostView.nhn?blogId=ssohyuny2000&logNo=155249496)

TAG •

List of Articles
No. Subject Author Date Views
22 SyBase 와 JSP 연동 digipine 2017.10.28 985
21 SyBase 사용법 요약 digipine 2017.10.28 1107
20 [Oracle] SQL*Plus 개요,각종 명령어들 digipine 2017.10.28 1346
19 Choosing a free database - DB2 digipine 2017.10.29 1255
18 MS Access MDB를 위한 DB Connection String digipine 2017.10.29 1724
17 Eclipse, JSP, Beans 실습하기 digipine 2017.10.29 3143
16 Filter를 이용한 웹 프로그래밍 Filter 란 무엇인가? file siseong@naver.com 2017.10.31 4739
15 Apache Tomcat 설치후 관리자 모드 실행 되지 않을때 문제 해결방법 digipine 2017.11.01 3070
» 서블릿(Servlet) 이란 무엇인가? siseong@naver.com 2017.11.01 599
13 HTTP Multi Part Request Sample Format digipine 2017.11.01 809
12 Ubuntu에서 sqlite3 빌드 방법 digipine 2017.11.01 758
11 SQLite 활용 팁 1 - 트리거 활용하기 digipine 2017.11.01 481
10 SQLite 활용 팁 2 - 트리거 실전 사용하기 digipine 2017.11.01 461
9 SQLite 활용 팁 2 - 트리거 실전 사용하기 digipine 2017.11.01 545
8 SQLite 활용 팁 3 - 다른 DB 테이블에 트리거 사용하기 digipine 2017.11.01 815
7 MySQL 5.7.x 버전 root 및 유저 암호(Password) 변경 digipine 2017.11.02 719
6 [PostgreSQL] 간단 사용법 digipine 2017.11.02 5372
5 MySQL Data Backup - Database Dump 방법 및 복구 방법 엉뚱도마뱀 2017.11.18 765
4 MySQL root 비밀번호 변경하기 (MySQL 5.7버전 이상) lizard2019 2019.06.10 3317
3 Ubuntu mySql 완전 삭제하기 lizard2019 2021.04.15 943
Board Pagination Prev 1 2 Next
/ 2