JSP 태그 구조

1. JSP의 특징

항목 내용
정의 JSP(Java Server Page)는 HTML 안에 Java 코드를 삽입해 동적 웹페이지를 생성하는 기술
특징 - 동적 웹 애플리케이션 컴포넌트

실행흐름

[브라우저] → [JSP 요청] → [Tomcat 서버]
↓
JSP 파일 → Servlet(.java)로 자동 변환 → 컴파일(.class)
↓
Servlet이 실행 → HTML 응답 생성 → 브라우저로 전송

코드 변환 예시

<%@ page contentType="text/html; charset=UTF-8" %>
<html>
<body>
<%
  String name = request.getParameter("name");
  out.println("안녕하세요, " + name + "님!");
%>
</body>
</html>
package org.apache.jsp;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;

public final class hello_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent {

  public void _jspService(HttpServletRequest request, HttpServletResponse response)
        throws java.io.IOException, ServletException {

    JspWriter out = null;
    PageContext pageContext = null;

    try {
      response.setContentType("text/html; charset=UTF-8");
      pageContext = _jspxFactory.getPageContext(this, request, response, null, true, 8192, true);
      out = pageContext.getOut(); // out 내장객체 생성

      // HTML 출력
      out.write("<html>\\n");
      out.write("<body>\\n");

      // JSP 코드 부분이 자바 코드로 변환됨
      String name = request.getParameter("name");
      out.println("안녕하세요, " + name + "님!");

      out.write("</body>\\n");
      out.write("</html>\\n");

    } catch (Throwable t) {
      t.printStackTrace();
    } finally {
      if (out != null) out.close();
    }
  }
}

JSP 코드 Servlet 내부로 변환된 형태
<% ... %> Java 코드 그대로 삽입
<%= ... %> out.print( ... ); 로 변환
HTML 태그 out.write("HTML내용"); 으로 변환
내장 객체 (request, response, out) 톰캣이 자동으로 생성해서 전달

2. JSP 태그의 종류

태그 형식 설명 예시
주석 (comments) <%-- ... --%> JSP 내부 주석. 클라이언트(브라우저)에서는 보이지 않음 <%-- 주석입니다 --%>
스크립트릿 (scriptlet) <% ... %> JSP 안에서 Java 코드 작성 가능 <% int sum = a + b; %>
지시자 (directive) <%@ ... %> JSP 페이지 속성을 정의 (import, include 등) <%@ page contentType="text/html; charset=UTF-8" %>
선언자 (declaration) <%! ... %> 멤버 변수, 메서드를 전역 영역에 선언 (클래스 필드 수준) <%! int count = 0; %>
표현식 (expression) <%= ... %> Java 변수나 계산 결과를 HTML에 바로 출력 <%= sum %>

🧠 정리:

<%@ ... %> 태그

JSP 구문 변환 후 Servlet 위치 설명
<%@ page import="..." %> 파일 맨 위의 import 문 JSP가 사용할 자바 클래스 패키지를 추가
<%@ page contentType="..." %> _jspService() 안에서 response.setContentType() 호출 응답 헤더 설정
<%@ page language="java" %> 코드 전반에 적용 (기본값 java) JSP가 자바 코드로 변환됨
<%@ page pageEncoding="UTF-8" %> JSP 파일 인코딩 정보 JSP 컴파일 시 인식용