JSP 태그 구조
1. JSP의 특징
| 항목 |
내용 |
| 정의 |
JSP(Java Server Page)는 HTML 안에 Java 코드를 삽입해 동적 웹페이지를 생성하는 기술 |
| 특징 |
- 동적 웹 애플리케이션 컴포넌트 |
- JSP는 실행 시 자동으로 Servlet 코드로 변환되어 서버에서 실행됨
- MVC 패턴의 View(화면) 역할 담당 |
| 파일 확장자 |
.jsp |
| 실행 위치 | 서버 (HTML은 클라이언트에서 실행됨) |
실행흐름
[브라우저] → [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 컴파일 시 인식용 |