JSP태그는 크게 스크립트 태그(script tag), 디렉티브 태그(directive tag), 액션 태그(action tag)로 나뉜다.
| 스크립트 태그 | 형식 | 설명 |
|---|---|---|
| 선언문(declaration) | <%!...%> | 자바 변수나 메소드를 정의하는데 사용됨. |
| 스크립틀릿(scriptlet) | <%...%> | 자바 로직 코드를 작성하는 데 사용됨. |
| 표현문(expression) | <%=...%> | 변수, 계산식, 메소드 호출 결과를 문자열 형태로 출력하는 데 사용됨. |
선언문(declaration)태그는 변수나 메소드 등을 선언하는 태그이다. 선언문 태그에 선언된 변수와 메소드는 서블릿 프로그램으로 번역될 때 _jspService()메소드 외부에 배치되므로 JSP 페이지 임의의 위치에서 선언할 수 있다. 심지어 스크립틀릿 태그보다 나중에 선언해도 스크립틀릿 태그에서 사용할 수 있다.
<%! 자바 코드; %>
선언문 태그로 선언된 변수는 서블릿 프로그램으로 번역될 때 클래스 수준의 멤버 변수가 되므로 전역변수로 사용된다.
예제코드
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
int a = 2;
int b = 3;
int sum = a + b;
out.println("2 + 3 = " + sum);
%>
</body>
</html>
전역 메소드 sum()을 선언하기 위해 선언문 태그를 작성한다.
out.println()메소드를 이용하여 '2+3=5' 를 출력하도록 스크립틀릿 태그를 작성한다. 여기서 선언된 sum()메소드는 선언문 태그에 선언된 적역 메소드인 sum()을 호출한다.
스크립틀릿(scriptlet) 태그는 자바 코드로 이루어진 로직 부분을 표현하며, 다음과 같은 형식으로 out 객체를 사용하지 않고도 쉽게 HTML 응답을 만들어낼 수 있다. 스크립틀릿 태그는 가장 일반적으로 사용되며 변수 또는 메소드 선언, 유효식 등 다수를 포함할 수 있다. 모든 텍스트, HTML 태그, 또는 JSP 요소는 스크립틀릿 태그 외부에 있어야 한다.
<% 자바 코드; %>
| 선언문 태그 | 스크립틀릿 태그 |
|---|---|
| 변수뿐만 아니라 메소드를 선언할 수 있다. | 메소드 없이 변수만을 선언할 수 있다. |
| 서블릿 프로그램으로 변환될 때 _jspDervice()메소드 외부에 배치된다. | 서블릿 프로그램으로 변환될 때 _jspService() 메소드 내부에 배치된다. |
예제코드
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
for(int i = 0; i <= 10; i++){
if(i % 2 == 0){
out.println(i + "<br>");
}
}
%>
</body>
</html>
0부터 10까지의 짝수를 출력하도록 스크립틀릿 태그를 작성한다.
표현문(expression)태그는 다음과 같이 <%=와 %>를 사용하여 웹 브라우저에 출력할 부분을 표현한다. 표현문 태그를 이용하여 선언문 태그 또는 스크립틀릿 태그에서 선언된 변수나 메소드의 반환 값을 외부로 출력할 수 있다. 표현문 태그는 스크립틀릿 태그에서 사용할 수 없으므로 이 경우에는 out.print() 메소드를 사용해야 한다.
<%= 자바 코드 %>
표현문 태그에 숫자, 문자, boolean 등의 기본 데이터 타입과 자바 객체 타입도 사용 가능하다.
예제코드
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<p> Today's date : <%= new java.util.Date() %></p>
</body>
</html>
현재 날짜를 출력하도록 표현문 태그를 작성한다.