안녕하세요! JSP(JavaServer Pages)는 HTML 페이지에 자바 코드를 넣어 동적인 웹 페이지를 만드는 기술입니다. 그중에서도 스크립틀릿(Scriptlet)과 내장 객체는 JSP의 가장 기본적인 문법이자 핵심 요소입니다. 이번 포스팅에서는 이 두 가지 개념을 쉽고 명확하게 정리해 보겠습니다.
스크립틀릿은 JSP 페이지 안에 자바 코드를 작성할 수 있는 영역을 의미합니다. 마치 HTML 파일 안에 마법처럼 자바 코드를 삽입하는 것과 같죠. 웹 페이지의 특정 부분만 동적으로 변경하고 싶을 때 유용하게 사용됩니다.
스크립틀릿에는 크게 세 가지 종류가 있습니다.
<% ... %><%
int sum = 0;
for (int i = 1; i <= 10; i++) {
sum += i;
}
// out 내장 객체를 사용하여 HTML로 직접 출력
out.println("<h3>1부터 10까지의 합은 " + sum + "입니다.</h3>");
%>이 코드는 웹 페이지에 "1부터 10까지의 합은 55입니다."라는 문구를 출력합니다.<%= ... %>out.println()을 사용하는 것보다 훨씬 간결하게 값을 표현할 때 사용됩니다.<%
String userName = "키요"; // 자바 변수 선언
%>
<h1>안녕하세요, <%= userName %>님!</h1>위 코드는 웹 브라우저에서 <h1>안녕하세요, 키요님!</h1>으로 출력됩니다. 데이터나 변수 값을 HTML 태그 안에 바로 삽입할 때 매우 유용합니다.<%! ... %>역할: JSP 페이지 내에서 사용될 전역 변수(멤버 변수)나 메서드(함수)를 선언하는 영역입니다. 여기에 선언된 변수와 메서드는 해당 JSP 페이지가 서블릿으로 변환될 때 클래스 레벨의 멤버로 선언되어, 페이지 내 어디서든 여러 번 호출하고 사용할 수 있습니다.
특징: JSP 파일이 최초로 요청될 때 단 한 번만 초기화되며, 재사용성이 높습니다.
사용 예:
<%!
// 전역으로 사용될 메서드 선언
public int multiply(int a, int b) {
return a * b;
}
// 전역 변수 선언 (권장되지는 않음. 동시성 문제 발생 가능)
private String welcomeMessage = "어서오세요!";
%>
<p><%= welcomeMessage %></p>
<p>5와 3의 곱은 <%= multiply(5, 3) %> 입니다.</p>
multiply 메서드는 페이지 내 어떤 스크립틀릿이나 표현식에서도 호출하여 사용할 수 있습니다.
JSP 내장 객체는 개발자가 별도로 선언하거나 생성할 필요 없이, JSP 페이지 내에서 바로 사용할 수 있도록 미리 준비된 객체들입니다. JSP가 서블릿으로 변환될 때 자동으로 생성되어 개발자의 편의를 돕습니다. 마치 주방에 들어갔더니 이미 신선한 식재료와 최신 조리 도구가 준비되어 있는 것과 같죠.
가장 많이 사용되는 핵심 내장 객체 5가지를 소개합니다. (자세한 내용은 이전 글에서 다뤘으니 간단하게!)
request: 클라이언트의 요청 정보를 담고 있는 객체입니다. 웹 페이지에서 사용자가 입력한 값(예: request.getParameter("name"))이나 HTTP 헤더 정보 등을 얻을 때 사용합니다.response: 클라이언트에게 보낼 응답을 생성하는 객체입니다. 웹 페이지를 다른 곳으로 이동시키거나(예: response.sendRedirect("url")), HTTP 응답 헤더를 설정할 때 사용됩니다.session: 클라이언트의 로그인 상태와 같이 사용자와 관련된 상태 정보를 웹 브라우저가 닫히거나 세션이 만료될 때까지 유지하는 객체입니다. (예: session.setAttribute("user_id", "admin"))application: 웹 애플리케이션 전체(모든 사용자)에서 공유되는 정보를 관리하는 객체입니다. 웹사이트 방문자 수처럼 모든 사용자에게 공통으로 적용되는 데이터를 저장할 때 주로 사용합니다.out: JSP 페이지에 내용을 출력하기 위한 객체입니다. HTML 콘텐츠를 직접 웹 브라우저로 전송합니다. (예: out.println("Hello, JSP!"))스크립틀릿은 JSP의 강력한 기능이지만, HTML 코드와 자바 코드가 뒤섞여 있어 가독성이 떨어지고 유지보수가 어렵다는 단점이 있습니다. 이런 코드를 "스파게티 코드"라고 부르기도 합니다.
이러한 단점 때문에 현대 웹 개발에서는 스크립틀릿 사용을 지양하고, 코드를 더욱 깔끔하고 분리하여 관리하는 방식을 선호합니다. 다음 포스팅에서 다룰 액션 태그(Action Tag)나 JSTL(JSP Standard Tag Library)과 같은 기술을 통해 자바 로직을 JSP 페이지에서 최소화하고, 표현 로직에 집중하는 방향으로 발전하고 있습니다.
이해를 돕기 위한 스크립틀릿 학습은 중요하지만, 실제 프로젝트에서는 더욱 효율적이고 유지보수가 용이한 방법을 사용하는 것이 좋습니다!
완벽하구만! 스크립틀릿 3종 세트랑 내장 객체까지 딱 핵심만 짚어서 정리했네. 특히 '스크립틀릿의 한계' 언급하고 다음 주제로 넘어가는 흐름이 아주 매끄럽다. 이거 벨로그 올리면 반응 좋을 걸? 꾸준히 하는 모습 멋있다 키요! 👍