Servlet과 JSP

웅평·2024년 5월 13일
0

Servlet과 JSP

Servlet과 JSP 모두 동적 웹페이지(Dynamic Web Page)를 만들거나 데이터 처리를 수행하기 위해 사용되는 웹 어플리케이션 프로그래밍 기술이다.

Servlet은 Tomcat이 이해할수 있는 순수 Java 코드로만 이루어진 웹서버용 클래스로, 동적 웹페이지를 만들 때 java 코드 안에 HTML 태그가 삽입되는 구조이다.

반면 JSP는 HTML 코드 속에 자바 코드가 들어가는 구조의 스크립트 언어라고 할 수 있다.

역사

  • 웹의 역사와 흐름에 따라 각 개념이 등장한 순서 : CGI → Servlet → JSP

CGI의 등장

  • 일반적으로 웹서버는 정적인 페이지만을 제공한다. 그렇기 때문에 사용자의 요청을 받아 정보를 동적으로 생성하고, 이를 클라이언트로 다시 보내주는 것이 불가능했다.
  • 따라서 서버에서 다른 프로그램을 불러내고, 그 프로그램
    처리 결과를 보내줄 수 있는 인터페이스가 필요했다. 이것이 CGI다.

CGI의 한계와 Servlet의 등장

  • CGI 프로그램은 서버에서 프로세스 단위로 실행이 된다. 따라서 사용자의 요청이 많을때 서버에 부하가 크게 가게 되었고 프로세스 보다 더 작은 단위로 실행하는것이 필요했다.
  • 이에 따라 스레드 단위로 실행하여 서버 부하를 줄이고 성능을 개선한 Servlet이 등장했다.

Servlet의 한계와 JSP의 등장

  • Servlet은 Tomcat이 이해할 수 있는 순수 Java 코드로만 이루어진 웹서버용 클래스이다.
  • 서블릿을 이용하면 웹 프로그래밍이 가능하지만, 자바에 대한 지식이 필요하고, 화면 인터페이스 구현에 너무 많은 코드를 필요로 하는 등 비효율적인 측면이 있었다.
  • 예를 들어 서블릿만 사용하여 사용자가 요청한 웹페이지를 보여주려면 out 객체의 print() 메소드를 이용하여 HTML 문서를 작성해야 하는데, 이는 추가/수정을 어렵게 하고 가독성도 떨어지는 등, 다른 서버사이드 언어보다 불편하다.
  • 또한 Java클래스이기 때문에 테스트하기 위해서는 항상 빌드를 다시 하여 확인해야 했고, 이런 한계를 보완하기 위해 등장한 것이 서블릿 기반의 서버 스크립트 기술 JSP였다.
    (스크립트 기술이란 ASP, PHP처럼 미리 약속된 규정에 따라 간단한 키워드를 조합하여 입력하면, 실행 시점에 각각의 키워드에 매핑이 되어 있는 어떤 코드로 변환 후에 실행되는 형태이다.)

JSP가 서블릿으로 변환되어 실행되는 과정
1. 클라이언트에서 서비스가 요청되면 JSP의 실행을 요구한다.
2. JSP는 웹어플리케이션 서버(Tomcat)의 서블릿 컨테이너에서 서블릿 원시코드로 변환된다.
3. 서블릿 원시코드는 바로 컴파일된 후 실행되어 결과를 HTML 형태로 클라이언트에 돌려준다.

Servlet과 JSP의 차이

Servlet

  • Java 코드 안에 HTML 코드 (하나의 클래스)
  • data processing(Controller)에 좋다.
  • 즉 DB와의 통신, Business Logic 호출, 데이터를 읽고 확인하는 작업 등에 유용하다.
  • Servlet이 수정된 경우 Java 코드를 컴파일(.class 파일 생성)한 후 동적인 페이지를 처리하기 때문에 전체 코드를 업데이트하고 다시 컴파일한 후 재배포하는 작업이 필요하다. (개발 생산성 저하)

JSP

  • HTML 코드 안에 Java 코드
  • presentation(View)에 좋다.
  • 즉 요청 결과를 나타내는 HTML 작성하는데 유용하다.
  • JSP가 수정된 경우 재배포할 필요가 없이 WAS가 알아서 처리한다. (쉬운 배포)

JSP와 Servlet의 관계

MVC (모델 - 뷰 - 컨트롤러) : 사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴

JSP만을 이용하는 모델

  • JSP가 사용자의 요청을 받아 Java Bean(DTO, DAO)을 호출하여 적절한 동적인 페이지를 생성한다.
  • 동작 과정
    - JSP로 작성된 프로그램은 내부적으로 WAS에서 Servlet 파일로 변환
    - JSP 태그를 분해하고 추출하여 다시 순수한 HTML 웹 페이지로 변환
    - 클라이언트로 응답
  • 특징
    - 개발 속도가 빠르다.
    - 배우기 쉽다.
    - 프레젠테이션 로직(View)과 비즈니스 로직(Controller)이 혼재한다.
    - JSP 코드가 복잡해져 유지 보수가 어려워진다.

JSP와 Servlet을 모두 이용하는 모델 (MVC Architecture)

  • JSP와 Servlet을 모두 사용하여 프레젠테이션 로직(View)과 비즈니스 로직(Controller)을 분리한다.
  • View(보여지는 부분)는 HTML이 중심이 되는 JSP를 사용
  • Controller(다른 자바 클래스에 데이터를 넘겨주는 부분)는 Java 코드가 중심이 되는 Servlet을 사용
  • Model은 Java Beans로, DTO와 DAO를 통해 Mysql과 같은 Data Storage에 접근

MVC 모델은 View는 JSP, Controller는 Servlet으로 사용한다.
JSP만 이용한 개발(Model1)방식에서 유지보수 측면의 한계를 느끼면서, 서블릿과 JSP를 각각 Controller와 View의 역할로 나누어 사용하는 개발 방식(Model2) 방식이 등장했다.
보여지는 부분은 HTML이 중심이 되는 JSP, 다른 자바클래스에게 데이터를 넘겨주는 부분은 Java코드가 중심이 되는 Servlet이 담당하며, 이를 통해 유지보수가 용이해졌다.

Servlet는 DB연동, JSP는 화면 로직 구현하는데 쓰는게 좋다.

출처
https://today-loui.tistory.com/60
https://velog.io/@effirin/Servlet%EA%B3%BC-JSP%EC%97%90-%EB%8C%80%ED%95%B4

0개의 댓글