관리 메뉴

거니의 velog

(2) JSP의 정의와 구성 요소 2 본문

Java/Java_JSP

(2) JSP의 정의와 구성 요소 2

Unlimited00 2023. 9. 7. 20:02

3. JSP 페이지 구성 요소

* JSP의 동작 원리를 알았으니 이번에는 JSP에서 HTML 태그와 같이 사용되는 여러 가지 JSP 구성 요소들의 기능을 알아보자.

* JSP 페이지에서 사용되는 여러 가지 구성 요소들은 다음과 같다.

- 디렉티브 태그(Directive Tag)

- 스크립트 요소(Scripting Element) : 주석문, 스크립트릿(Scriptlet), 표현식, 선언식

- 표현 언어(Expression Language)

- 내장 객체(내장 변수)

- 액션 태그(Action Tag)

- 커스텀 태그(Custom Tag)

* 이 중 디렉티브 태그와 스크립트 요소는 JSP가 처음 나왔을 때 많이 사용했던 기능이고, 그 외 요소들은 JSP에서 추가한 기능들이다.


4. 디렉티브 태그

* 디렉티브 태그는 주로 JSP 페이지에 대한 전반적인 설정 정보를 지정할 때 사용하는 태그이다.

* 디렉티브 태그의 종류는 다음과 같다.

- 페이지 디렉티브 태그(Page Directive Tag) : JSP 페이지의 전반적인 정보를 설정할 때 사용한다.

- 인클루드 디렉티브 태그(Include Directive Tag) : 공통으로 사용하는 JSP 페이지를 다른 JSP 페이지에 추가할 때 사용한다.

- 태그라이브 디렉티브 태그(Taglib Directive Tag) : 개발자나 프레임워크에서 제공하는 태그를 사용할 때 사용한다.

(1) 페이지 디렉티브 태그 정의와 사용법

* 먼저 페이지 디렉티브 태그에 대해 알아보자. 다음은 페이지 디렉티브 태그를 이용해 지정하는 여러 가지 속성을 나타낸 것이다.

<페이지 디렉티브 태그로 설정하는 여러 가지 JSP 속성>

속성 기본값 설명
info 없음 페이지를 설명해 주는 문자열을 지정한다.
language "java" JSP 페이지에서 사용할 언어를 지정한다.
contentType "text/html" JSP 페이지 출력 형식을 지정한다.
import 없음 JSP 페이지에서 다른 패키지의 클래스를 임포트할 때 지정한다.
session "true" JSP 페이지에서 HttpSession 객체의 사용 여부를 지정한다.
buffer "8kb" JSP 페이지 출력 시 사용할 버퍼 크기를 지정한다.
autoFlush "true" JSP 페이지의 내용이 출력되기 전 버퍼가 다 채워질 경우 동작을 지정한다.
errorPage "false" JSP 페이지 처리 도중 예외가 발생할 경우 예외 처리 담당 JSP 페이지를 지정한다.
isErrorPage "false" 현재 JSP 페이지가 예외 처리 담당 JSP 페이지인지를 지정한다.
pageEncoding "ISO-8859-1" JSP 페이지에서 사용하는 문자열 인코딩을 지정한다.
isELIgnored "true" JSP 2.0 버전에서 추가된 기능으로 EL 사용 유무를 지정한다.

* 페이지 디렉티브 형식은 다음과 같이 <%@page %> 안에 속성과 값을 나열하면 된다.

<%@page 속성1="값1" 속성2="값2" 속성3="값3"...... %>

* 그런데 이클립스에서 JSP 페이지를 만들면 자동으로 페이지 디렉티브 태그가 생성된다.


(2) 페이지 디렉티브 태그 사용 예제

* 다음은 페이지 디렉티브 태그를 적용한 JSP 페이지이다.

<%@ page contentType="text/html;charset=utf-8" 
	          import="java.util.*" 
	          language="java" 
	          session="true" 
	          buffer="8kb" 
	          autoFlush="true" 
	          isThreadSafe="true" 
	          info="(ShoppingMall................)" 
	          isErrorPage="false" 
	          errorPage="" %>
	          <!-- import 속성을 제외한 다른 속성은 한 번만 선언해야 한다. -->
<!DOCTYPE html>
<html>

    <head>
        <meta charset="UTF-8">
        <title>페이지 디렉티브 연습</title>
    </head>

    <body>
        <h1>쇼핑몰 구현 중심 JSP입니다.!!!</h1>
    </body>

</html>

* hello2.jsp를 브라우저에서 요청 시 톰캣 컨테이너는 JSP 파일을 자바 파일로 변환한다.

- D:\A_TeachingMaterial\01_BasicJava\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\pro11\org\apache\jsp

* hello2_jsp.java 파일을 열어 보면 hello2.jsp의 페이지 디렉티브에서 설정한 정보가 모두 자바 코드로 변환된 것을 알 수 있다. 우선 다음을 보면 import 속성이 변환되어 import문에 추가된다.

* 그리고 info 속성이 변환되어 getServletInfo() 메서드에서 서블릿 정보를 반환한다.

* 마지막으로 contentType 속성인 response가 setContentType() 메서드의 인자로 변환된다.

* 서블릿에서는 필요한 클래스 파일을 import 문을 이용해서 일일이 설정해 주었다. 하지만 이제는 JSP 페이지에서 페이지 디렉티브 태그를 이용해서 설정한다. 그리고 페이지 디렉티브 태그는 import 속성을 제외한 다른 속성은 한 번만 선언해 주어야 한다.


(3) 인클루드 디렉티브 태그 정의와 사용법

* JSP 페이지로 웹 페이지를 만들다 보면 제목이나 로고를 표시하는 상단, 메뉴를 표시하는 왼쪽 단은 화면이 바뀌더라도 일정하게 유지되는 경우가 많다.

* 이런 공통 화면을 일일이 JSP 페이지마다 만들어 사용해야 한다면 불편하다. 그래서 JSP에서는 공통으로 사용하는 JSP 페이지를 미리 만들어 놓고 다른 JSP 페이지 요청 시 인클루드 디렉티브 태그를 사용한다. 그러면 재사용성이 높아질 뿐 아니라 유지관리도 수월해진다.

* 인클루드 디렉티브 태그란 여러 JSP 페이지에서 사용되는 공통 JSP 페이지를 만든 후 다른 JSP 페이지에서 공통 JSP 페이지를 포함시켜 사용하는 기능을 말한다.

* 인클루드 디렉티브 태그의 특징은 다음과 같다.

- 재사용성이 높다.

- JSP 페이지의 유지관리가 쉽다.
* 인클루드 디렉티브 태그의 형식은 다음과 같다.

<%@ include file="공통기능.jsp" %>

(4) 인클루드 디렉티브 태그 이용해 이미지 삽입하기

* 인클루드 디렉티브 태그를 이용해 다른 JSP 파일의 이미지를 삽입하는 예제를 살펴보자.

* 우선 프로젝트에 웹 프로그램에서 사용할 이미지를 저장할 image 폴더를 생성한 후 이미지를 복사한다.

1. 프로젝트의 WebContent에서 마우스 오른쪽 버튼을 클릭한 후 New > Folder를 선택한다.

2. 폴더 이름으로 image를 입력한 후 Finish를 클릭한다.

3. 이미지를 복사한 후 image 폴더에 붙여 넣는다.

4. 다음과 같이 인클루드 디렉티브 태그를 이용해 두 개의 jsp 파일을 작성한다. duke_image.jsp는 이미지를 화면에 표시하는 기능을 하고, include.jsp는 인클루드 디렉티브 태그를 이용해 duke_image.jsp를 삽입하는 기능을 한다.

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

<!DOCTYPE html>
<html lang="ko">

    <head>
        <meta charset="UTF-8">
        <title>duke_image</title>
    </head>

    <body>
        <!-- image 폴더의 duke.png를 표시한다. -->
        <img src="./image/duke.png" />
    </body>

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

<!DOCTYPE html>
<html lang="ko">

    <head>
        <meta charset="UTF-8">
        <title>인클루드 디렉티브</title>
    </head>

    <body>
        <h1>안녕하세요. 쇼핑몰 중심 JSP 시작입니다!!! </h1>
        <br />
        <!-- 인클루드 디렉티브 태그를 이용해 duke_image.jsp를 포함한다. -->
        <%@ include file="duke_image.jsp" %>
        <br />
        <h1>안녕하세요. 쇼핑몰 중심 JSP 끝 부분입니다.!!!</h1>
    </body>

</html>

5. 브라우저에서 요청하면 include.jsp 안에 duke_image.jsp가 포함되어 표시된다.

6. 윈도우 탐색기에서 다음 경로에 들어가면 브라우저에서 include.jsp를 요청할 때 변환된 자바 파일이 생성된 것을 볼 수 있다. 자바 파일을 열어보면 인클루드 디렉티브 태그로 포함된 duke_image.jsp의 HTML 태그가 합쳐져 있다.

- D:\A_TeachingMaterial\01_BasicJava\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\pro11\org\apache\jsp

* 인클루드 디렉티브 태그를 이용해 JSP 페이지를 요청하면 포함되는 duke_image.jsp의 자바 코드가 include_jsp.java 파일과 합쳐져 브라우저로 전송된다.

* 다음은 인클루드 디렉티브 태그를 이용해 JSP 페이지가 호출되는 과정이다.

* 이처럼 인클루드 디렉티브 태그를 이용해 JSP 페이지를 요청하면 요청하는 JSP 페이지에 대해 실행하는 자바 파일은 단 한 개만 생성된다.

'Java > Java_JSP' 카테고리의 다른 글

(6) JSP 스크립트 요소 기능 4  (0) 2023.09.11
(5) JSP 스크립트 요소 기능 3  (0) 2023.09.08
(4) JSP 스크립트 요소 기능 2  (0) 2023.09.08
(3) JSP 스크립트 요소 기능 1  (0) 2023.09.07
(1) JSP의 정의와 구성 요소 1  (0) 2023.09.04