본문 바로가기

Dev.BackEnd/Servlet&JSP

2. Servlet 과 JSP에 대한 기본적인 이해


Things 2. Servlet과 JSP에 대한 기본적인 이해

JSP의 장점 / Servlet의 장점 그리고 이것의 활용
JSP는 HTML 중심의 코드 구조이므로 디자인 작업에 바로 사용할 수 있다.
그리고 그 일이 끝나면 다시 프로그램 로직을 고칠 수도 있다.
하지만 프로그램 로직이 복잡할 경우 자바 코드의 논리적 구조를 알아보기가 힘들다.
또한 소스코드가 공개되어 사용자가 소스 코드를 건드려 손상시킬 위험이 존재한다.

Servlet은 복잡한 프로그램 로직 구현에 적합하다.
컴파일 결과만 설치해도 되므로 소스 코드를 보호할 수도 있다.
하지만 HTML문서 디자인이 바뀔 때마다 서블릿 클래스를 수정/컴파일/설치해야 하고,
웹 서버를 재가동하는 일을 되풀이해야 한다.

그러므로
프로그램의 복잡한 로직을 구사하는 코드는 서블릿 클래스 안에 기술하고,
프로그램의 결과를 보여주는 HTML중심의 코드만 JSP페이지 안에 기술하는 것이 좋다.


서블릿이란?
서블릿 클래스로부터 만들어진 객체를 의미한다.
하지만 모든 서블릿 객체를 서블릿이라고 할 수는 없다.
웹 컨테이너는 서가 서블릿 클래스를 가지고 서블릿 객체를 만든 다음에
그 객체를 초기화해서 웹 서비스를 할 수 있는 상태로 만들어야 서블릿이라고 할 수 있다.
서블릿 클래스가 인스턴스화 되어 서블릿 객체가 되고 이 서블릿 객체가 초기화되어 서블릿이 되는 것이다.
프로그래머가 해야 할 일은 정해진 규칙에 따라 서블릿 클래스를 작성하고,
컴파일하여 웹 컨테이너에 설치하고, 등록하면 된다.

모든 웹 서버는 멀티스레드 방식으로 작동한다.
멀티스레드란 프로그램의 실행 흐름이 여러 갈래로 나눠져서 동시에 실행되는 것을 말한다.
반대로 싱글스레드 방식도 있다.
멀티 스레드 모델에서는 필요한 서블릿의 수가 적기 때문에
서블릿을 만들기 위해 필요한 시스템 자원과 서블릿이 차지하는 메모리를 절약할 수 있다.

하지만 여러 스레드가 동시에 한 서블릿을 사용하기 때문에 데이터 공유 문제에 신경을 써야 한다.
반면 싱글 스레드 모델에서는 데이터 공유 문제를 걱정할 필요가 없지만 시스템 자원과 메모리가 더 많이 사용된다.

멀티 스레드 모델의 위와 같은 단점으로 인해 인스턴수 변수를 선언해서 사용하면 안된다.


JSP(Java Server Page)란?

MVC 아키텍쳐에 대한 설명을 하면서 View를 설명하였는데, 이 뷰 부분을 맡고 있는 것이 JSP이다.

JSP말고도 요즘 프레임워크들은 다른 템플릿 엔진(Template Engine)을 사용한다.

말 그대로 html 문서에 자바코드가 들어가 있는 형식의 파일이다.

logic을 최소화하는 방향으로 코드를 작성해야 한다.



-..-