본문 바로가기

Server-DB/Spring Boot

자바 웹기술 #1. 서블릿과 JSP 그리고 모델2

자바 웹 기술의 시작 : JSP & Servlet

CGI(common gateway interface)의 한계, 펄이 가진 한계로 인해, 웹 어플리케이션 그리고 Java를 통한 웹 프로그래밍이 대두되었다. 이러한 시기에 Java로 웹을 다루는 것에 대한 많은 고민들이 이어졌고, 그에 따라 나온 것이 Servlet이라는 도구이다. Servlet 그리고 JSP의 차이점은, 서블릿은 Java 안에 HTML이 존재하는 구조이며, JSP는 HTML 안에 Java가 존재하는 구조라는 것이다. 또한 JSP는 서블릿에서 파생되어진 것이기 때문에, JSP를 실행할 경우, 이것이 Servlet(Java) 코드로 변환되고, 이것을 실행한 결과물인 HTML만 최종적으로 브라우저에서 보게 된다.

 

Servlet을 통한 웹 프로그래밍

Servlet에 관해서는 3가지 내용만 기억하면 된다. URL매핑, DB연동, 포워드, 필터가 기본적인 개념이다. URL 매핑은 어노테이션으로 하거나 xml로 하는 방식이 존재한다. 포워드의 경우, 같은 Servlet 코드끼리 데이터를 주고 받을 때 사용하는 개념이다. 필터의 경우, Django의 Form.py와 유사한 기능을 하는데, HTTP 요청/응답 시에 미리 데이터를 정제해주는 것이라 보면 된다. 마지막으로 DB연동의 경우, VO(Value Object)를 통해 DB와 주고받을 데이터를 정의해주고, DB와 통신하는 것은 DAO(Data Access Object)가 담당한다고 보면 된다. 이렇게 VO와 DAO를 사용하는 것을 JDBC(Java Database Connectivity)라 한다.

 

이렇게 Servlet으로 웹 프로그래밍을 하게 되면, 비즈니스로직과 화면생성 기능이 섞여서 코드를 짜게 된다. Java 코드안에 HTML이 존재하는 것이 Servlet이기 때문이다. 우리는 이것을 모델1이라 한다. 웹어플리케이션을 구현하는 것에 있어서 로직과 화면생성을 합쳐서 만들어진 형태를 모델1이라 칭하는 것이다. 헌데 이 방식의 문제점은 비즈니스로직과 화면생성이 섞여져 있기 때문에 코드가 조잡해진다는 것이다.

 

모델1과 달리 모델2는 로직과 화면구현을 분리한다.

이것을 개선하기 위해 비즈니스로직과 화면구현 기능을 분리해야할 필요성이 생겼다. 이것을 모델2라 한다. 비즈니스로직은 Servlet이 담당하고, 화면구현은 JSP가 담당한다. Servlet은 Java 안에 HTML이 있기 때문에 로직을 구현하는데 강점이 있다. 그리고 JSP는 HTML 안에 Java가 있는 것이기 때문에 HTML만으로 아쉬운 화면기능구현에 강점이 있다. 즉 서블릿과 JSP 각각 강점이 있는 부분을 살려서 웹개발을 하자는 것이 모델2이다. 

 

한편으론, 이러한 모델2를 구현하다 보니 반복되는 구성이 나타나게 된다. 크게 3가지 부분이 반복되는데, 프레젠테이션 레이어, 비즈니스로직 레이더, 데이터 액세스 레이어이다. 이러한 반복되는 구성을 하나의 틀로 만드는 시도가 생겼는데 그것이 웹 프레임워크이다.