Servlet(서블릿) & JSP(Java Server Pages)

박영준·2024년 6월 18일
0

Java

목록 보기
112/112

1. 비교

1) Servlet

  • 서블릿도 결국엔, 'Client의 요청을 처리하고 그 결과를 반환하는' servlet 클래스의 구현 규칙을 지킨 Java 프로그램일 뿐이다.

    • Server 에서 웹 페이지 등...을 동적으로 생성 or 데이터 처리를 위해 Java 로 작성된 프로그램
    • Java 언어로 웹 어플리케이션을 더 쉽게 개발하기 위해 만든 API(라이브러리, 클래스 등...)를 상속/구현해서 만든 클래스
  • Java 코드 안에 html 태그가 삽입

    • 확장자 : .java
  • Java 코드로 구현/컴파일/배포 필요 (코드 수정 시, 재컴파일/재배포 필요)

  • html 태그는 문자열("")스크림으로 처리 필요

Servlet 의 단점/불편한 점

  • 서블릿은 웹 프로그래밍이 가능하나, Java 에 대한 지식이 필요
  • UI(화면 인터페이스) 구성을 위해 너무 많은 코드가 필요해짐

2) JSP

  • html 내부에 Java 코드를 삽입하는 형식으로 등장

  • Servlet 을 작성하지 않고 간편하게 웹 프로그래밍을 하기 위해 등장한 서블릿 기반의 스크립트 기술
    (서블릿에 비해 배우기 쉬움)

  • Java 코드를 <% %> 스크립트릿 태그 안에 작성 필요

주의!
JSP 는 Server단에서 모두 처리되어서, 최종적으로 클라이언트에게 html 형식으로 전달하는 것
따라서, Client단에서 동적 처리를 하고 싶다면 JavaScript를 통해 처리해줘야 함

정적 VS 동적

  • 정적 페이지
    • 항상 같은 것을 보여주는 페이지
  • 동적 페이지
    • 동적 콘텐츠: 아주 짧은 시간 간격으로(시시각각) 바뀌는 정보들
    • 동적 데이터를 포함하는 페이지

2. 현재 사용법

사실 Servlet 과 JSP 는 만드는 방법에 차이가 있을 뿐, 동일한 역할을 한다.
따라서 현재의 사용법은 다음과 같다.

웹 어플리케이션 구조 中

Jsp

  • html 태그 사용이 용이 + Java 코드 사용이 불편하기 떄문에
  • View(Client) 층을 담당 (사용자에게 결과를 보여줌)

Servlet

  • Java 코드 작성이 용이하기 때문에
  • Controller 층을 담당 (화면과 통신해서 자료를 받아 가공 + 가공한 자료를 화면에 반환)

즉, 보여지는 부분을 JSP가 담당하고 & 다른 자바 클래스에 데이터를 넘겨주는 부분을 Servlet이 담당하게 된다.
이런 구조 덕분에 유지보수가 용이해졌다.

3. 흐름

JSP ---> Servlet화(work 디렉토리) ---> class 파일 ---> 실행

  1. 사용자의 요청(request)를 웹 서버가 받음

  2. 웹 서버는 서블릿 컨테이너에 해당 요청을 전달

  3. 서블릿 컨테이너는 HTTP Reqeust, HTTP Response 객체를 만들어서, 서블릿 doPost()/doGet() 메소드 中 하나를 호출

  4. JSP 를 사용해서 비지니스/프레젠테이션 로직을 분리.
    이때, 서블릿은 JSP에게 데이터 제어(입력/수정 등...)를 넘겨서 프레젠테이션 로직을 수행한 후 서블릿 컨테이너에게 response 를 전달

  5. 해당 response(결과물)이 컴파일되고 Java 파일을 통해서 .class 파일이 만들어지고, 두 로직이 결합돼서 클래스화됨


참고: JSP와 Servlet(서블릿) 비교
참고: [JSP] JSP (JavaServer Pages ) 란 무엇인가?
참고: JSP 소개
참고: [JSP] JSP파일 기본 구조 + page지시어
참고: [JSP] include 지시어

profile
개발자로 거듭나기!

0개의 댓글