모든 프로그래밍 언어는 이해를 돕기위해 프로그램의 수행과는 관계없는 설명문을 달 수 있다. JSP역시 JSP 태그 “<% ~ %>” 내부에서는 java의 설명문을 위한 표시인 “//”, “/* ~ */” 을 따른다. 그러나 JSP 태그 외부에서는 “<%– ~ –%>”를 이용한 JSP 만의 고유 설명문과 “<!– ~ –>”를 이용한 HTML 설명문이 사용된다. JSP 고유 설명문과 HTML 설명문의 차이점은 JSP 프로그램 실행후 소스보기로 확인했을 때 JSP 고유 설명문의 경우 소스보기로 확인할 수 없으며, HTML 설명문의 경우 소스보기로 확인 가능하다는 점이다.
JSP 태그 내부에서 사용되는 설명문
java 설명문
// 뒤에 1줄 짜리 설명문이 위치하며 줄이 바뀌면 설명문이 끝난다.
/* 사이에 설명문이 위치하며 1줄 이상의 설명문에 사용된다. */
JSP 태그 외부에서 사용되는 설명문
JSP 설명문
<%– 이 부분은 1 줄 이상 가능한 JSP 설명문으로 소스보기로 볼 수 없습니다. –%>
HTML 설명문
<!– 이 부분은 1 줄 이상 가능한 HTML 설명문으로 소스보기로 볼 수 있습니다. –>
다음 “comment1.jsp” 프로그램은 JSP에서 사용한 설명문의 예를 보여주고 있다.
pageEncoding=”EUC-KR”%>
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
“http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=EUC-KR”>
<title>Insert title here</title>
</head>
<!– 이 부분은 HTML 설명문으로 소스보기로 볼 수 있습니다. –>
<body>
<%– 이 부분은 JSP 설명문으로 소스보기로 볼 수 없습니다. –%>
<%
int kor=90, eng=100, mat=80; // 국어, 영어, 수학 (1줄 설명문)
double avg; // 평균 (1줄 설명문)
/*******************************
국어, 영어, 수학 점수를 합산하여
3으로 나눈 후 평균을 구한다.
*******************************/
avg = (kor+eng+mat)/3;
%>
평균 : <%= avg /* 평균점수를 출력한다. */ %> 점
</body>
</html>
위 프로그램에서는 “<!– ~ –>”부분의 HTML 설명문과 “<%– ~ –%>”부분의 JSP 고유 설명문 그리고 Java 설명문에서 비롯된 “//”를 사용한 설명문 2개와 “/* ~ */”를 사용한 설명문 2개 총 6개의 설명문이 사용되었다.
“<!– 이 부분은 HTML 설명문으로 소스보기로 볼 수 있습니다. –>“
“<%– 이 부분은 JSP 설명문으로 소스보기로 볼 수 없습니다. –%>“
“// 국어, 영어, 수학 (1줄 설명문)”
“// 평균 (1줄 설명문)”
“/*******************************
국어, 영어, 수학 점수를 합산하여
3으로 나눈 후 평균을 구한다.
*******************************/“
“/* 평균점수를 출력한다. */“
위 프로그램에서 HTML 설명문의 경우 소스보기에서 볼 수 있으나, JSP 고유 설명문의 경우 소스보기에서 볼 수 없다. 그리고 JSP 태그 내부에서 한 줄 설명문 사용 시 주의해야 할 점이 있다. 마지막 설명문을 보면 “/* 평균점수를 출력한다. */”의 경우 한 줄 설명문 이지만 여러 줄 설명문을 위한 “/* ~ */”를 사용하고 있는데, 이 경우 한 줄 설명문을 위한 “//”를 사용하면 안된다는 점이다. 우선 다음 프로그램 “comment2.jsp”의 결과를 보자.
pageEncoding=”EUC-KR”%>
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
“http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=EUC-KR”>
<title>Insert title here</title>
</head>
<!– 이 부분은 HTML 설명문으로 소스보기로 볼 수 있습니다. –>
<body>
<%– 이 부분은 JSP 설명문으로 소스보기로 볼 수 없습니다. –%>
<%
int kor=90, eng=100, mat=80; // 국어, 영어, 수학 (1줄 설명문)
double avg; // 평균 (1줄 설명문)
/*******************************
국어, 영어, 수학 점수를 합산하여
3으로 나눈 후 평균을 구한다.
*******************************/
avg = (kor+eng+mat)/3;
%>
평균 : <%= avg // 평균점수를 출력한다. %> 점
</body>
</html>
실행 결과 기대와는 달리 오류메세지만 출력하고 있다. 그 이유는 한 줄 설명을 위한 “//” 처리는 줄의 마지막까지를 설명문으로 간주하기 때문이다. 따라서 위 프로그램의 경우
“평균 : <%= avg // 평균점수를 출력한다. %> 점”
부분에서 설명문은 “// 평균점수를 출력한다.” 부분이 아닌 “// 평균점수를 출력한다. %> 점”까지가 설명문으로 취급된다. 따라서 “<%=” 태그에 의해 열린 부분이 있으면 “%>”로 마무리 되야 하는데 “// 평균점수를 출력한다. %> 점” 부분의 “%>” 역시 프로그램의 수행과는 전혀 상관없는 즉 닫힌 JSP 태그로 인식되는 것이 아니라 단지 설명문의 한 부분르로 처리되어 “comment2.jsp”의 마지막 까지 닫힌 JSP 태그인 “%>”를 찾을 수 없기 때문에 오류를 발생시키는 것이다. 따라서 “comment2.jsp”가 올바르게 실행되기 위해서는 “comment3.jsp”와 같이 수정돼야 한다.
pageEncoding=”EUC-KR”%>
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”
“http://www.w3.org/TR/html4/loose.dtd”>
<html>
<head>
<meta http-equiv=”Content-Type” content=”text/html; charset=EUC-KR”>
<title>Insert title here</title>
</head>
<!– 이 부분은 HTML 설명문으로 소스보기로 볼 수 있습니다. –>
<body>
<%– 이 부분은 JSP 설명문으로 소스보기로 볼 수 없습니다. –%>
<%
int kor=90, eng=100, mat=80; // 국어, 영어, 수학 (1줄 설명문)
double avg; // 평균 (1줄 설명문)
/*******************************
국어, 영어, 수학 점수를 합산하여
3으로 나눈 후 평균을 구한다.
*******************************/
avg = (kor+eng+mat)/3;
%>
평균 : <%= avg // 평균점수를 출력한다.
%> 점
</body>
</html>