본문 바로가기
Road to Developer/edwith풀스택웹개발자

8. Servlet? JSP? Model1, Model2?

by 구월에작은섬 2018. 6. 25.

자바 서블릿(Java Servlet)은 자바를 사용하여 웹페이지를 동적으로 생성하는 서버측 프로그램 혹은 그 사양을 말하며, 흔히 "서블릿"이라 불린다. 자바 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다. 서블릿은 JSP와 비슷한 점이 있지만, JSP가 HTML 문서 안에 Java 코드를 포함하고 있는 반면, 서블릿은 자바 코드 안에 HTML을 포함하고 있다는 차이점이 있다.

자바 서블릿은 자바 EE 사양의 일부분으로, 주로 이 기능을 이용하여 쇼핑몰이나 온라인 뱅킹 등의 다양한 웹 시스템이 구현되고 있다. 또한, 자바 서블릿은 자바로 구현되므로 다양한 플랫폼에서 동작한다.



JSP(Java Server Page)는 마이크로소프트의 ASP가 인기를 끌자 ASP에 대한 자바측 대응 기술로 등장했다. JSP는 서블릿 기반 기술이다. 엄밀히 말해서, JSP 파일이 클라이언트의 요청에 응답하는 건 아니다. 톰캣과 같은 서블릿 컨테이너는 JSP를 재료로 서블릿(.class)을 만들고, 이 서블릿이 클라이언트의 요청에 응답한다. 서블릿은 동적으로 HTML 페이지를 만들어주는 기술이지만 자바 코드와 HTML 코드를 함께 작성하는 데에 어려움이 있다. 서블릿은 HTML 디자인을 자바 문자열로 만들어서 출력스트림의 메서드에 인자로 전달해야만 한다. 이것은 HTML 디자인이 자바 코드에 삽입된다는 의미이다. JSP에선 이와 반대다. 자바 코드가 HTML 디자인에 삽입된다. 이는 JSP가 자바 코드와 HTML 디자인을 함께 작성하는 데 있어 서블릿보다 쉽게 작성할 수 있음을 의미한다. JSP는 복잡한 디자인을 가진, 동적으로 만들어지는 HTML을 사용자에게 보여줘야 할 때 유용한 기술이다.



서블릿 초기화의 과정. 

WAS(아파치 톰캣)가 java 파일을 컴파일해 Class로 만들고 메모리에 올려 Servelt 객체로 만들고

이 Servelet 객체는 doPost, doGet을 통해 요청에 응답한다.


init, service , destroy 이런 콜백이 각 시점에 불린다. 

init은 서블릿이 메모리에 로드될 때 실행된다. 

service는 http method타입에 따라 doGet / doPost를 호출한다. 

destroy는 언로드 되기전에 수행되는 콜백이다.

초기화된 서블릿이 클라이언트의 요청이 있을 때 마다 스레드를 생성해서 병렬적으로 service를 수행한다.
서블릿 객체는 여러개 생성되지 않는다.


Model 1 

JSP에서 사용자가 요청해서 JavaBean(DAO,DTO)을 호출해서 처리한다.

특징: 개발속도 빠름, 배우기쉬움, 프레젠테이션 로직과 비즈니스 로직이 혼재, JSP코드가 복잡해서 유지보수 힘듦.


*DAO,DTO 

DAO(Data Access Object)는 Database의 data에 접근을 위한 객체입니다. Database에 접근을 하기위한 로직과 비즈니스 로직을 분리하기 위해서 사용을 합니다

DTO(Data Transfer Object)는 VO(Value Object)로 바꿔 말할 수 있는데 계층간 데이터 교환을 위한 자바빈즈를 말합니다.

DAO,DTO 내용을 더 알아보고 싶으면 : https://jungwoon.github.io/common%20sense/2017/11/16/DAO-VO-DTO/



Model 2

단순히 JSP만, Servlet만 사용하는 것이 아니라 두개의 장단점을 모두 취해 view는 JSP로, Contoller는 Servlet을 사용한 것이 Model2.

보여지는 부분은 HTML이 중심이 되는 JSP, 다른 자바 클래스에 데이터를 넘겨주는 부분은 JAVA 코드가 중심이 되는 Servlet이 담당.

Model영역에서는 DTO,DAO같은 자바빈즈를 통해 Mysql같은 Database에 접근한다.

정리하자면, 자바 서블릿이라는 동적 웹페이지 기술이 HTML 작성에 불편한 점이 있어 JSP라는 기술을 만들었는데 화면을 표시하는 페이지는 JSP로 복잡한 프로그래밍이 있다면 Servlet으로 하는식으로 Model1 / Model2 방식을 통해 JSP/Servlet을 적절하게 사용하고있다. 


출처


http://anster.tistory.com/128

http://www.java-school.net/jsp/JSP


반응형