JSP 처리과정 & 구성 요소

YeHee·2024년 12월 6일

⏰ 2024.12.06 (D+42)

1. JSP의 처리 과정

  • JSP(JavaServer Pages)의 처리 과정은 클라이언트의 요청이 들어오고, 해당 요청을 처리하여 응답을 생성하는 전체 흐름을 설명
  • JSP 페이지는 HTML과 Java 코드를 결합하여 동적으로 웹 페이지를 생성하는 역할

🖥️ JSP 처리 과정 (Execution Flow)

1. 클라이언트의 요청
: 클라이언트가 브라우저에서 JSP 페이지에 대한 HTTP 요청 보내기

2. JSP 변환

  • JSP 파일은 첫 번째 요청 시 서블릿으로 변환
    : 웹 서버의 JSP 컨테이너는 JSP 파일을 서블릿(Java 서블릿 코드)으로 변환
  • 이 변환 과정에서 JSP 페이지의 내용은 서블릿 코드로 바뀌며, .java 파일로 컴파일
    : 이 서블릿은 JSP 페이지가 로드될 때마다 실행

3. 컴파일

  • JSP 파일이 서블릿으로 변환되면, 변환된 .java 파일을 Java 컴파일러가 컴파일하여 .class 파일을 생성
  • .class 파일은 서버에서 실행 가능한 서블릿 코드

4. 서블릿 실행

  • 컴파일된 서블릿 파일이 클라이언트의 요청을 처리
  • 서블릿의 service() 메소드가 호출되어 요청을 처리하고, 응답을 생성
  • 서블릿 내부에서 JSP 코드에 해당하는 Java 코드를 실행하여 동적인 데이터를 처리하거나, HTML 콘텐츠를 생성

5. 응답 반환

  • 서블릿은 요청에 대한 결과를 HTTP 응답으로 생성하여 클라이언트에 반환
  • 클라이언트는 서버에서 받은 HTML을 브라우저에서 렌더링하여 웹 페이지를 표시

6. 후속 요청

  • JSP 페이지는 이후 요청에 대해서는 이미 변환된 서블릿을 실행하여 응답을 처리
  • JSP 파일이 변경되면, 서버는 새로운 서블릿으로 변환하여 실행

⭐ JSP 처리 과정 요약:
: 클라이언트 요청 → JSP 파일 변환 → 서블릿 실행 → 응답 반환 → 클라이언트로 출력

2. JSP의 구성 요소

  • JSP의 주요 구성 요소는 Directive, Scriptlet, Expression, Declaration, Action, JSTL 등
  • 각각의 구성 요소는 JSP 페이지에서 동적인 콘텐츠를 생성하고 처리하는 데 사용

1) Directive (지시자)

✅ 목적

  • JSP 페이지에 대한 설정 정보를 제공하는 태그
  • 페이지의 전반적인 특성을 정의하며, 일반적으로 페이지의 속성이나 전처리 설정을 지정

☑️ 종류

  • page: JSP 페이지의 속성을 설정
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
  • include: 다른 JSP 파일을 포함하는 지시자
<%@ include file="header.jsp" %>
  • taglib: 태그 라이브러리를 정의하여 JSP 페이지에서 사용
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

2) Scriptlet (스크립틀릿)

✅ 목적

  • JSP 페이지 내에서 Java 코드를 삽입하는 데 사용
  • 동적인 콘텐츠를 생성할 때 유용

☑️ 형식

<% // Java 코드 %>

✔️ 예시

<% 
    String user = "Alice";
    out.println("Hello, " + user);
%>
  • 사용 목적: 변수 선언, 조건문, 반복문 등을 처리할 때 사용

3) Expression (표현식)

✅ 목적

  • Java 코드의 값을 직접적으로 출력하는 데 사용
  • out 객체를 통해 클라이언트로 결과를 출력

☑️ 형식

<%= expression %>

✔️ 예시

<%= new java.util.Date() %>
  • 위 코드는 현재 날짜와 시간을 출력

4) Declaration (선언)

✅ 목적

  • JSP 페이지 내에서 변수를 선언하거나 메서드를 정의할 때 사용
  • 선언된 변수나 메서드는 JSP 페이지 전체에서 사용

☑️ 형식

<%! declaration %>

✔️ 예시

<%! private int counter = 0; %>

5) Action (액션 태그)

✅ 목적

  • JSP 페이지에서 서버 측 작업을 수행하는 태그
  • 다른 JSP 페이지를 포함하거나 포워딩하는 등의 기능을 제공

✔️ 예시 1

  • <jsp:include>: 다른 JSP 페이지를 포함
<jsp:include page="footer.jsp" />

✔️ 예시 2

  • <jsp:forward>: 요청을 다른 페이지로 전달
<jsp:forward page="nextPage.jsp" />

6) JSTL (JavaServer Pages Standard Tag Library)

✅ 목적

  • JSP 페이지에서 자주 사용하는 작업을 처리할 수 있도록 도와주는 표준 태그 라이브러리
  • 예를 들어 조건문, 반복문 등을 처리

✔️ 예시 1

  • <c:if>: 조건문 처리
<c:if test="${user == 'Alice'}">
    Hello, Alice!
</c:if>

✔️ 예시 2

  • <c:forEach>: 반복문 처리
<c:forEach var="item" items="${items}">
    <p>${item}</p>
</c:forEach>

3. JSP의 스크립팅 원소 (Scripting Elements)

  • JSP의 스크립팅 원소는 Java 코드를 JSP 페이지 내에 삽입하기 위한 구문을 제공
  • 세 가지 주요 스크립팅 원소는 Scriptlet, Expression, Declaration 이다

1) Scriptlet (스크립틀릿)

  • Java 코드 블록을 삽입할 때 사용

✅ 형식

<% // Java 코드 %>

✔️ 예시

<% 
    int x = 10;
    int y = 20;
    out.println("Sum: " + (x + y));
%>

2) Expression (표현식)

  • Java 표현식을 삽입하여 그 결과를 HTML 페이지에 출력할 때 사용

✅ 형식

<%= expression %>

✔️ 예시

<%= 3 + 5 %>  <!-- 8 출력 -->

3) Declaration (선언)

  • Java 클래스 수준 변수나 메서드를 선언할 때 사용
  • JSP 페이지에서 한 번 선언하면 페이지 내에서 공유

✅ 형식

<%! type variableName; %>

✔️ 예시

<%! private int count = 0; %>

4. JSP의 주석

  • JSP에서 주석을 사용하는 방법은 두 가지가 있습니다: HTML 주석과 JSP 주석

1) HTML 주석

✅ 목적
: JSP 페이지에서 HTML 내에 주석을 작성하는 경우, 클라이언트(브라우저)에 표시되지 ❌

☑️ 형식

<!-- 이 부분은 HTML 주석입니다 -->

2) JSP 주석

✅ 목적

  • JSP 페이지 내에서 사용되는 Java 코드 영역에 주석을 작성할 때 사용
  • 이 주석은 서버에서 처리되지 않으며, 클라이언트에게 노출 ❌

☑️ 형식

<%-- 이 부분은 JSP 주석입니다 --%>

✔️ 예시

<%-- 이 코드는 서버에서만 처리됩니다 --%>

0개의 댓글