Post
EN

서블릿 이해하기

서블릿은 자바플랫폼에서 컨포넌트를 기반으로 한 웹 애플리케이션을 개발할때 사용하는 핵심 기술이다.

JSP가 등장한 가장 큰 이유는 서블릿이 가진 HTML 표현상의 문제를 해결하기 위해서였다.

서블릿 프로그램 내에서 HTML을 처리하기 때문에 간단한 태그를 변경할 때 조차 재컴파일을 해야하는 문제가 있다.

이러한 이유로 웹 디자이너는 마음대로 화면을 수정할 수 없다는 문제점을 따르게 된다. 이 처럼 비즈니스로직과 컨텐츠가 소스에 있다는 점은 개발과 관리면에서 여러가지 문제점을 안겨주었다.

서블릿의 장점**

 - 쓰레드를 기반으로 하므로 웹 애플리케이션 운영에 효율적이다.

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

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

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

웹 애플리케이션 개발시 서블릿을 사용하면 좋은 점**

​ - 컨텐츠와 비즈니스 로직을 분리 할 수 있다.

 - 컨트롤러와 뷰 역할 분담으로 인해 웹디자이너와 개발자간의 원활한 작업이 가능하다.

 - 유지보수가 수월하다.

 - 기능확장이 용이하다.

 - 현재와 같이 프로그래머가 HTML, 자바스크립트, 스타일 시트와 같은 복잡한 기술을 모두 알아야 할 필요는 없다.

 - jsp 페이지내에 HTML, CSS, 자바스크립트 소스코드가 뒤섞이는 스파게티 소스를 막을 수 있다.

서블릿 컨테이너**

​ 서블릿 구조에서 가장 큰 특징은 서블릿 컨테이너다. 웹 서버는 서블릿 자체를 실행하지 못하므로 자바 가상머신을 내장한 컨테이너 (이전 서블릿 엔진이라고 표현)라는 서블릿 실행환경이 필요하다.

서블릿 구조**

 - 웹서버는 클라이언트 요청을 컨테이너로 전달한다. 컨테이너는 서블릿 메모리에 있는지 확인하고 없을 경우 클라이언트 요청을

   처리할 쓰레드를 생성해서 처리한다.

 - 서블릿은 JDBC를 이용해 데이터베이스에 접근할 수 있고, 별도로 제작된 자바클래스를 통해, 다양한 기능을 구현할 수 있다.

 - 서블릿에서 수행된 결과는 HTML 형식으로 클라이언트에 전달된다.

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

서블릿 생명주기**

———- 2017.02.26 추가 ————-

JSP 라이프사이클

  1. JSP URL 호출

  2. 페이지 번역

  3. JSP 페이지 컴파일

  4. 클래스 로드

  5. 인스턴스 생성

  6. jspInit 메서드 호출

  7. _jspService 메서드 호출

  8. jspDestory 메서드 호출

해당 JSP 페이지가 이미 컴파일되어 있고, 클래스가 로드되어 있고, JSP파일이 변경되지 않았다면, 가장 많은 시간이 소요되는 2~4 프로세스는 생략된다.

서버의 종류에 따라서 서버가 가동될 때 컴파일을 미리 수행하는 Pre compile 옵션이 있다. 이 옵션을 선택하면 서버에 최신 버전을 반영한 이후에 처음 호출되었을 때 응답 시간이 느린 현상을 방지할 수 있다.

하지만 개발시에는 옵션을 설정하면 성능저하가 발생된다.

This article is licensed under CC BY 4.0 by the author.