JSP/JSP 기초지식

웹과 JSP 프래그래밍의 이해

별초롱언니 2025. 5. 20. 11:19

1. 인터넷과 웹의 개요 

인터넷과 웹의 개념을 살펴보고 웹을 동작 원리를 학습합니다. 

 

웹의 동작 원리

웹은 기본적으로 클라이언트/서버 방식으로 동작합니다. 

클라이언트가 특정 페이지를 웹 서버에 요청하면 이를 처리한 후 그 결과를 클아이언트에게 보내어 응답하는 것입니다. 

 

2. 정적 웹 페이지와 동적 웹 페이지 

웹 페이지는 크게 정적페이지와 동적 페이지로 나눌 수 있습니다. 정적 웹 페이지는 컴퓨터에 저장된 텍스트 파일을 그대로 보는 것이고, 동적 웹페이지는 저장된 내용을 다른 변수로 가공 처리하여 보는 것입니다. 정적 웹페이지는 html과 같은 웹 언어로 작성하고 동적 웹페이지는 php,asp,jsp와 같은 웹 언어로 작성합니다. 

 

3. 서블릿과 JSP

서블릿이란 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버 측 웹 프로그래밍을 말하며 서블릿은 웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종입니다. 

 

서블릿은 효율적이고 확장 가능합니다. 

서블릿 (미리 생성된 객체)이 웹 서버에 배포되고 로드되면 클라이언트의 요청을 즉시 이행하기 시작할 수 있습니다. 

웹 서버는 경량 스레드를 사용하여 서블릿을 호출하므로 자바의 멀티스레딩 기능을 사용하여 여러 클라이언트 요청을 동시에 서블릿에서 채울 수 있습니다. 서버가 모든 클라이언트 요청에 대해 새로운 프로세스를 시작해야 하는 CGI에 비해 서블릿은 효율적이고 확장 가능합니다. 

 

4. 서블릿과 JSP의 동작 과정

💡 차이점 요약

항목 서블릿(Servlet)  JSP
작성 방식 Java 코드로 작성 HTML에 Java 코드 삽입
목적 로직 중심 화면(View) 중심
추천 용도 비즈니스 로직 사용자 인터페이스
유지보수 복잡해질 수 있음 비교적 쉬움

 

📦 Servlet 동작 과정

  1. 클라이언트 요청 (HTTP)
    → 사용자가 URL 입력 또는 버튼 클릭
  2. 웹 서버가 Servlet 호출
    → web.xml 또는 @WebServlet으로 등록된 Servlet 클래스 실행
  3. Servlet 실행
    → doGet() / doPost() 메서드 안에서 요청 처리
  4. 응답 생성 (HTML 등)
    → Java 코드로 직접 HTML 생성 (PrintWriter 사용 등)
  5. 클라이언트에 응답 전송

📄 JSP 동작 과정

  1. 클라이언트 요청 (HTTP)
    → xxx.jsp 요청
  2. 웹 서버가 JSP를 서블릿으로 변환
    → .jsp → .java(Servlet) → .class (컴파일)
  3. Servlet처럼 동작
    → 변환된 서블릿 클래스가 실행되고 결과 생성
  4. 응답 생성 (주로 HTML)
    → JSP 안의 HTML + Java 코드 실행 결과
  5. 클라이언트에 응답 전송

💡 비유로 정리하면:

  • Servlet: Java로 HTML 직접 그리는 느낌 (→ 번거롭고 복잡)
  • JSP: HTML 쓰면서 중간에 Java 끼워넣는 느낌 (→ 직관적이고 편함)

5. 서블릿과 JSP 생명 주기 

✅ Servlet의 생명주기

  1. 서블릿 객체 생성 (init() 호출)
    • 최초 요청 시, 딱 한 번 생성됨
    • init(ServletConfig config) 호출로 초기화
  2. 요청 처리 (service() → doGet() / doPost() 호출)
    • 클라이언트 요청마다 실행됨
    • 요청 방식에 따라 doGet() 또는 doPost() 자동 호출
  3. 서블릿 종료 (destroy() 호출)
    • 서버 종료 시 또는 서블릿이 제거될 때 실행
    • 리소스 정리 용도

🌀 이 순서는 Servlet이 살아있는 동안 반복됨 (요청 → 응답 반복)

✅ JSP의 생명주기

  1. JSP 파일 → 서블릿으로 변환
    • 최초 요청 시 한 번: .jsp → .java (Servlet) → .class
  2. 서블릿 객체 생성 (jspInit() 호출)
    • 한 번만 실행됨 (초기화 용도)
  3. 요청 처리 (_jspService() 호출)
    • 매 요청마다 실행됨 (JSP에 작성한 코드들이 이 안에 들어감)
  4. JSP 종료 (jspDestroy() 호출)
    • JSP가 언로드될 때 실행 (리소스 정리)

 

🔁 비교 요약표

단계 Servlet JSP
초기화 init() jspInit()
요청 처리 service() → doXXX() _jspService()
종료 destroy() jspDestroy()
최초 변환 여부 ❌ 이미 자바 클래스 ✅ JSP → Servlet → 클래스 변환