6장. JSP 지시문 (Directives) 제6장.

Slides:



Advertisements
Similar presentations
JSP 정리 레퍼런스: JSP 2.1 웹 프로그래밍 (최범균, 가메출판사). 목차 1. Directive - 인코딩 - 오류처리 2. Implicit Object - 쿠키/세션 3. Action Tag 4. JDBC/DBCP 프로그래밍, 파일업로드 5. Expression.
Advertisements

11장. 프로토콜 핸들러 AI &HC I LAB 김 성 현.
11 JSTL 사용하기.
CHAPTER 15. JSP.
Spring MVC ㅇ 스프링 MVC 구성요소 설명 DispatcherServlet 클라이언트의 요청을 컨트롤러에게 전달하고
Introduction to Servlets
웹 페이지.
Internet Computing KUT Youn-Hee Han
12장. JSP에서 자바빈 활용 제12장.
12 커스텀 액션.
Chapter-2. 개발환경 구축하기.
2 서블릿의 기초.
3장. 웹 어플리케이션과 JSP 및 Servlet의 이해 제3장.
1. JSP(Java Server Pages) 소개
9 표준 액션.
자바 서버 API와 서블릿 데이타베이스 실험실 이찬섭, 박용문.
9장. 요청 흐름제어와 모듈화 #1: <jsp:forward> 액션태그 사용
10장. 에러 처리 제10장.
JSP 내장 객체 개요 내장 객체 (참조 변수 이름) 자바 클래스 주요 역할
4장. JSP의 구성요소와 스크립팅요소 제4장.
5 익셉션 처리.
7. JavaBeans 프로그래밍 JavaBeans JavaBeans 만들기 Bean을 이용한 회원가입 양식 작성하기
1 PROJECT TITLE 기획 PAGE NO. 웹 페이지 구성 화 면 번호 화 면 설 명 연 결 화 면 L1 L4 L7
1장. JSP 및 Servlet을 활용한 동적 웹 프로그래밍 소개 제1장.
1. JSP(Java Server Pages) 소개
3 JSP의 기초.
7 JSP의 기초.
4 쿠키와 세션.
1강 01장. 웹과 자바.
중 간 고 사 (웹프로그래밍)
01. 직렬화와 역직렬화에 대하여 객체의 직렬화 직렬화와 역직렬화
제 23 장 WWW 23.1 하이퍼텍스트와 하이퍼미디어 23.2 브라우저 구조 23.3 고정 문서 23.4 HTML
강의 보조자료 & Homework #2 - 로그인과 이미지 카운터 만들기 -
소프트웨어시스템설계(둘째주) JSP 개발 환경과 간단한 JSP 실습
JSP(Java Server Page) JSP기초 JSP 지시어 PSLAB 남지민 년 2월 17일.
5. JSP의 내장객체1.
JSP Programming with a Workbook
Sun Java System Web Server 6.1 설치와 WebLogic 8.1과의 연동
JSP 내장 객체 JSP에서 기본으로 사용할 수 있는 내장 객체 종류를 알아본다. 내장 객체별 주요 기능과 메서드를 이해한다.
9강. JSP 본격적으로 살펴보기-I JSP 태그의 개념 이해 JSP 동작 원리 JSP 내부 객체
8 데이터베이스 사용하기.
12 데이터베이스 사용하기.
웹 애플리케이션 로깅 및 오류 처리 기법 웹 애플리케이션 로깅의 필요성을 이해한다 로깅의 분류 및 구현 방안을 학습한다
Cookie 와 Session.
Html(front end) & jsp(back end)
JDBC (Java Database Connectivity)
9장 JSP페이지의 에러처리 이장에서 배울 내용 : JSP페이지에서 에러를 처리하는 방법에 대해 학습해본다. 에러페이지를 사용한 에러처리의 문제점을 살펴보고, 현재 JSP2.0에서 권장하는 에러 처리 형태인 에러코드별 에러처리를 하는 방법에 대해 학습한다.
Web Socket.
프로그래밍 원리 Chapter 05 자바스크립트 기초 신한대학교 IT융합공학부 박 호 균.
1강. 웹프로그래밍 웹프로그래밍이란? JAVA웹 웹프로그램의 동작 필요한 학습 Lecturer Kim Myoung-Ho
문자 인코딩에 관하여 팀 E.E 강재문, 윤영호 백진후, 조남훈.
Web Vulnerabilities 정보 보호 2008/05/31 Getroot.
JSP Programming with a Workbook
HTML CSS 자바스크립트 무작정 따라하기
제 14 장 커스텀 태그 학기 인터넷비즈니스과 강 환수 교수.
JSP문법 JSP 기본 구조를 이해한다. 지시어, 스크립트릿 JSP 액션 태그 사용법을 익힌다. 한빛미디어(주)
KTF 무선인터넷 표준 UI 2000년 4월 SK 텔레콤 귀중 CP 제공용
Chapter13 파일 접근 & 오프라인 접근 HTML5 Programming.
[INA470] Java Programming Youn-Hee Han
3장. 웹로직 서버에서의 서블릿과 JSP의 운용 3-1. 서블릿, JSP를 실행하기 전의 환경 설정
Internet Computing KUT Youn-Hee Han
4장 JSP 페이지의 디렉티브(Directive)
JSP와의 첫 만남 간간한 JSP 프로그램을 작성하면서 앞으로 학습에 필요한 과정을 익힌다.
JSP Programming with a Workbook
Introduction to JSP & Servlet
제 04 장 JSP 기본 문법 학기 인터넷비즈니스과 강 환수 교수.
제 11 장 자바빈즈를 이용한 JDBC 프로그래밍 학기 인터넷비즈니스과 강 환수 교수.
주요공지로 정할 글을 올립니다. 제목과 주소를 복사해둡니다
HTML HTML 기본 구조와 태그 다양한 태그 다루기
Choi Younghwan CSE HUFS
Presentation transcript:

6장. JSP 지시문 (Directives) 제6장

1. page 지시문 지시문의 종류 page 지시문 page (6장) include (6장) taglib (16장) 현재의 JSP 페이지 자체에 대해서 JSP 엔진 및 컨테이너에게 각종 처리 정보를 전달하고 수행해야 할 기능을 정하는 역할 일반적으로 JSP 페이지의 가장 상단에 위치 <%@ page 속성1=“속성값1” 속성2=“속성값2” ... %> 사용예 1: <%@ page contentType="text/html; charset=utf-8"%> 사용예 2: <%@ page import="java.util.*, java.io.*, javax.sql.*" %> 사용예 3: <%@ page import="java.util.*" errorPage="error.jsp" %> 사용예 4: <%@ page isErrorPage="true" %> 제6장

1. page 지시문 page 지시문의 속성 제6장 속성 설명 사용빈도 기본값 contentType 브라우저로 내보내는 내용의 MIME 형식 지정 및 문자집합 지정 매우 높음 text/html;charse t=ISO-8859-1 pageEncoding 현재 JSP 페이지에 대한 문자집합 지정 거의 사용하지 않음 ISO-8859-1 import 현재 JSP 페이지에서 사용할 Java 패키지나 클래스를 지정 높음 errorPage 에러가 발생할 때에 대신 호출되어 처리될 JSP 페이지 지정 중간 isErrorPage 현재 JSP 페이지가 에러를 핸들링하는 페이지인지 지정 false info 현재 JSP 페이지에 대한 설명 buffer 버퍼의 크기 8KB autoflush 버퍼의 내용을 자동으로 브라우저로 보낼지에 대한 설정 true session 세션의 사용유무 설정 language 스크립트 언어 종류 지정 java isThreadSafe 현재 JSP 페이지에 대한 접근은 한 순간에 하나의 쓰레드만 접근하도록 하여 동시 접근으로 인한 위험성 제거 설정 extends 현재 JSP 페이지를 기본적인 클래스가 아닌 다른 클래스로 부터 상속하도록 변경 javax.servlet.jsp. HttpJspPage 제6장

1. page 지시문 contentType 속성 브라우저가 서버로부터 받은 내용에 대한 문자집합 결정기준 JSP 내용의 타입을 브라우저에 알리는 목적 브라우저 하여금 한글 처리를 올바르게 하도록 하는 목적 브라우저가 서버로부터 받은 내용에 대한 문자집합 결정기준 우선순위 1. HTTP 응답 헤더의 Content-Type 정보 내의 charset 속성 값 page 지시문의 contentType 속성이 HTTP 응답헤더의 Content-Type을 설정하는 역할 page 지시문의 contentType 속성을 적지 않으면 Tomcat은 기본적으로 server.xml에 있는 <Connector> 태그의 URIEncoding 속성에 설정된 것으로 지정해 버리며 이것이 아래 우선 순위 2의 HTML의 <meta>선언보다 우선한다. 우선순위 2. HTML 문서 내의 meta선언 및 http-equiv 속성으로 설정된 Content-Type 헤더의 charset 속성 값 우선순위 3. HTML 문서 내 각 요소의 charset 속성 값 Content-Type: text/html; charset=utf-8 제6장

1. page 지시문 contentType 속성 예제 [예제 6.1] jspbook\ch06\hangul_test1.jsp 01 02 03 04 05 06 07 08 09 <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/> <title>한글 테스트</title> </head> <body> 한글 테스트 </body> </html> [예제 6.2] jspbook\ch06\hangul_test2.jsp 01 02 03 04 05 06 07 08 09 10 <%@ page contentType="text/html;charset=utf-8"%> <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=utf-8" /> <title>한글 테스트</title> </head> <body> 한글 테스트 </body> </html> 제6장

1. page 지시문 pageEncoding 속성 JSP 1.2 사양에서 추가 contentType 속성에서 utf-8 인코딩 방법을 지정 에디터에서 JSP 저장시에 utf-8 인코딩 방법 사용 한글이 사용되는 JSP 페이지 내에서 contentType은 명확하게 "text/html;charset=utf-8"으로 지정하고 pageEncoding 속성은 생략 "pageEncoding 속성이 지정되어 있지 않으면 contentType 속성에서 지정된 문자 코드로 JSP 파일을 읽어 들임" 제6장

1. page 지시문 import 속성 Java 코딩에서의 import와 100% 동일한 역할 데이터베이스 처리, 수학 관련 함수, 파일 업로드, 이미지 처리등과 같은 작업을 수행하기 위하여 관련된 패키지나 클래스를 지정하여 활용하고자 하는 의도를 JSP 엔진 및 컨테이너에게 알려주는 역할 JSP 코딩을 할 때 프로그래머가 import하지 않아도 되는 패키지 java.lang.*; javax.servlet.*; javax.servlet.jsp.* javax.servlet.http.*; <%@ page import="java.util.*" %> 제6장

1. page 지시문 import 속성 사용법 예 한번에 여러 개의 패키지 및 클래스를 지정 <%@ page import="java.util.*, java.sql.*, java.io.BufferedReader" %> <%@ page import="java.util.*" %> <%@ page import="java.sql.*" %> <%@ page import="java.io.BufferedReader" %> 제6장

1. page 지시문 import 속성 예제 import 속성 없이 Fully-qualified Name (완전한 이름) 을 활용한 예제 [예제 6.3-1] jspbook\ch06\import_test1.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 <%@ page contentType="text/html;charset=utf-8" %> <html> <head> <title>완전한 이름 사용</title> </head> <body> <% java.util.Calendar cal = java.util.Calendar.getInstance(); %> 오늘의 날짜: <%= cal.get(java.util.Calendar.YEAR) %>년 <%= cal.get(java.util.Calendar.MONTH) + 1 %>월 <%= cal.get(java.util.Calendar.DATE) %>일 </body> </html> // 1을 더하는 이유는 cal.get(java.util.Calendar.MONTH)가 0에서 11사이의 수를 리턴하기 때문 제6장

1. page 지시문 import 속성 예제 import 속성 사용 [예제 6.3-2] jspbook\ch06\import_test2.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 <%@ page contentType="text/html; charset=utf-8" %> <%@ page import="java.util.Calendar" %> <html> <head> <title>import 속성 및 단순한 이름 사용</title> </head> <body> <% Calendar cal = Calendar.getInstance(); %> 오늘의 날짜: <%= cal.get(Calendar.YEAR) %>년 <%= cal.get(Calendar.MONTH) + 1 %>월 <%= cal.get(Calendar.DATE) %>일 </body> </html> 제6장

1. page 지시문 errorPage와 isErrorPage 속성 info 속성 errorPage isErrorPage JSP 페이지 내에서 Exception이 발생하는 경우 새롭게 실행할 페이지를 지정하기 위하여 사용 isErrorPage 현재 페이지가 Exception 처리를 위한 페이지임을 지정하기 위해 사용 10장 info 속성 JSP 페이지에 대한 설명을 기입하는 용도로 활용 <%@ page info="Writer: Youn-Hee Han" %> <%@ page info="Date: 2008-08-15" %> <%@ page info="Description: JSP Page directive's info attribute" %> 제6장

1. page 지시문 buffer와 autoflush 속성 javax.servlet.jsp.JspWriter 클래스 객체인 out 웹 브라우저로 출력 결과를 내보낼 때 사용하는 기본 객체 out 객체가 지닌 버퍼 (buffer) 웹브라우저로 출력 결과를 바로 내보내는 것이 아니라 일정량만큼 쌓아서 한꺼번에 보내는 역할 제6장

1. page 지시문 buffer와 autoflush 속성 버퍼를 사용할 때의 장점 데이터를 좀 더 효율적이고 안전하게 전송할 수 있다. 데이터 전송 성능이 향상된다. JSP 수행 도중에 버퍼에 쌓인 내용 자체를 비울 수 있다. 버퍼에 쌓인 내용을 비우고 새로운 내용을 다시 버퍼에 넣을 수 있다. 버퍼가 가득 찰 때까지 HTTP 헤더 정보를 변경할 수 있다. out 객체의 기본 버퍼 크기는 8Kbyte 기본 크기 변경 방법 <%@ page buffer="4kb" %> 제6장

1. page 지시문 buffer와 autoflush 속성 버퍼를 사용하지 않도록 설정하는 방법 버퍼를 사용하지 않을 때의 제약사항 출력이 한번이라도 보내진 이후에 HTTP 헤더 내용을 변경할 수 없다. 보내어진 내용 자체를 취소할 수 없다. 보내어진 내용을 새로운 내용으로 바꿀 수 없다. 액션 태그인 <jsp:forward> 사용이 불가하다. (9장) <%@ page buffer=“none" %> 제6장

1. page 지시문 buffer와 autoflush 속성 flush 과정 autoFlush 속성 JSP 출력 결과를 버퍼에 계속해서 넣게 되면 버퍼가 가득 차게 되는데 기본적으로 버퍼가 가득 차게 되면 그 내용들을 모두 비우고 웹 브라우저로 전송함 autoFlush 속성 autoFlush="true" (디폴트): 버퍼가 가득 차게 되면 버퍼의 내용을 브라우저로 보내고 계속해서 작업을 진행한다. autoFlush="false" : 버퍼가 가득차게 되면 java.io.IOException 발생시키고 JSP 페이지 수행 작업을 중지한다. 제6장

1. page 지시문 buffer와 autoflush 속성 예제 [예제 6.4-1] jspbook\ch06\buffer_test1.jsp 01 02 03 04 05 06 07 08 09 10 11 12 <%@ page contentType="text/html; charset=utf-8" %> <%@ page buffer="1kb" autoFlush="false" %> <html> <head> <title>버퍼 테스트 1</title> </head> <body> <% for (int i=0; i<2000; i++) { %> ABC <% } %> </body> </html> // 출력버퍼 사이즈는 1024 bytes, autoflush 속성은 false // for 루프를 사용하여 ABC 글자를 2000번 출력 제6장

1. page 지시문 buffer와 autoflush 속성 예제 [예제 6.4-2] jspbook\ch06\buffer_test2.jsp 01 02 03 04 05 06 07 08 09 10 11 12 <%@ page contentType="text/html; charset=utf-8" %> <%@ page buffer="1kb" autoFlush=“true" %> <html> <head> <title>버퍼 테스트 2</title> </head> <body> <% for (int i=0; i<2000; i++) { %> ABC <% } %> </body> </html> // 출력버퍼 사이즈는 1024 bytes, autoflush 속성은 true // for 루프를 사용하여 ABC 글자를 2000번 출력 제6장

1. page 지시문 session 속성 language 속성 웹 브라우저와 Tomcat 사이에 지속적으로 필요한 정보를 저장 사용자가 로그인을 한 이후 계속적으로 로그인이 되어있는지에 관한 정보, 쇼핑몰에서 장바구니에 담긴 아이템의 정보 등을 저장해 놓을 때 세션을 활용 session 속성은 바로 이러한 기능을 활성화하거나 해지하는 목적으로 활용 기본 값은 "true". 이 속성을 "false"로 지정하는 경우는 거의 없다. 8장, 11장 language 속성 서버 측 스크립팅 언어를 지정하기 위한 속성 향후 다른 언어를 지원할 수도 있을 가능성을 염두해 두고 만든 속성 <%@ page session="true" %> <%@ page language="java" %> 제6장

1. page 지시문 isThreadSafe 속성 Tomcat은 각각의 사용자 요청에 대해서 프로세스를 만드는 것이 아니라 쓰레드로 만들어 처리 이때, JSP 페이지가 지니고 있는 자원 (예를 들어, 멤버 변수)을 각 쓰레드가 공유하기 때문에 예상치 못하게 공유된 자원의 데이터가 엉뚱한 값을 가질 수도 있다. page 지시문의 isThreadSafe 속성은 바로 이러한 쓰레드 처리로 인한 안정성 문제를 보장하도록 지시하는 것 "false"로 설정할 이유가 없다. <%@ page isThreadSafe="true" %> 제6장

1. page 지시문 extends 속성 JSP 페이지가 Servlet 소스로 변환되는 시점에서 Servlet이 상속받을 클래스를 지정할 때 사용 JSP 2.1 스펙에서 정한 기본적인 상속 인터페이스 javax.servlet.jsp.HttpJspPage 인터페이스 Tomcat에서 위 인터페이스를 구현하는 클래스 org.apache.jasper.runtime.HttpJspBase extends 속성은 위 Tomcat에서 제공하는 클래스가 아닌 다른 클래스를 상속하여 Servlet으로 변경하고자 할 때 사용 사용할 이유가 거의 없다. <%@ page extends="com.thinkonweb.runtime.HttpJspBase" %> 제6장

2.include 지시문 JSP에서 현재의 페이지로 다른 페이지를 포함하는 방법 include 지시문의 사용법 중요 특성 JSP 파일을 Java파일로 변환 하기 전에 include 지시문에서 지정한 파일의 내용을 그대로 현재 위치에 삽입시킨 후 Java 파일로 변환 <%@ include file="포함할 파일" %> 제6장

2.include 지시문 include 지시문 예제 [예제 6.5-1] jspbook\ch06\includer.jsp 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 <%@ page contentType="text/html;charset=utf-8" %> <html> <head> <title>include 지시문</title> </head> <body> <% String start ="["; String end ="]"; %> 현재의 날짜와 시각은 <%@ include file="date.jspf" %> // include 지시문을 통하여 date.jspf 파일을 포함 입니다. <br/> <%= jspf_var %> // 현재 파일에서 선언되지 않은 변수인 jspf_var를 출력 </body> </html> [예제 6.5-2] jspbook\ch06\date.jspf 01 02 03 04 05 06 <%@ page contentType="text/html;charset=utf-8" %> <%@ page import="java.util.*" %> <% String jspf_var = "좋은 시간 되세요."; %> <%= start + new Date() + end %> 제6장

2.include 지시문 include 지시문 예제 <%@ page contentType="text/html;charset=utf-8" %> <html> <head> <title>include 지시문</title> </head> <body> <% String start ="["; String end ="]"; %> 현재의 날짜와 시각은 <%@ page import="java.util.*" %> String jspf_var = "좋은 시간 되세요."; <%= start + new Date() + end %> 입니다. <br/> <%= jspf_var %> </body> </html> include 지시문 예제 date.jspf가 includer.jsp에 삽입이 된 직후의 includer.jsp의 코드 모습 jspf에 사용된 page 지시문 들은 합쳐진 페이지의 상단에 위치한다고 생각 해도 됨 page 지시문의 contentType 속성이 두 번 적용되게 되는데 이는 한번만 적용되는 것 으로 변경됨 가능하면 jspf 파일에는 contentType을 적지말자 제6장

2.include 지시문 포함되는 파일의 변경과 적용 제6장

2.include 지시문 포함되는 파일의 변경과 적용 JSP 2.1 스펙에서 찾을 수 있는 이와 관련된 내용 Tomcat 6.0은 include 지시문으로 포함되는 파일의 변경 상태를 감지해서 재컴파일 하고 새롭게 내용을 출력해준다. 하지만, 모든 웹 콘테이너가 이렇게 포함되는 파일의 내용을 감지하여 다시 컴파일 하지는 않는다는 점에 주의 "include 지시문에 의하여 포함되는 파일 내용이 변경되었을 때 웹 콘테이너 는 그것을 알 수 있는 매커니즘을 포함할 수 있으며 include 지시문을 사용하 는 JSP 페이지를 재컴파일할 수도 있다. 하지만, 강제사항은 아니다." 제6장

2.include 지시문 include 지시문의 적당한 활용 예 include 지시문은 다음과 같이 두 가지 용법으로 사용 많은 JSP 페이지에서 자주 사용되는 공용 변수 지정 많은 JSP 페이지에서 간단하면서도 중복되어 사용되는 텍스트나 문구 (예: 날짜나 저작권 표시) 많은 JSP 페이지가 다음과 같이 session 기본 객체에 저장된 속성 값 몇몇 개를 읽어 사용한다고 가정 <% String userID = (String)session.getAttribute("USERID"); String userName = (String)session.getAttribute("USERNAME"); %> ... <%= userID %> <%= userName %> 이 부분을 별도의 파일로 만들고 include 지시문으로 포함해서 사용하는 편이 좋음 제6장

2.include 지시문 include 지시문의 적당한 활용 예 포함되는 파일 만들기: sessionVar.jspf 포함하는 파일 <% String userID = (String)session.getAttribute("USERID"); String userName = (String)session.getAttribute("USERNAME"); %> <%@ include file="sessionVar.jspf" %> ... <%= userID %> <%= userName %> 제6장

2.include 지시문 include 지시문의 적당한 활용 예 포함하는 파일 포함되는 파일 만들기: dateNotify.jspf 포함하는 파일 <% java.util.Calendar cal = java.util.Calendar.getInstance(); %> <%= cal.get(java.util.Calendar.YEAR) %>년 <%= cal.get(java.util.Calendar.MONTH) + 1 %>월 <%= cal.get(java.util.Calendar.DATE) %>일 ... <%@ include file="dateNotify.jspf" %> <body> <html> 제6장