서블릿 이해하기
서블릿은 자바플랫폼에서 컨포넌트를 기반으로 한 웹 애플리케이션을 개발할때 사용하는 핵심 기술이다.
JSP가 등장한 가장 큰 이유는 서블릿이 가진 HTML 표현상의 문제를 해결하기 위해서였다.
서블릿 프로그램 내에서 HTML을 처리하기 때문에 간단한 태그를 변경할 때 조차 재컴파일을 해야하는 문제가 있다.
이러한 이유로 웹 디자이너는 마음대로 화면을 수정할 수 없다는 문제점을 따르게 된다. 이 처럼 비즈니스로직과 컨텐츠가 소스에 있다는 점은 개발과 관리면에서 여러가지 문제점을 안겨주었다.
서블릿의 장점**
- 쓰레드를 기반으로 하므로 웹 애플리케이션 운영에 효율적이다.
- 자바를 기반으로 하므로 자바 API를 모두 사용 할 수 있다.
- 운영체제나 하드웨어 영향을 받지 않음으로, 한번 개발된 애플리케이션은 다양한 서버 환경에서도 실행 가능하다.
- 웹 애플리케이션에서 효율적인 자료 공유 방법을 제공한다.
웹 애플리케이션 개발시 서블릿을 사용하면 좋은 점**
- 컨텐츠와 비즈니스 로직을 분리 할 수 있다.
- 컨트롤러와 뷰 역할 분담으로 인해 웹디자이너와 개발자간의 원활한 작업이 가능하다.
- 유지보수가 수월하다.
- 기능확장이 용이하다.
- 현재와 같이 프로그래머가 HTML, 자바스크립트, 스타일 시트와 같은 복잡한 기술을 모두 알아야 할 필요는 없다.
- jsp 페이지내에 HTML, CSS, 자바스크립트 소스코드가 뒤섞이는 스파게티 소스를 막을 수 있다.
서블릿 컨테이너**
서블릿 구조에서 가장 큰 특징은 서블릿 컨테이너다. 웹 서버는 서블릿 자체를 실행하지 못하므로 자바 가상머신을 내장한 컨테이너 (이전 서블릿 엔진이라고 표현)라는 서블릿 실행환경이 필요하다.
서블릿 구조**
- 웹서버는 클라이언트 요청을 컨테이너로 전달한다. 컨테이너는 서블릿 메모리에 있는지 확인하고 없을 경우 클라이언트 요청을
처리할 쓰레드를 생성해서 처리한다.
- 서블릿은 JDBC를 이용해 데이터베이스에 접근할 수 있고, 별도로 제작된 자바클래스를 통해, 다양한 기능을 구현할 수 있다.
- 서블릿에서 수행된 결과는 HTML 형식으로 클라이언트에 전달된다.
- javax.servlet.http.HttpServlet을 상속받는 서블릿 동작구조.
서블릿 생명주기**
———- 2017.02.26 추가 ————-
JSP 라이프사이클
-
JSP URL 호출
-
페이지 번역
-
JSP 페이지 컴파일
-
클래스 로드
-
인스턴스 생성
-
jspInit 메서드 호출
-
_jspService 메서드 호출
-
jspDestory 메서드 호출
해당 JSP 페이지가 이미 컴파일되어 있고, 클래스가 로드되어 있고, JSP파일이 변경되지 않았다면, 가장 많은 시간이 소요되는 2~4 프로세스는 생략된다.
서버의 종류에 따라서 서버가 가동될 때 컴파일을 미리 수행하는 Pre compile 옵션이 있다. 이 옵션을 선택하면 서버에 최신 버전을 반영한 이후에 처음 호출되었을 때 응답 시간이 느린 현상을 방지할 수 있다.
하지만 개발시에는 옵션을 설정하면 성능저하가 발생된다.

