본문 바로가기

IT 이야기/데이터베이스

JSP 기본구조

 

JSP 파일은 HTML, XML과 같은 템플릿 데이터 부분과 실제 JSP 프로그램 부분으로 구분 할 수 있다. 템플릿 데이터 부분은 JSP 엔진이 인식할 수 없는 태그들로써 브라우저로 그대로 전송되며, 프로그램 부분은 실행된 후 그 출력결과 만이 전송된다. 템플릿 데이터 부분과 JSP 부분의 구분은 "<%", "%>" 태그를 이용 구분하는데 이 안쪽이 JSP 프로그램 부분이고 바깥쪽은 템플릿 데이터 부분이다.

"Hello.jsp" 예제에서 디스크에 저장된 원본 파일의 내용에서 첫 두 라인

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

부분을 보면 "<%"과 "%>" 태그로 둘러싸여 있다. 바로 이 부분이 JSP 프로그램 부분이고, 이 부분이 실행되어 브라우저로 전달된다. 그러나 이 부분에서 실행되어 출력되는 내용은 아무것도 없다. 뒤에 자세히 설명하겠지만 이 부분은 JSP 프로그램에서 디렉티브(Directive)라고 불리는 부분이다.

반면 "Hello.jsp"의 나머지 부분인

<!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>
Hello HSP...
</body>
</html>

부분은 "<%", "%>" 태그 바깥쪽에 위치했기 때문에 템플릿 데이터 부분이 된다. 따라서 이 부분의 내용은 그대로 브라우저로 전달된다. 결과적으로 JSP 프로그램 부분과 템플릿 데이터 부분에 의해 브라우저도 전달된 결과는 아래와 같다.

<!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>
Hello HSP...
</body>
</html>

또 다른 프로그램 "today.jsp"를 살펴보자. 이 프로그램은 현재의 날짜와 시각을 출력하는 JSP 프로그램이다. 아래 소스에서 짙은 회색 블럭으로 된 부분은 JSP 프로그램 부분이다.

<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>

<%@ page import="java.util.Date" %>
<!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>
<%
Date toDay = new Date();
%>
현재 시간은 <%= toDay %> 입니다.
</body>
</html>


today.jsp 내용

이 프로그램의 실행 결과와 브라우저로 전달된 소스보기의 내용은 다음과 같다.

<!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>

현재 시간은 Fri Dec 12 21:16:49 KST 2008 입니다.
</body>
</html>


소스보기 내용

사용자 삽입 이미지

today.jsp 실행결과


"today.jsp"와 브라우저 소스보기 내용을 비교해 보면 "today.jsp" 프로그램에서 "<%= toDay.jsp %>" 부분을 제외한 모든 JSP 프로그램 부분은 브라우저 소스보기에서 확인할 수 없으며, "<%= toDay.jsp %>" 부분도 "Fri Dec 12 21:16:49 KST 2008"과 같이 변경되어 브라우저로 전달됐음을 보여주고 있다. 결론부터 얘기하면 "today.jsp"의 JSP 프로그램 부분에서 실행 된 후 출력된 결과는 "<%= toDay.jsp %>" 부분의 "Fri Dec 12 21:16:49 KST 2008"이다. 그러나 JSP 프로그램의 시작을 알리는 태그의 종류를 보면 "<%@", "<%", "<%=" 과 같이 약간의 차이가 있다. 이와 같이 JSP 엔진이 인식해서 처리 작업을 수행해야 하는 태그들을 원소(element)라고 한다. 원소는 지시어 원소(directive element)와 스크립팅 원소(scripting element)로 구분된다.

"<%@" 태그는 디렉티브 원소(directive element)를 알리는 태그로 디렉티브 원소란 JSP 페이지에 대한 설정정보 등을 지정하기 위해 선언되는 부분이다. 스크립팅 원소(scripting element)는 JSP 엔진이 인식해서 처리 작업을 수행해야 하는 태그들을 의미한다. 이 스크립팅 원소는 선언(declaration), 식(expression), 스크립트렛(scriptlet)으로 구분할 수 있다.

선언은 JSP 페이지의 멤버 필드나 메소드를 선언할 때 사용하며, "<%!" ~ "%>" 태그 사이에 위치한다. 식은 변수의 값, 계산 결과, 함수의 호출 결과 등을 직접 출력하기 위해 사용하며, 위 예제 "today.jsp"에서 마지막에 사용된 "<%=" 태그가 식의 시작을 알리는 태그이다. 그러므로 "<%=" ~ "%>" 사이의 내용은 그 결과가 그대로 브라우저로 전달 출력된다. 마지막으로 스크렙트렛은 JSP에서 문서의 내용을 생성하기 위해 사용되는 조건문, 반복문 등과 같은 프로그램 요소를 기술하는 부분으로 "<%" ~ "%>" 태그 사이에 위치한다.

이 글은 스프링노트에서 작성되었습니다.

'IT 이야기 > 데이터베이스' 카테고리의 다른 글

Oracle loader  (0) 2011.01.12
10g EE 설치  (0) 2011.01.12
JSP 구성과 흐름도  (0) 2011.01.12
JSP DB연동  (0) 2011.01.12
JSP  (0) 2011.01.12