[JSP] 웹 프로그래밍

[JSP] JSP 스크립트 태그의 종류 및 기능

ITsubin 2022. 3. 17. 22:25

JSP에서는 스크립트 태그, 선언문 태그, 스크립틀릿 태그, 표현문 태그 등 여러 태그들이 있습니다.

이번 포스팅에서는 JSP 태그의 기능과 사용법에 대해 알아보겠습니다.

 

JSP는 태그를 이용하여 문법을 기술합니다.

JSP 태그는 크게 스크립트 태그, 디렉티브 태그, 액션 태그로 나뉩니다.

 

<스크립트 태그>

- HTML 코드에 자바 코드를 넣어 프로그램이 수행하는 기능을 구현할 수 있습니다.

 

<디렉티브 태그>

- JSP 페이지를 어떻게 처리할 것인지 설정하여 JSP 페이지에 대한 정보를 JSP 컨테이너에 보냅니다.

 

<액션 태그>

- 클라이언트 / 서버에 어떤 작동을 행하도록 지시하는 XML 형태의 태그로, JSP 사이에서 제어를 이동할 수도 있습니다.

 

[ 스크립트 태그의 종류 ]

스크립트 태그 형식 설명
선언문
(declaration)
<%! ~~~ %> 자바 변수나 메소드를 정의하는 데 사용합니다.
스크립틀릿
(scriptlet)
<% ~~~ %> 자바 로직 코드를 작성하는 데 사용합니다.
표현문
(expression)
<%= ~~~ %> 변수, 계산식, 메소드 호출 결과를 문자열 형태로 출력하는 데 사용합니다.

 

선언문, 스크립틀릿, 표현문 태그의 예시를 알아보기 위해 [JSP] JSP와 개발 환경 도구 설정 포스팅에서 만들었던

Hello.jsp 파일을 열어서 아래와 같이 수정했습니다.

 

<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Web_Programing</title>
</head>
<body>
<h1> Scripting Tag </h1>

<%---------- 1번 블록 ----------%>
<%! int count = 3;

String makeItLower(String data) {
      return data.toLowerCase();
} %>
<%---------- 1번 블록 ----------%>


<%---------- 2번 블록 ----------%>
<%
      for (int i = 1; i <= count; i++) {
            out.println("Java Server Pages " + i + ".<br>");
}
%>
<%---------- 2번 블록 ----------%>


<%---------- 3번 블록 ----------%>
<br>
<%=makeItLower("Hello World") %>
<%---------- 3번 블록 ----------%>


</body>
</html>

보다 보기 쉽게 하기 위하여 JSP 주석을 활용하여 임의로 세 개의 블록으로 나누었습니다.

(JSP 주석은 <%-- 주석 --%> 의 형식으로 이루어져 있습니다.)

 

1번 블록
<%! int count = 3;

String makeItLower(String data) {
      return data.toLowerCase();
} %>

1번 블록은 선언문 태그를 사용하여 자바 변수와 메소드를 정의한 것입니다.

- 1번 블록의 선언문(declaration) 태그는 변수나 메소드 등을 선언하는 태그입니다.

- 선언문 태그에 선언된 변수와 메소드는 서블릿 프로그램으로 변환될 때 _jspService() 메소드 외부에 배치되므로 JSP 페이지 임의의 위치에서 선언할 수 있습니다.

- 선언문 태그 안의 내용은 각 행이 세미콜론으로 끝나야 합니다.

 

2번 블록
<%
      for (int i = 1; i <= count; i++) {
            out.println("Java Server Pages " + i + ".<br>");
}
%>

2번 블록은 스크립틀릿 태그로 자바 로직 코드를 작성한 것입니다.

스크립틀릿 태그는 선언문 태그와 다르게, 메소드 없이 변수만을 선언할 수 있습니다.

스크립틀릿 태그는 선언문 태그와 다르게, 서블릿 프로그램으로 변환될 때 _jspService() 메소드 내부에 배치됩니다.

스크립틀릿 태그 안의 내용은 각 행이 세미콜론으로 끝나야 합니다.

 

3번 블록
<br>
<%=makeItLower("Hello World") %>

3번 블록은 표현문 태그로 선언문의 메소드를 호출하여 문자열 형태로 출력한 것입니다.

표현문 태그는 웹 브라우저에 출력할 부분을 표현하는 태그입니다.

표현문 태그는 스크립틀릿 태그에서 사용할 수 없습니다.

표현문 태그 안의 내용은 각 행을 세미콜론으로 종료할 수 없습니다.

 

 

[ 선언문 태그에서 전역변수 선언 ]

1번 블록의 선언문 태그에서 전역변수 count3으로 초기화하고,

2번 블록 안의 스크립틀릿 태그에서 전역변수 count를 사용한 것을 확인할 수 있습니다.

(2번 블록에서 icount번 반복합니다. count는 전역변수이기 때문에 2번 블록에서도 사용할 수 있으며,

1번 블록에서 3으로 초기화하였기 때문에 2번 블록에서의 count3과 같습니다.)

 

[ 선언문 태그에서 전역 메소드 선언 ]

1번 블록에서 전역 메소드 makeItLower()를 선언한 후, 3번 블록에서 전역 메소드 makeItLower()를 호출한 것을 알 수 있습니다. (전역 메소드이기 때문에 3번 블록에서도 사용할 수 있습니다.)

 

[ 스크립틀릿 태그에서 지역변수 선언 ]

1번 블록(선언문 태그)과 다르게, 2번 블록(스크립틀릿 태그)에서 선언한 변수 i는 전역변수가 아닌 지역변수입니다.

따라서 변수 i1번 블록이나 3번 블록에서 사용이 불가합니다.