'하드코딩'에 해당되는 글 1건

  1. 2025.02.25 [Jsp] <% %>, <%! %>, <%@ %> 정리
Java&Jsp&Servlet2025. 2. 25. 10:58

오랜만에 하드코딩 할려니 모든것이 혼란 스럽다. 정리가 필요하다.

구분 사용법 설명
<% %> 스크립틀릿 (Scriptlet) JSP에서 Java 코드 실행 (service() 메서드 내부)
<%! %> 선언문 (Declaration) JSP의 멤버 변수 또는 메서드 선언 (service() 메서드 외부)
<%@ %> 디렉티브 (Directive) JSP 페이지의 설정 (page, include, taglib)

 

<% %> (스크립틀릿, Scriptlet)

  • JSP 내부에서 Java 코드를 실행할 때 사용됩니다.
  • JSP가 실행될 때 서블릿 코드로 변환되며, service() 메서드 안에 들어갑니다.
  • JSP 페이지 내에서 동적인 처리를 할 때 사용됩니다.
<%
    String message = "Hello, JSP!";
    out.println(message);
%>

변환된 서블릿 코드

public void _jspService(HttpServletRequest request, HttpServletResponse response) throws IOException {
    String message = "Hello, JSP!";
    out.println(message);
}

 

<%! %> (선언문, Declaration)

  • JSP 페이지에서 멤버 변수 또는 메서드를 선언할 때 사용됩니다.
  • service() 메서드 바깥에서 선언되므로, 전역 변수 또는 메서드 정의가 가능합니다.
<%! 
    int count = 0;  // 멤버 변수 선언
    public int getNextCount() { 
        return ++count; 
    }
%>

변환된 서블릿 코드

public class MyJspServlet extends HttpServlet {
    int count = 0;  // 클래스 멤버 변수

    public int getNextCount() {
        return ++count;
    }

    public void _jspService(HttpServletRequest request, HttpServletResponse response) throws IOException {
        out.println("다음 번호: " + getNextCount());
    }
}

 

<%@ %> (디렉티브, Directive)

  • JSP 페이지의 설정 및 서블릿 변환 방식을 정의하는 데 사용됩니다.
  • JSP 페이지에 대한 메타정보를 지정합니다.
  • 주요 디렉티브:
    • page: JSP 페이지의 속성 설정 (예: 인코딩, 오류 페이지 등)
    • include: 다른 JSP 파일 포함
    • taglib: 커스텀 태그 라이브러리 선언
<%@ page contentType="text/html; charset=UTF-8" language="java" %>
<%@ page import="java.util.Date" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:forEach var="i" begin="1" end="5">
    <p>번호: ${i}</p>
</c:forEach>

 

정리가 깔끔하죠! 맞습니다. ChatGPT 님이 정리해 주셨습니다.

Posted by 비니미니파파