본문 바로가기
Back-end/Spring MVC 개념

1. Java 웹 기술의 역사

by devraphy 2022. 2. 22.

0. 개요

- 이번 포스팅에서는 Java 웹 기술의 변천사를 알아보려고 한다.

- Java 웹 기술이 왜 이러한 방식으로 발전해왔는가에 대해 초점을 두고 알아보자. 


1. Java 웹 기술의 역사 

a) Servlet(1997)

- HTTP request/response를 객체로 만들어, 개발자가 쉽게 데이터를 사용할 수 있도록 하였다.

- 그러나 데이터를 전달하는 형식에 있어서 HTML을 반환하기가 불편했다. 

  → 일일이 return 값에 HTML을 작성해야 했다. ex) return "<div> 안녕하세요. </div>";

b) JSP(1999)

- Servlet의 단점을 보완하는 기술로, HTML 내부에 Java를 작성하는 방식이다.

- Java를 사용할 수 있다는 특징으로, HTML 파일 내부에 비즈니스 로직까지 작성했다.

- HTML이 담당하는 역할이 너무 많아져서 유지보수의 어려움이 발생했다. 

c) Servlet + JSP

- 최초의 MVC 형태의 구조를 갖춘 방식으로, 두 가지 기술을 함께 사용한 것이다.

- 비즈니스 로직을 처리하는 부분과 화면(HTML)을 처리하는 부분을 분리한 구조를 가진다.

d) MVC 프레임워크 경쟁시대(2000년 초 ~ 2010년 초)

- MVC 디자인 패턴이 유행을 하면서 다양한 프레임워크가 등장한 시기

- 프레임 워크의 등장으로 인해 MVC 구조가 자동화되었고, MVC에서 사용할 수 있는 다양한 web 기술이 등장하였다.

- 대표적으로 스트럿츠, Spring MVC, 웹 워크 등이 있다.

e) Annotaion 기반의 Spring MVC 등장(현대)

- Spring이 제시한 MVC 개발 방식으로, 어노테이션을 이용한 MVC 자동화 기술이다.

- 이로 인해 Spring이 프레임워크 시장의 우위를 가져가면서 MVC 프레임워크 경쟁의 종점을 찍는다.

f) Spring Boot의 등장(현대)

- WAS를 내장한 형태의 프레임 워크로, 빌드와 배포의 단순화를 제공한다.

- 기존의 Spring은 웹 서버의 세부적인 설정이 장점이자 단점이었다.

- 웹 서비스의 구조가 표준화되면서, 이를 프레임워크로 제공한 형태가 Spring Boot다.

- WAS를 내장하고 기본적인 웹 서비스의 설정을 자동화 및 구조화하였다.

- Spring을 사용하기 편리하게 만들었다. 


2. Java view template

- 비즈니스 로직과 view를 처리하는 부분이 나뉘면서(MVC) 다양한 기술이 등장하였다.

- view template은 서버 측에서 HTML을 동적으로 생성할 수 있도록 하는 기술이다.

- 대표적인 view template 몇 가지의 특징에 대해서 알아보도록 하자.

a) JSP

- HTML 내부에 Java를 사용할 수 있도록 한 기술 

- 속도가 느리며 기능이 부족하여, 현재 Spring에서는 비 권장되는 기술이다.

b) Freemarker, Velocity

- JSP의 속도 문제를 해결한 매우 빠른 view template이다.

- 다양한 기능을 갖고 있지만, 지속적인 발전이 없다는 점이 아쉬운 기술이다.

c) Thymeleaf

- Spring이 사용을 권장하는 view template이다.

- Spring MVC와 강력한 통합 기능을 제공한다.

- Thymeleaf는 natural template이라는 특징을 가진다. 

  → HTML을 기반으로 두고, 데이터가 삽입되는 부분만 변경되는 구조

  → 만약 데이터가 삽입되어야 하는 부분에 데이터가 없다고 하더라도, HTML을 랜더링 하는데 문제가 없다.

'Back-end > Spring MVC 개념' 카테고리의 다른 글

5. JSP의 등장  (0) 2022.02.28
4. Servlet - 요청/응답 처리방법  (0) 2022.02.25
3. Servlet - 기본 사용 방법  (0) 2022.02.24
2. Servlet의 등장  (0) 2022.02.23
0. Web 서비스의 구조  (0) 2022.02.21

댓글