서블릿(Servlet)과 JSP(Java Sever Pages)

출처 : 

- 서블릿과 JSP 의미 : http://anster.tistory.com/128

- Model1, Model2, Struts 개발 방식의 비교 분석 : http://www.javajigi.net/pages/viewpage.action?pageId=73

 

<서블릿>

  서블릿이란, 요약하자면, java 파일이 WAS(Web Application Server)를 통해 class 파일로 컴파일된 후, 메모리에 적재되어 클라이언트의 HTTP Get, Post 등의 요청을 처리하는 자바 프로그램. (톰캣 위에서 동작하는 java 프로그램.) (웹페이지를 동적으로 생성하는 서버측 프로그램.)

[IMG-1]





[IMG-2]





  톰캣(Tomcat)과 같은 WAS가 java 파일을 컴파일(Compile)해서 class로 만들고 메모리에 올려 servlet 객체를 만들게 되고, servlet 객체는 doPost(), doGet()을 통해 요청에 응답한다.
  [IMG-2]에서 Init, Service, Destroy 등의 이벤트들이 각 시점에 불려지는 것을 볼 수 있다.
  - Init 이벤트는 서블릿이 메모리에 로드될때 실행된다.
  - Service 이벤트는 HTTP Method 타입에 따라 doGet() 또는 doPost()를 호출한다.
  - Destroy는 서블릿이 메모리로부터 언로드되기 전에 실행된다.

  기억해야할 점은, 초기화된 서블릿은 클라이언트의 요청이 있을 때마다 쓰레드(Thread)를 생성하여 병렬적으로 Service를 수행한다는 것이다. 서블릿 객체는 여러개로 생성되지 않는다.



<JSP>

[IMG-3]





[IMG-4]





  서블릿 샘플 소스[IMG-3]를 보면 알겠지만, HTML을 넣기 불편하다. 그래서, [IMG-4]처럼 HTML 내부에 java 코드를 삽입하는 형식인 JSP가 나왔다.
하지만, 로직과 디자인이 한 파일내에 섞여 있어 유지보수하기 어렵다는 단점이 있다. 클래스 단위로 분해해서 객체지향 프로그래밍(Object-Oriented Programming)적으로 코드를 짜기도 어렵다.
  JSP라는 새로운 개발 방법이 나왔지만, 사실 JSP도 내부적으로는 톰캣이 서블릿으로 바꾸어서 돌린다.
  
  JSP 개발 방식으로는 Model 1, Model 2가 있다.


<Model 1>
[IMG-5]





  Model 1은 클라이언트의 요청 발생 시, JSP가 Java Bean(DTO, DAO)을 호출하여 처리한다.
 
  장점으로는
  - 개발 속도가 빠르다.
  - 개발자가 배우기 쉽다.
 
  단점으로는
  - 프리젠테이션 로직과 비즈니스 로직이 혼재되어 있어 코드가 복잡해져 유지보수가 어려워지고 개발자와 디자이너의 분업이 어렵워진다.
 
 
<Model 2>
[IMG-6]





  Model 2는 JSP, 서블릿 양쪽의 장점을 모두 취해 JSP를 뷰(View)로서, 서블릿을 컨트롤러(Controller)로서 사용한다.
  모델(Model) 영역에서는 DTO(Data Type Object), DAO(Data Access Object)를 통해 Mysql DB와 같은 데이터 저장소(Data Storage)에 접근합니다.

 


+ Recent posts