JSP는 HTML 코드 내에 Java 코드를 삽입할 수 있도록 여러 가지 특별한 태그를 제공합니다. 이 태그들을 통해 Java 코드를 작성하고, 동적인 콘텐츠를 HTML에 삽입할 수 있습니다.
<% ... %>
스크립트릿은 JSP에서 Java 코드를 작성할 때 사용되는 기본 문법입니다. <%와 %> 사이에 Java 코드를 삽입하여, 서버에서 실행할 수 있습니다.
<%
String name = "홍길동";
out.println("안녕하세요, " + name + "님!");
%>
<%= ... %>
표현식은 값을 출력할 때 사용하며, 표현식 내의 값을 HTML로 바로 출력합니다. out.println()
메서드 없이 간단하게 사용할 수 있습니다.
<p>현재 시간: <%= new java.util.Date() %></p>
<%! ... %>
선언문은 JSP 페이지에서 사용될 메서드나 변수를 선언할 때 사용합니다. 선언된 변수나 메서드는 JSP 페이지 내에서 사용할 수 있습니다.
<%!
public String getGreeting() {
return "Hello, JSP!";
}
%>
<p><%= getGreeting() %></p>
<%-- ... --%>
JSP 주석은 HTML 소스 코드에 포함되지 않고 서버에서만 보이는 주석입니다.
<%-- 이 부분은 주석으로, HTML 소스에 나타나지 않습니다 --%>
<%@ ... %>
디렉티브는 JSP 페이지의 설정을 정의하는 데 사용됩니다. JSP 페이지 상단에 작성되며, 페이지의 속성을 설정하거나 다른 리소스를 포함하는 등의 역할을 합니다.
page
디렉티브page
디렉티브는 JSP 페이지의 전반적인 속성을 정의합니다.
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
contentType
: 응답의 MIME 타입을 설정합니다.language
: 사용 언어를 지정합니다 (주로 java
).include
디렉티브include
디렉티브는 다른 JSP 페이지나 HTML 파일을 포함할 때 사용됩니다. 주로 헤더나 푸터와 같은 공통 영역을 포함할 때 유용합니다.
<%@ include file="header.jsp" %>
taglib
디렉티브taglib
디렉티브는 커스텀 태그 라이브러리를 사용할 때 필요합니다. JSP 표준 태그 라이브러리(JSTL)과 같은 외부 태그 라이브러리를 JSP 페이지에서 사용하기 위해 선언합니다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ex01</title>
</head>
<body>
Hello JSP<br />
<%
// 웹 컨테이너의 로그로 출력
System.out.println("Hello JSP");
// 웹 브라우저에 출력
out.println("<b>Hello JSP</b>");
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%-- 자바 코드 내부에 HTML 코드를 작성할 때 사용 --%>
<%
out.println("<!DOCTYPE html>")
out.println("<html>")
out.println("<head>")
out.println(" <meta charset="UTF-8">")
out.println(" <meta name="viewport" content="width=device-width, initial-scale=1.0">")
out.println(" <title>ex01</title>")
out.println("</head>")
out.println("<body>")
out.println(" Hello JSP<br />");
// 웹 컨테이너의 로그로 출력
System.out.println("Hello JSP");
// 웹 브라우저에 출력
out.println("<b>Hello JSP</b>");
out.println("</body>")
out.println("</html>")
%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ex01</title>
</head>
<body>
3단 구구단 <br />
<%
out.println("<table border='1'>");
out.println("<tr>");
for(int i = 1; i <= 9; i++) {
out.println("<td>" + 3 + " * " + i + " = " + (3 * i) + "</td>");
}
out.println("</tr>");
out.println("</table>");
%>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%
StringBuilder sbHtml = new StringBuilder();
sbHtml.append("<table border='1' cellspacing='0' width='800px'>");
sbHtml.append("<tr>");
for(int i = 1; i <= 9; i++) {
sbHtml.append("<td>" + 3 + " * " + i + " = " + (3 * i) + "</td>");
}
sbHtml.append("</tr>");
sbHtml.append("</table>");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ex01</title>
</head>
<body>
3단 구구단 <br />
<%= sbHtml.toString() %>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%!
private String gugudan(int dan) {
StringBuilder sbHtml = new StringBuilder();
String className = (dan % 2 == 0) ? "even" : "odd";
sbHtml.append("<tr class='" + className + "'>");
for(int i = 0; i <= 9; i++) {
if(dan == 0 && i == 0) {
sbHtml.append("<td> </td>");
continue;
}
if(dan == 0) {
sbHtml.append("<td>×" + i + "</td>");
continue;
}
if(i == 0) {
sbHtml.append("<td>" + dan + "단</td>");
continue;
}
sbHtml.append("<td>" + dan + " * " + i + " = " + (dan * i) + "</td>");
}
sbHtml.append("</tr>");
return sbHtml.toString();
}
%>
<%
StringBuilder sbHtml = new StringBuilder();
sbHtml.append("<table border='1' cellspacing='0' width='800px'>");
for(int dan = 0; dan <= 9; dan++) {
sbHtml.append(gugudan(dan));
}
sbHtml.append("</table>");
%>
<!DOCTYPE html>
<html>
<style>
.odd {
background-color: #acacac;
}
.even {
background-color: #f0f0f0;
}
td {
text-align: center;
}
</style>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>ex01</title>
</head>
<body>
<%= sbHtml.toString() %>
</body>
</html>