일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Java
- 한국건설관리시스템
- oracle
- 다형성
- 환경설정
- 자바
- NestedFor
- 예외미루기
- 추상메서드
- GRANT VIEW
- 인터페이스
- 메소드오버로딩
- 컬렉션 타입
- 사용자예외클래스생성
- abstract
- 객체 비교
- 자동차수리시스템
- 예외처리
- 어윈 사용법
- 정수형타입
- EnhancedFor
- cursor문
- exception
- 참조형변수
- 컬렉션프레임워크
- 생성자오버로드
- 대덕인재개발원
- 집합_SET
- 제네릭
- 오라클
- Today
- Total
거니의 velog
(2) JSP의 정의와 구성 요소 2 본문
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 |