BLOG ARTICLE Eclipse | 31 ARTICLE FOUND

  1. 2009.03.09 while, do 문
  2. 2009.03.09 for 문
  3. 2009.03.09 switch 문 1
  4. 2009.03.05 if 문
  5. 2009.03.04 설명문

반복문의 또 다른 형태인 while 문과 do 문에 대해서 살펴보자. 먼저 이 두 경우 모두 주어진 조건이 만족하는 경우 특정 구간을 반복 수행한다. 그러나 while 문의 경우 주어진 조건을 먼저 검사한 후 그 결과에 따라 반복구간의 실행 여부를 결정하는 반면, do 문의 경우 반복구간을 먼저 실행한 후 조건식을 검사하여 반복구간을 또 실행 할 것인지 말것인지를 결정한다.

먼저 while 문을 살펴보자. while문의 형식은 다음과 같으며 while 옆 괄호 안에 조건식이 주어진다.

while 구조

형식

while ( 조건식 ) {
    실행코드
}


사용자 삽입 이미지

while - flowchart


while 문은 조건식과 함께 반복구간 앞에 위치해 앞서 언급한 것처럼 조건식을 먼저 검사한 후 반복구간의 수행 여부를 결정한다.

다음 프로그램 "while.jsp"는 1에서 100까지 자연수의 합을 구하는 프로그램으로 앞서 for 문으로 구현한 "for.jsp" 프로그램을 while 문을 이용 수정한 것이다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    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>
<body>
<%
int i, sum = 0;

i = 1;
while (i <= 100) {
    sum = sum + i;
    i ++;
}

out.println(sum);
%>
</body>
</html>


사용자 삽입 이미지

while.jsp 실행결과


위 프로그램에서 "i ++"에 의해 결국 조건식이 변화되므로 변수 i의 값이 101이 되는 순간 반복구간을 더 이상 실행하지 않고 빠져나가고 변수 sum에는 5050이 저장되게 된다.

do문을 살펴보자. do 문은 반복구간 뒤에 while과 함께 조건식이 주어지는 구조로 형식은 다음과 같다.

do 구조

형식

do {
    실행코드
} while ( 조건식 ) ;


사용자 삽입 이미지

while~do - flowchart


위 형식과 순서도에서도 알 수 있듯 do 문은 조건식이 반복구간 뒤에 위치한 관계로 최소 한 번 이상 반복구간을 실행한 후 조건식의 결과에 따라 더 실행할 것인지 말것인지를 결정한다.

다음 프로그램 "do.jps" 역시 1에서 100까지 자연수의 합을 구하는 프로그램으로 do 문을 이용 수정한 것이다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    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>
<body>
<%
int i, sum = 0;

i = 1;
do {
    sum = sum + i;
    i ++;
} while (i <= 100);

out.println(sum);
%>
</body>
</html>


사용자 삽입 이미지

do.jsp 실행결과


이 프로그램 역시 "while.jsp"와 마찬가지로 반복구간 내부의 "i ++"에 의해 조건식이 변화된다.

그러면 while과 do의 차이점을 아래 두 프로그램 "diff-while.jsp"와 "diff-do.jsp"를 가지고 살펴보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    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>
<body>
<%
int i, sum = 0;

i = 200;
while (i <= 100) {
    i ++;
}

out.println(i);
%>
</body>
</html>


사용자 삽입 이미지

diff-while.jsp 실행결과


프로그램 "diff-while.jsp"의 실행과정을 살펴보면 변수 "i"에 초기값 200이 저장되어 있다. 그 후 while 문을 실행하는데 while 문의 경우 조건식을 먼저 검사하므로 그 결과가 "200 <= 100"으로 거짓이 되어 반복구간을 실행하지 않고 바로

out.println(i);

부분을 실행한다. 따라서 변수 "i"에는 여전히 200이 저장되어 있으므로 출력결과 역시 "200"이 된다. 반면 다음 프로그램 "diff-do.jsp"의 경우을 살펴보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    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>
<body>
<%
int i, sum = 0;

i = 200;
do {
    i ++;
} while (i <= 100);

out.println(i);
%>
</body>
</html>


사용자 삽입 이미지

diff-do.jsp 실행결과


이 프로그램의 경우 do 문에 의해 먼저 반복구간을 실행

i ++ ;

에 의해 변수 "i"의 값은 201이 되고 조건식 "201 <= 100"에 의해 거짓이 되므로 더 이상 반복구간을 실행하지 않고 빠져나와

out.println(i);

을 실행 "201"을 출력한다.

'프로그래밍 > JSP' 카테고리의 다른 글

쿠키  (0) 2009.03.17
continue, break 문  (1) 2009.03.09
for 문  (0) 2009.03.09
switch 문  (1) 2009.03.09
if 문  (0) 2009.03.05
AND

for 문

프로그래밍/JSP 2009. 3. 9. 11:38
프로그램의 제어문에서 조건이 참인 동안 특정 구간을 반복 실행하는 제어문을 반복문이라 한다. for 문은 대표적인 반복문으로 형식과 순서도는 다음과 같다.

for 구조

형식

for ( 초기식; 조건식; 증감식 ) {
    실행코드
}


사용자 삽입 이미지

for - flowchart


위 형식에서 초기식은 for 문에서 가장 먼저 실행되는 부분으로 단 한번 수행한다. 조건식은 반복구간(위 형식에서 실행코드 부분)을 수행할 것인지 말 것인지를 판단하기 위한 식으로 결과가 참이면 반복구간을 수행하고 거짓인 경우 반복구간을 수행하지 않고 빠져 나온다. 마지막 증감식은 반복구간을 수행한 후 조건식을 비교하기 전 수행하는 식으로 일반적으로 조건식을 변화시키는 코드가 온다.

다음 프로그램 "for.jsp"는 for 문을 이용 1에서 100까지 자연수의 합을 구하는 프로그램이다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    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>
<body>
<%
int i, sum = 0;

for(i = 1; i <= 100; i ++) {
    sum = sum + i;
}

out.println(sum);
%>
</body>
</html>


사용자 삽입 이미지

for.jsp 실행결과


위 프로그램에서 변수 i의 값은 1에서 100까지 1씩 증가하며 반복구간의 코드

sum = sum + i ;

를 실행 변수 sum에 누적된 합을 저장하는데 결과적으로 sum에는 5050이 저장되고

out.println(sum) ;

에 의해 5050이 출력된다.

다음 프로그램을 살펴보자. 다음 프로그램 "for-err-inc2.jsp"는 0에서 100까지의 정수 중 짝수의 합을 구하기 위한 프로그램이다. 그러나 이 프로그램을 실행하면 다음과 같이 오류메세지를 출력한다.


<%@ page language="java" contentType="text/html; charset=EUC-KR"
    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>
<body>
<%
int i, sum = 0;

for(i = 0; i <= 100; i + 2) {
    sum = sum + i;
}

out.println(sum);
%>
</body>
</html>

사용자 삽입 이미지

for-err-inc2.jsp 실행결과

오류의 원인은 증감식 때문이다. "for-err-inc2.jsp"에서 변수 i의 값은 초기식에 의해 0이 된다. 그리고 조건식이 "0 <= 100"으로 참이 되므로 반복구간

sum = sum + i ;

가 실행된다. 이 때 sum의 값은 0이므로 "sum = 0 + 0"에 의해 sum에는 다시 0이 저장된다. 그 후에 증감식

i + 2

가 실행되는는 이 때 i 의 값은 0이므로 "0 + 2"이 실행되고 다시 조건식을 비교하게 된다. 그런데 이 때 i의 값은 변화되지 않고 여전히 0이므로 조건식 역시 여전히 "0 <= 100"로 참이된다. 즉 아무리 수행해도 변수 i 값은 변하지 않고 반복구간을 무한히 수행하는 무한루프에 빠지게 되기 때문에 오류 메세지를 출력하는 것이다. 그러므로 증감식 부분을 다음과 같이

i = i + 2 또는 i += 2

로 고침으로써 원하는 결과를 얻을 수 있다. 아래 프로그램 "for-inc2.jsp"는 "for-err-inc2.jsp" 프로그램을 올바르게 수정한 후 실행한 결과이다.


<%@ page language="java" contentType="text/html; charset=EUC-KR"
    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>
<body>
<%
int i, sum = 0 ;

for(i = 0; i <= 100; i = i + 2) {
    sum = sum + i ;
}

out.println(sum);
%>
</body>
</html>


사용자 삽입 이미지

for-inc2.jsp 실행결과


다음 프로그램 "multiply.jsp"를 살펴보자. 이 프로그램을 살펴보면 for문 내부에 다른 for문이 중첩된 경우이다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    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>
<body>
<%
int i, j;

for(i = 1; i <= 9; i ++) {
    for(j = 1; j <= 9; j ++) {
        out.println(i * j);
        out.println(" ");
    }
    out.println("<br>");
}%>
</body>
</html>

사용자 삽입 이미지

multiply.jsp 순서도


사용자 삽입 이미지

multiply.jsp 실행결과


프로그램과 순서도를 살펴보면 이 경우 바깥쪽 for 문은 아홉번 실행되는데 바깥쪽 for 문이 한 번 실행될 때마다 안쪽 for 문의

out.println(i * j);
out.println(" ");

부분은 아홉 번 실행되므로 결과적으로 이 부분은 총 81(9 x 9) 회 실행된다.

'프로그래밍 > JSP' 카테고리의 다른 글

continue, break 문  (1) 2009.03.09
while, do 문  (0) 2009.03.09
switch 문  (1) 2009.03.09
if 문  (0) 2009.03.05
설명문  (0) 2009.03.04
AND

switch 문

프로그래밍/JSP 2009. 3. 9. 11:26
switch 문은 주어진 수식의 값을 case 문의 값과 비교하여 일치하는 case 문 이하의 실행코드들을 수행하는 구조로 돼 있으며 형식과 순서도는 다음과 같다.

switch 구조

형식

switch ( 수식 ) {
    case  값1 : 실행코드 1 ;
    case  값2 : 실행코드 2 ;
    case  값3 : 실행코드 3 ;
    default     : 실행코드 4 ;
}

사용자 삽입 이미지

switch - flowchart


다음 프로그램 "switch.jsp"를 살펴보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    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>
<body>
<%
int ranking = 2;

out.println(ranking);
out.println("등 상품은 ");

switch (ranking) {
    case 1 : out.println("컴퓨터");
    case 2 : out.println("모니터");
    case 3 : out.println("프린터");
}
%>
입니다.
</body>
</html>


사용자 삽입 이미지

switch.jsp 실행결과


위 프로그램 "switch.jsp"에서 순위를 위한 변수 "ranking"에 초기값으로 2가 저장되어있다. 따라서 switch 문의 수식(이 프로그램에서는 변수)의 결과가 2 이므로 case 문의 값과 일치하는 부분, 즉

case 2 : out.println("모니터");

이하의 코드를 실행하게 되므로

out.println("모니터");
out.println("프린터");

두 개의 실행코드를 실행하고 switch 문을 빠져 나온다. 따라서 결과 역시

"2등 상품은 모니터 프린터 입니다."

를 출력한다. 위 프로그램에서 보면 switch 문 형식에서 보이는 "default : " 부분이 안보이는데 이 부분은 switch 문 수식의 결과와 일치하는 case 부분이 없을 때 실행할 코드는 기술해 주는 부분으로 실행할 코드가 없으면 생략 가능하다. 위 프로그램의 결과로써 1등 상품은 "컴퓨터 모니터 프린터"가 될 것이고, 2등 상품은 "모니터 프린터"가 , 3등 상품은 "프린터"가 될 것이다.

만약 1등 상품으로는 "컴퓨터"를, 2등 상품으로는 "모니터"를, 3등 상품으로는 "프린터"를 각 등수에 따라 하나의 상품만을 받도록 하려면 어느 부분을 고쳐야 할까? 이것은 switch 문 내부에 "break" 문을 삽입함으로써 가능해 진다. break 문은 switch 문 내부의 실행을 종료하고 그 밖으로 빠져 나가도록 프로그램을 제어한다.

다음은 switch 문에서 break를 사용한 경우의 형식과 순서도이다.


break 구조

형식

switch ( 수식 ) {
    case  값1 : 실행코드 1 ;
                     break;
    case  값2 : 실행코드 2 ;
                     break;
    case  값3 : 실행코드 3 ;
                     break;
    default     : 실행코드 4 ;
}

사용자 삽입 이미지

break - flowchart


다음 프로그램 "break.jsp"를 살펴보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    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>
<body>
<%
int ranking = 2;

out.println(ranking);
out.println("등 상품은 ");

switch (ranking) {
    case 1 : out.println("컴퓨터");
             break;
    case 2 : out.println("모니터");
             break;
    case 3 : out.println("프린터");
             break;
}
%>
입니다.
</body>
</html>


사용자 삽입 이미지

break.jsp 실행결과


위 프로그램에서는 int ranking = 2에 의해

case 2 : out.println("모니터");

부분부터 실행하게 되는데 다음 실행할 코드가

break;

이므로 switch 문을 빠져나간다. 따라서 출력 결과는

"2등 상품은 모니터 입니다."

가 된다.

'프로그래밍 > JSP' 카테고리의 다른 글

while, do 문  (0) 2009.03.09
for 문  (0) 2009.03.09
if 문  (0) 2009.03.05
설명문  (0) 2009.03.04
연산자  (0) 2009.03.03
AND

if 문

프로그래밍/JSP 2009. 3. 5. 17:08
if 문은 주어진 조건식의 참, 거짓 여부에 따라 실행되는 코드가 달라질 경우에 사용하는 제어문이다. if 문은 크게 세 가지 구조로 분류할 수 있다.

if 구조

if 구조는 조건식의 결과가 참인 경우에만 실행할 코드가 있을 경우 사용하며 형식과 순서도는 다음과 같다.

형식

if ( 조건식 ) {
    실행코드 1
}

사용자 삽입 이미지

if - flowchart

다음 프로그램 "if.jsp"과 결과를 살펴보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    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>
<body>
<%
int age = 17;

if ( age < 20 ) {
    out.println("미성년은 10%할인 혜택이 있습니다.");
}
%>
</body>
</html>

사용자 삽입 이미지

if.jsp 실행결과


위 프로그램은 int 형 변수 age에 초기값으로 17이 저장돼 있으므로 if 문의 조건식 "age < 20"의 결과는 "17 < 20"으로 참이 되므로 중괄호({ ~ }) 사이의 코드인

out.println("미성년은 10%할인 혜택이 있습니다.");

를 실행한다. 여기서 "out.println"은 java의 출력문으로 JSP에서 출력을 위해 "<%= ~ %>"과 함께 자주 사용되는 출력문 중에 하나다. 만약 변수 age에 20이상의 값이 저장됐다면 조건식이 거짓이 되어 실행결과는 아무 것도 출력되지 않는다.

if ~ else 구조

if ~ else 구조는 조건식의 결과가 참, 거짓에 따라 실행할 코드가 다른 경우 사용하며 형식과 순서도는 다음과 같다.

형식

if ( 조건식 ) {
    실행코드 1
}
else {
    실행코드 2
}

사용자 삽입 이미지

if~else - flowchart


다음 프로그램 "else.jsp"를 살펴보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    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>
<body>
<%
int age = 20;

if ( age < 20 ) {
    out.println("당신은 미성년 입니다.");
}
else {
    out.println("당신은 성인 입니다.");
}

%>
</body>
</html>

사용자 삽입 이미지

else.jsp 실행결과



위 프로그램에서 변수 age에 초기값 20이 저장되어 있고 이로인해 조건식 "age < 20"은 "20 < 20"으로 거짓이므로 esle 부분의 중괄호에 위치한 코드

out.println("당신은 성인 입니다.");

를 실행한다. 따라서 "당신은 성인 입니다"라는 메세지를 출력한다. 만약 age의 값이 18과 같은, 20보다 작은
수가 저장됐다면 조건식 "age < 20"가 "18 < 20"으로 참이 되므로

out.println("당신은 미성년 입니다.");

부분을 실행하여 "당신은 미성년 입니다."라는 메세지를 출력하게 된다.


if ~ else if ~ else 구조

if ~ else if ~ else 구조는 조건이 여러개인 경우 사용되며 형식과 순서도는 다음과 같다.

형식

if ( 조건식 1 ) {
    실행코드 1
}
else if ( 조건식 2 ) {
    실행코드 2
}
else if ( 조건식 3 ) {
    실행코드 3
}
else {
    실행코드 4
}

사용자 삽입 이미지

if~elseif~else - flowchart


else if 문을 이용 "수", "우", "미", "양", "가"를 출력하는 프로그램 "elseif.jsp"를 살펴보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    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>
<body>
<%
int score = 87;

if ( score >= 90 ) {
    out.println("수");
}
else if ( score >= 80 ) {
    out.println("우");
}

else if ( score >= 70 ) {
    out.println("미");
}
else if ( score >= 60 ) {
    out.println("양");
}
else {
    out.println("가");
}
%>
</body>
</html>

사용자 삽입 이미지

elseif.jsp 실행결과


위 프로그램에서 변수 "score"에 초기값으로 87(점)이 저장되어 있는데, 첫 번째 조건식 "score >= 90"은 "87 >= 90"이 되어 거짓이 되므로 다음 조건식 "score >= 80"을 비교하게 된다. 이 조건식은 "87 >= 80"이 되어 참이 되므로

out.println("우");

을 실행 "우"를 출력한 후 프로그램을 종료한다. 만약 변수 "score"에 50(점)이 저장되어 있다면 모든 위 프로그램의 모든 조건식이 거짓이 되어 마지막 else 부분의 코드를 실행 "가"를 출력할 것이다.

'프로그래밍 > JSP' 카테고리의 다른 글

for 문  (0) 2009.03.09
switch 문  (1) 2009.03.09
설명문  (0) 2009.03.04
연산자  (0) 2009.03.03
변수, 상수, 자료형  (0) 2009.03.03
AND

설명문

프로그래밍/JSP 2009. 3. 4. 17:45

모든 프로그래밍 언어는 이해를 돕기위해 프로그램의 수행과는 관계없는 설명문을 달 수 있다. 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에서 사용한 설명문의 예를 보여주고 있다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    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>

사용자 삽입 이미지

comment1.jsp 실행결과


사용자 삽입 이미지

comment1.jsp 실행 후 소스보기 결과



위 프로그램에서는 "<!-- ~ -->"부분의 HTML 설명문과 "<%-- ~ --%>"부분의 JSP 고유 설명문 그리고 Java 설명문에서 비롯된 "//"를 사용한 설명문 2개와 "/* ~ */"를 사용한 설명문 2개 총 6개의 설명문이 사용되었다.

"<!-- 이 부분은 HTML 설명문으로 소스보기로 볼 수 있습니다. -->"

"<%-- 이 부분은 JSP 설명문으로 소스보기로 볼 수 없습니다. --%>"

"// 국어, 영어, 수학 (1줄 설명문)"

"// 평균 (1줄 설명문)"

"/*******************************
  국어, 영어, 수학 점수를 합산하여
  3으로 나눈 후 평균을 구한다.
 *******************************/"

"/* 평균점수를 출력한다. */"

위 프로그램에서 HTML 설명문의 경우 소스보기에서 볼 수 있으나, JSP 고유 설명문의 경우 소스보기에서 볼 수 없다. 그리고 JSP 태그 내부에서 한 줄 설명문 사용 시 주의해야 할 점이 있다. 마지막 설명문을 보면 "/* 평균점수를 출력한다. */"의 경우 한 줄 설명문 이지만 여러 줄 설명문을 위한 "/* ~ */"를 사용하고 있는데, 이 경우 한 줄 설명문을 위한 "//"를 사용하면 안된다는 점이다. 우선 다음 프로그램 "comment2.jsp"의 결과를 보자.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    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>

사용자 삽입 이미지

comment2.jsp 실행결과


실행 결과 기대와는 달리 오류메세지만 출력하고 있다. 그 이유는 한 줄 설명을 위한 "//" 처리는 줄의 마지막까지를 설명문으로 간주하기 때문이다. 따라서 위 프로그램의 경우

"평균 : <%= avg // 평균점수를 출력한다. %> 점"

부분에서 설명문은 "// 평균점수를 출력한다." 부분이 아닌 "// 평균점수를 출력한다. %> 점"까지가 설명문으로 취급된다. 따라서 "<%=" 태그에 의해 열린 부분이 있으면 "%>"로 마무리 되야 하는데 "// 평균점수를 출력한다. %> 점" 부분의 "%>" 역시 프로그램의 수행과는 전혀 상관없는 즉 닫힌 JSP 태그로 인식되는 것이 아니라 단지 설명문의 한 부분르로 처리되어 "comment2.jsp"의 마지막 까지 닫힌 JSP 태그인 "%>"를 찾을 수 없기 때문에 오류를 발생시키는 것이다. 따라서 "comment2.jsp"가 올바르게 실행되기 위해서는 "comment3.jsp"와 같이 수정돼야 한다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    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>

사용자 삽입 이미지

comment3.jsp 실행결과



'프로그래밍 > JSP' 카테고리의 다른 글

switch 문  (1) 2009.03.09
if 문  (0) 2009.03.05
연산자  (0) 2009.03.03
변수, 상수, 자료형  (0) 2009.03.03
JSP 처리과정  (0) 2009.01.06
AND