Coding Planet
[Servlet]Servlet, CGI, Servlet Container의미 본문
반응형
1. Servlet이란?
- 동적 웹페이지를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술
- 웹 서비스를 위한 자바 클래스
- 웹 프로그래밍에서 클라이언트의 요청(Request)을 처리하고 그 결과를 다시 클라이언트에게 응답(Response)하는 Servlet 클래스의 구현 규칙을 지킨 자바 프로그래밍 기술
- 자바 어플리케이션 코딩을 하는 것처럼 웹 브라우저용 출력화면(HTML)을 만드는 방법
- 예를 들어 사용자가 로그인을 하려고 할 때 아이디와 비밀번호를 입력하고 로그인 버튼을 누르면 서버는 아이디와 비밀번호를 확인하고 다음 페이지를 띄어주는 역할을 한다. 그래서 서블릿은 자바로 구현된 **CGI라고 한다.
2. Servlet의 특징
- HTML을 사용하여 요청에 응답한다.
- java thread를 이용하여 동작한다 -> 요청마다 별도 thread 생성
- MVC Model2 패턴에서 Controller로 이용한다.
- http프로토콜 서비스를 지원하는javax.servlet.http.HttpServlet 클래스를 상속 받는다.
- 단, servlet에 작성한 html 코드 변경 시 재컴파일 해야 하는 단점이 있다.
3. Servlet의 동작 순서
1) 사용자가 URL(Uniform Resource Locator)을 클릭하면 HTTP Request(요청)를 Servlet Container로 전송
2) Http Request를 전송 받은 Servlet Container는 아래 두 객체를 생성
- HttpServletRequest(요청 관련 내용이 저장된 객체),
- HttpServletResponse(응답 관련 내용이 저장된 객체)
3) DD (배포서술자, Deployment Descriptor) = web.xml은 사용자가 요청한 URL을 분석하여 어떤 서블릿 클래스에 요청 내용을 전달할지 찾음
4) 해당 서블릿에서 init() 메소드를 먼저 호출한 후 service() 메소드를 호출하여 클라이언트로부터 전송 받은 방식
GET, POST 여부에 따라 해당 메소드(doXXX()) 를 호출함.
5) doGet() / doPost() 메소드는 동적 페이지를 생성 후 HttpServletResponse객체에 응답을 보냄
6) 응답 종료 시 HttpServletRequest, HttpServletResponse 객체 소멸
4. Servlet Container 의 역할
- 웹 서버로부터 오는 동적 요청을 처리하는 서버
- 배포를 위한 포트 연결, 웹 서버 통신을 위한 소켓, 입/출력 스트림을 생성하는 역할을 함
- WAS(Web Application Server)가 Servlet Container에 해당하고 대표적으로 Tomcat이 있다.
- 즉, Servlet이 어떤 역할을 수행하는 정의서이고 Servlet Container는 정의된 Servlet을 수행하는 역할이다.
1. 웹 서버와의 통신 지원
- 서블릿과 웹 서버가 손 쉽게 통신할 수 있게 함
- 일반적으로 소켓을 만들고 listen, accept 등을 해야 하지만 서블릿 컨테이너는 이러한 기능을 API로 제공하여 복잡한 과정을 생략하게 한다
2. 서블릿 생명주기(Life Cycle) 관리
- 서블릿 클래스를 로딩하여 인스턴스화 하고, 초기 메소드를 호출하고, 요청이 들어오면 적절한 서블릿 메소드를 호출
- 서블릿이 생명을 다 한 순간에는 적잘하게 가비지 컬렉션을 진행하여 편의를 제공한다.
3. 멀티쓰레드 지원 및 관리
- 서블릿 컨테이너는 요청이 올 때마다 새로운 자바 스레드 생성하는데 http서비스 메소드를 실행하고 나면 스레드는 자동으로 사라짐.
- 원래는 스레드를 관리해야 하지만 서버가 다중 스레드를 생성/운영 해주어서 스레드의 안정성에 관해서는 걱정할 필요 없음
4. 선언적인 보안 관리
- 서블릿 컨테이너를 사용하면 개발자는 보안에 관련된 내용을 서블릿 또는 자바 클래스에 구현하지 않아도 됨
- 일반적으로 보안관리는 xml배포 서술자(DD (web.xml)에다가 기록하므로 보안에 대해 수정할 일이 생겨도
자바소스코드를 수정하여 다시 컴파일 하지 않아도 보안관리 가능
반응형
'Server' 카테고리의 다른 글
[JSP] JSP(Java Server Page)란? Servlet와 JSP의 차이점, 지시어, 스크립팅 원소 (0) | 2023.03.20 |
---|---|
톰캣(Tomcat) 설치, 이클립스 연결 (0) | 2023.03.17 |
톰캣 설치 포트충돌, 오라클 포트 변경하기 (0) | 2023.03.17 |
[JDBC]ORACLE DBMS에서 만든 INDEX JDBC에서 사용하기 , Connection Pool (0) | 2023.01.26 |
JDBC 프로그래밍: PreparedStatement, Sequence, Index (0) | 2023.01.25 |
Comments