01. 서블릿 개요

1. 서블릿(Servlet)이란? 

▪ 서블릿은 자바 플랫폼에서 컴포넌트를 기반으로 하는 웹 애플리케이션 개발의 핵심 기술.

▪ JSP 는 서블릿 기반의 웹 프로그래밍 기술로 내부적으로 JSP는 서블릿으로 변환 되어 실행됨.

▪ 따라서 JSP를 보다 잘 이해하고 고급 웹 프로그래밍 개발을 위해서는 서블릿에 대한 이해가 필요함.

 

◼ 서블릿의 장점 

➊ 자바를 기반으로 하므로 자바 API를 모두 사용할 수 있다.

➋ 운영체제나 하드웨어에 영향을 받지 않으므로, 한 번 개발된 애플리케이션은 다양한 서버 환경에서도
실행할 수 있다.

➌ 웹 애플리케이션에서 효율적인 자료 공유 방법을 제공한다. 

➍ 다양한 오픈소스 라이브러리와 개발도구를 활용할 수 있다. 

 

◼ 웹 애플리케이션 개발에 서블릿 사용 시 이점 

➊ MVC 패턴을 쉽게 적용할 수 있고 컨테이너와 밀접한 서버 프로그램을 구현할 수 있다.

➋ MVC 패턴을 적용할 때 콘텐츠와 비즈니스 로직을 분리할 수 있으며 컨트롤러와 뷰가 역할을
분담함으로써, 웹 디자이너와 개발자 간에 작업을 원활하게 할 수 있다.

➌ 리스너 및 필터 서블릿 등 고급 프로그래밍 기법을 통해 더욱 효과적인 웹 애플리케이션을 설계할 수 있다.

 

2. 서블릿과 서블릿 컨테이너 

▪ 서블릿 컨테이너는 서블릿을 실행하기 위한 서버 소프트웨어를 말하는 것으로 JSP나 서블릿으로 만들어진 웹 프로그램을 개발하고 실행하기 위한 환경임.

▪ 아파치 톰캣이 대표적임.

 

3. 서블릿 동작 과정 

▪ 서블릿은 개발자가 소스 작성 후 컴파일 과정을 거쳐 컨테이너에 배치(deploy)하게 되면 컨테이너에 의해 실행되어 관리된다. 

▪ 이후 사용자 요청에 따라 스레드 단위로 실행되면서 데이터베이스 연동 등 필요한 작업을 수행하고 처리 결과를 사용자에게 HTML 형식으로 전달하는 구조로 동작한다.

서블릿 개발과 실행 과정

 

02. 서블릿 구조와 생명주기

1. 서블릿 구조와 API

▪ JSP와 달리 서블릿은 일반적인 자바 클래스 구조를 가진다. 

▪ 이는 서블릿이 일반 자바 소스의 구조라 는 의미로 컴파일 과정이 필요함을 의미

▪ 또한 서블릿은 컨테이너에 의해 실행되므로 개발자가 임의로 프로그램 하는 것이 아니라 특정 클래스를 상속 받아야만 구현할 수 있는 구조임.

▪ 따라서 서블릿 프로그램을 하려면 서블릿 클래스의 상관 관계나 API의 기본 구조를 이해해야 한다.

▪ API(Application Programming Interface)는 특정 클래스를 다른 프로그램에서 사용하기 위해 필요한 정 보를 규격화 해놓은 것을 말함.

▪ 일반적으로 서블릿은 java.servlet.HttpServlet 클래스를 상속해서 구현 함.

javax.servlet.http.HttpServlet을 상속받은 서블릿 동작 구조

GET 방식

• 서버에 있는 정보를 클라이언트로 가져오기 위한 방법이다. 예를 들어 HTML, 이미지 등을 웹 브라우저에서 보기 위한 요청.

• 서버에는 최대 240Byte까지 데이터를 전달할 수 있다.

• ‘?’ 이후의 값들은 서버에서 QUERY_STRING을 통해 전달된다. ‘속성=값’ 형태로 사용해야 하며 ‘&’는 여러 속성 값을 전달할 때 연결해주는 문자열이다.

• URL이 노출되기 때문에 보안에 문제가 생길 수 있다.

 

 POST 방식 

• 서버로 정보를 올리기 위해 설계된 방법이다. 예를 들어 HTML 폼에 입력한 내용을 서버에 전달하기 위한 요청.

• 서버에 전달 할 수 있는 데이터 크기에는 제한이 없다. 

• URL에는 매개변수가 표시되지 않는다.

 

2. 서블릿 생명주기 

◼ 서블릿 초기화 : init() 메서드

▪ 서블릿 실행시 호출되는 메서드로 초기에 한 번만 실행된 다. 공통적으로 필요한 작업 등 수행 

◼ 요청/응답 : service() 메서드 

▪ 사용자 요청에 따라 스레드로 실행되는 메서드로 각각 service() 메서드를 통해 doGet() 혹은 doPost() 메서드가 호출된다.

▪ 파라미터인 HttpServletRequest 와 HttpServletResponse 를 통해 사용자 요청을 처리한다. 

◼ 서블릿 종료 : destroy() 메서드

▪ 컨테이너로부터 서블릿 종료 요청이 있을 때 호출되는 메서드.

▪ init()와 마찬가지로 한 번만 실행되며, 서블릿이 종료되면 서 정리할 작업이 있다면 destroy() 를 오바라이딩해서 구현함.

서블릿 생명주기

 

반응형

'잡동사니' 카테고리의 다른 글

[JSP] JSP 내장객체  (0) 2020.06.16
[JSP] JSP 기본 문법  (0) 2020.06.16
JSP  (0) 2020.06.16
[JSP] JSP 개발환경 구축  (0) 2020.06.16
[JSP] 웹 프로그래밍 언어와 주요 기술  (0) 2020.06.16

+ Recent posts