뇌를 자극하는 JSP & Servlet 슬라이드

Similar documents
다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

계속되는 JSTL 의활약 <c:foreach> 액션의 items에사용할수있는자료의형태 - <c:foreach var="dish" items="${???}"> - 즉, 위의??? 부분에사용할수있는자료의형태는다음과같다. 배열, 컬렉션프레임워크,, 로구분된항목들을포함한문자열

- 다음은 대한민국, 미국, 일본 의화폐문자출력과날짜, 시간을출력하는 JSP(WorldFormat.jsp) contenttype="text/html; charset=euc-kr"%> import="java.util.*"%>

Microsoft PowerPoint - aj-lecture8.ppt [호환 모드]

서블릿의라이프사이클 뇌를자극하는 JSP & Servlet

PowerPoint 프레젠테이션

PowerPoint Template

윈도우즈프로그래밍(1)

Visual Basic 반복문

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

뇌를 자극하는 JSP & Servlet 슬라이드

TP_jsp7.PDF

Microsoft PowerPoint 웹 연동 기술.pptx

JSP 의내장객체 response 객체 - response 객체는 JSP 페이지의실행결과를웹프라우저로돌려줄때사용되는객체이다. - 이객체는주로켄텐츠타입이나문자셋등의데이터의부가정보 ( 헤더정보 ) 나쿠키 ( 다음에설명 ) 등을지정할수있다. - 이객체를사용해서출력의방향을다른

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx

04장

뇌를 자극하는 JSP & Servlet 슬라이드

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

뇌를 자극하는 JSP & Servlet 슬라이드

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

PowerPoint 프레젠테이션

뇌를 자극하는 JSP & Servlet 슬라이드

Microsoft PowerPoint - chap06-1Array.ppt

PowerPoint 프레젠테이션

PowerPoint Presentation

<4D F736F F F696E74202D203130C0E52EBFA1B7AF20C3B3B8AE205BC8A3C8AF20B8F0B5E55D>

뇌를 자극하는 JSP & Servlet 슬라이드

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

Microsoft PowerPoint - Java7.pptx

게시판 스팸 실시간 차단 시스템

금오공대 컴퓨터공학전공 강의자료

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

Java ...

Microsoft PowerPoint 세션.ppt

PowerPoint Presentation

OCW_C언어 기초

Microsoft PowerPoint - e pptx

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

뇌를 자극하는 JSP & Servlet 슬라이드

Microsoft PowerPoint - [2009] 02.pptx

PowerPoint Presentation

Microsoft PowerPoint - 4강.pptx

쉽게 풀어쓴 C 프로그래밍

컴파일러

Data Provisioning Services for mobile clients

MySQL-.. 1

PowerPoint 프레젠테이션

Microsoft Word - src.doc

Tcl의 문법

뇌를 자극하는 JSP & Servlet 슬라이드

PowerPoint Presentation

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi

Microsoft PowerPoint - chap04-연산자.pptx

Data Provisioning Services for mobile clients

Microsoft PowerPoint - chap06-2pointer.ppt

API STORE 키발급및 API 사용가이드 Document Information 문서명 : API STORE 언어별 Client 사용가이드작성자 : 작성일 : 업무영역 : 버전 : 1 st Draft. 서브시스템 : 문서번호 : 단계 : Docum

중간고사

14-Servlet

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

10 강. 쉘스크립트 l 쉘스크립트 Ÿ 쉘은명령어들을연속적으로실행하는인터프리터환경을제공 Ÿ 쉘스크립트는제어문과변수선언등이가능하며프로그래밍언어와유사 Ÿ 프로그래밍언어와스크립트언어 -프로그래밍언어를사용하는경우소스코드를컴파일하여실행가능한파일로만들어야함 -일반적으로실행파일은다

뇌를 자극하는 JSP & Servlet 슬라이드

PowerPoint 프레젠테이션

슬라이드 1

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

뇌를 자극하는 JSP & Servlet 슬라이드

JAVA PROGRAMMING 실습 02. 표준 입출력

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CC0E7B0EDB0FCB8AE5C53746F636B5F4D616E D656E74732E637070>

Microsoft PowerPoint - additional01.ppt [호환 모드]

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과

Microsoft PowerPoint - chap-03.pptx

C++ Programming

adfasdfasfdasfasfadf

쉽게 풀어쓴 C 프로그래밍

ISP and CodeVisionAVR C Compiler.hwp

쉽게 풀어쓴 C 프로그래밊

<4D F736F F F696E74202D20C1A633C0E52043C7C1B7CEB1D7B7A5B1B8BCBABFE4BCD2>

PowerPoint 프레젠테이션

HLS(HTTP Live Streaming) 이용가이드 1. HLS 소개 Apple iphone, ipad, ipod의운영체제인 ios에서사용하는표준 HTTP 기반스트리밍프로토콜입니다. 2. HLS 지원대상 - 디바이스 : iphone/ipad/ipod - 운영체제 :

PowerPoint Presentation

설계란 무엇인가?

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap03-변수와데이터형.pptx

2장 변수와 프로시저 작성하기

슬라이드 1

PowerPoint 프레젠테이션

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

JVM 메모리구조

PowerPoint Presentation

금오공대 컴퓨터공학전공 강의자료

PowerPoint 프레젠테이션

< E20C6DFBFFEBEEE20C0DBBCBAC0BB20C0A7C7D12043BEF0BEEE20492E707074>

PowerPoint 프레젠테이션

The C++ Programming Language 5 장포인터, 배열, 구조체 5.9 연습문제 다음의선언문을순서대로작성해보자. 문자에대한포인터, 10개정수의배열, 10개정수의배열의참조자, 문자열의배열에대한포인터, 문자에대한포인터에대한포인터, 상수정수, 상수

Microsoft PowerPoint - Lesson2.pptx

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

목차 포인터의개요 배열과포인터 포인터의구조 실무응용예제 C 2

PowerPoint Presentation

Transcription:

JSTL 사용하기 JSP & Servlet

2/65 Contents 학습목표 JSTL이란 JSP 페이지를작성할때유용하게사용할수있는여러가지커스텀액션과함수가포함되어있는라이브러리이다. 이라이브러리는인터넷에서무상으로다운로드받을수있는데이장에서는라이브러리를다운로드받아서설치하고사용하는방법을알아보자. 내용 JSTL이란? JSTL 설치하기 코어라이브러리사용하기 포매팅라이브러리사용하기 함수라이브러리사용하기

1. JSTL 이란? JSTL 이란? JSP 표준태그라이브러리 (JSP Standard Tag Library) 의약어 적용목적 : 간단한프로그램로직의구사 ( 자바의변수선언, if 문, for 문등에해당하는로직 ) 다른 JSP 페이지호출 (<c:redirect>, <c:import>) 날짜, 시간, 숫자의포맷 JSP 페이지하나를가지고여러가지언어의웹페이지생성 데이터베이스로의입력, 수정, 삭제, 조회 XML 문서의처리 문자열을처리하는함수호출 문자열을처리하는함수호출을제외한나머지기능들은모두커스텀액션형태로제공된다. 3/80

1. JSTL 이란? JSTL 커스텀액션예 <c:foreach> 커스텀액션은자바의 for 문과비슷한기능을한다. <c:foreach begin= 1 end= 10 > <H5> 안녕하세요, 여러분!</H5> </c:foreach> 시작태그와끝태그사이에있는코드를 10 번반복해서출력합니다. <fmt:formatnumber> 커스텀액션은수치값을포맷하는기능을한다. <fmt:formatnumber value= 3.14159 pattern= #.00 /> 주어진수치를소수점이하 2 자리까지끊어서출력합니다 JSTL 에는커스텀액션만있는게아니라표현식언어에서사용할수있는 EL 함수도지원한다. ${fn:touppercase( Hello )} 이함수는 HELLO 라는문자열을리턴합니다 4/80

5/80 1. JSTL 이란? JSTL 구성라이브러리 [ 표 9-1] JSTL 을구성하는작은라이브러리들 라이브러리기능 URI 식별자접두어 코어 포매팅 데이터베이스 일반프로그래밍언어에서제공하는것과유사한변수선언. 실행흐름의제어기능을제공하고, 다른 JSP 페이지로제어를이동하는기능도제공합니다. 숫자, 날짜, 시간을포매팅하는기능과국제화, 다국어지원기능을제공합니다 데이터베이스의데이터를입력 / 수정 / 삭제 / 조회하는기능을제공합니다. http://java.sun.com/jsp/jstl/core http://java.sun.com/jsp/jstl/fmt http://java.sun.com/jsp/jstl/sql XML 처리 XML 문서를처리할때필요한기능을제공합니다 http://java.sun.com/jsp/jstl/xml x 함수문자열을처리하는함수를제공합니다. http://java.sun.com/jsp/jstl/functions fn c fmt sql

6/80 1. JSTL 이란? JSTL 사용 JSP 페이지에서 taglib 지시자를이용해서 JSTL 라이브러리의 URI 식별자와접두어를연결해야한다. taglib 지시자는다른지시자와마찬가지로 <%@ 으로시작해서 %> 로끝난다. taglib 지시자에는 uri와 prefix라는두개의애트리뷰트를정의 각각 URI 식별자와접두어를값으로주어야한다. <%@taglib prefix= c uri= http://java.sun.com/jsp/jstl/core %> 접두어 라이브러리를식별하는 URI

7/80 2. JSTL 설치하기 JSTL 1.1 라이브러리파일 jstl.jar standard.jar 1 9 장의예제를위한 brain09 웹애플리케이션디렉터리를만들고, 그아래에 WEB-INF/lib 서브디렉터리를만드세요 [ 그림 9-1] JSTL 을설치하는간단한방법

8/80 2. JSTL 설치하기 3 examples/web-inf/lib 디렉터리에있는 JSTL 파일을 brain09/web-inf/lib 디렉터리로복사하세요 2 examples 웹애플리케이션디렉터리의 WEB-INF/lib 서브디렉터리로가세요.

9/80 2. JSTL 설치하기 JSTL 다운로드받기 URL - http://jakarta.apache.org/

10/80 2. JSTL 설치하기 JSTL 다운로드받기 왼쪽메뉴에서 Downloads 를선택한다.

11/80 2. JSTL 설치하기 JSTL 다운로드받기 앞페이지화면에서 Taglibs 를선택한다.

12/80 2. JSTL 설치하기 JSTL 다운로드받기 앞페이지화면에서 Standard 1.1 Taglib 를선택한다.

13/80 2. JSTL 설치하기 JSTL 다운로드받기 앞페이지화면에서 1.1.2.zip 파일을선택해서다운로드받는다.

14/80 2. JSTL 설치하기 톰캣에 JSTL 설치하기 1 jakarta-taglibs-standard-1.1.2/lib 디렉터리로가보세요 2 jstl.jar 와 standard.jar 파일이있을것입니다

2. JSTL 설치하기 톰캣에 JSTL 설치하기 brain09 웹애플리케이션디렉터리와 WEB-INF/lib 서브디렉터리를만들고, 다음과같이 JSTL 을설치한다. 2 압축파일에서꺼낸 JSTL 파일을 brain09/web-inf/lib 디렉터리에설치하세요. 1 brain09 웹애플리케이션디렉터리를만들고, 그아래에 WEB-INF/lib 서브디렉터리를만드세요 15/80

3. 코어라이브러리사용하기 <c:set> 커스텀액션 속성변수를선언하고초기값을대입하는커스텀액션 자바프로그램에서변수를선언할때는기본적으로변수의타입과이름을기술하고, 선택적으로초기값을기술한다. int num=100; 변수의타입 변수의이름 초기값 <c:set> 커스텀액션을이용해서속성변수를선언할때는변수의이름과초기 값을설정한다. <c:set var= num value= 100 /> 변수의이름 초기값 value 애트리뷰트값위치에 EL 식을쓸수도있다. <c:set var= sum value= ${num1+num2} /> value 애트리뷰트값으로 EL 식을쓸수도있습니다 16/80

17/80 3. 코어라이브러리사용하기 <c:set> 커스텀액션 [ 예제 9-1] <c:set> 커스텀액션의사용예 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= c uri= http://java.sun.com/jsp/jstl/core %> <c:set var= num1 value= 7 /> <c:set var= num2 value= 9 /> <c:set var= result value= ${num1*num2} /> <HTML> <HEAD><TITLE> 곱셈프로그램 </TITLE></HEAD> <BODY> ${num1} 과 ${num2} 의곱은? ${result} </BODY> </HTML> [ 그림 9-9] 예제 9-1 의실행결과

3. 코어라이브러리사용하기 <c:set> 커스텀액션 <c:set> 액션을이용하여선언한변수는기본적으로 page 데이터영역의속성으로바인딩된다. scope 애트리뷰트를이용하여바인딩되는내장객체 ( 생존범위 ) 를지정가능 page, request, session, application 중한값을지정 각각 page, request, session, application 내장객체에속성으로바인딩 <c:set var= PRICE value= 15000 scope= request /> 변수가저장될데이터영역 18/80

19/80 3. 코어라이브러리사용하기 <c:set> 커스텀액션 [ 예제 9-2] <c:set> 커스텀액션의사용예 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= c uri= http://java.sun.com/jsp/jstl/core %> <c:set var= CODE value= 80012 scope= request /> <c:set var= NAME value= 온습도계 scope= request /> <c:set var= PRICE value= 15000 scope= request /> <jsp:forward page= ProductInfoView.jsp /> 호출 request 데이터영역에데이터를저장합니다 <%@page contenttype= text/html; charset=euc-kr %> <HTML> <HEAD><TITLE> 상품정보 </TITLE></HEAD> <BODY> <H3> 상품정보 </H3> 상품코드 : ${CODE} <BR> 상품명 : ${NAME} <BR> 단가 : ${PRICE} 원 <BR> </BODY> </HTML> request 데이터영역에있는데이터값을가져다가출력합니다

3. 코어라이브러리사용하기 <c:remove> 커스텀액션 <c:set> 액션으로선언한변수는삭제시에명시적으로삭제하여야함. <c:remove> 커스텀액션은내장객체에바인딩된속성을삭제 <c:remove var= num /> 변수의이름 page, request, session, application 내장객체에저장되어있는 num이라는이름의애트리뷰트를모두찾아서제거한다. 특정영역의속성만제거하려면 scope 애트리뷰트를사용하면된다. <c:remove var= code scope= request /> request 데이터영역에있는변수를제거합니다 20/80

3. 코어라이브러리사용하기 <c:if> 커스텀액션 <c:if> 커스텀액션은자바프로그램의 if 문과비슷한역할을한다. 자바프로그램에서 if 문을작성하는방법은다음과같다. 조건식 if (num1 > num2) { System.out.println( num1 이더큽니다. ); } 조건식의결과가 true 일때만실행되는명령문 <c:if> 커스텀액션에서는조건식을괄호안에쓰는것은아니라, test 라는이름 의애트리뷰트값으로지정해야한다. 조건식 <c:if test= ${num1 > num2} > num1 이더큽니다. </c:if> 조건식의결과가 true 일때만출력되는코드 21/80

22/80 3. 코어라이브러리사용하기 <c:if> 커스텀액션 [ 예제 9-3] <c:if> 커스텀액션의사용예 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= c uri= http://java.sun.com/jsp/jstl/core %> <HTML> <HEAD><TITLE> 최대값구하기 </TITLE></HEAD> <BODY> 최대값 : <c:if test= ${param.num1 - param.num2 >= 0} > ${param.num1} </c:if> <c:if test= ${param.num1 - param.num2 < 0} > ${param.num2} </c:if> </BODY> </HTML> URL 뒤에이런식으로입력데이터값을직접쓰세요 [ 그림 9-11] 예제 9-3 의실행결과

3. 코어라이브러리사용하기 <c:choose> 커스텀액션 <c:choose> 커스텀액션은자바프로그램의 switch 문과비슷한역할을한다. <c:when>, <c:otherwise> 커스텀액션과함께사용되며, 두커스텀액션은각각 switch 문의 case, default 절과비슷한역할을한다. 자바프로그램의 switch 문의문법은다음과같다. 비교의기준이되는변수 switch (num) { case 0 : System.out.println( 처음뵙겠습니다. ); break; case 1 : System.out.println( 반갑습니다. ); break; default : System.out.println( 안녕하세요. ); break; } 첫번째조건을만족할때실행되는명령문 두번째조건을만족할때실행되는명령문 아무조건도만족하지않을때실행되는명령문 23/80

24/80 3. 코어라이브러리사용하기 <c:choose> 커스텀액션 <c:choose> 커스텀액션의전체적인구조는 switch 문과비슷 조건식을 <c:when> 커스텀액션의 test 애트리뷰트에 EL 식형태로지정 조건식을직접기술합니다. <c:choose> <c:when test= ${num == 0} > 처음뵙겠습니다. <BR> </c:when> <c:when test= ${num == 1} > 반갑습니다. <BR> </c:when> <c:otherwise> 안녕하세요. <BR> </c:otherwise> </c:choose> 첫번째조건을만족할때출력할코드 두번째조건을만족할때출력할코드 아무조건도만족하지않을때출력할코드

25/80 3. 코어라이브러리사용하기 <c:choose> 커스텀액션 [ 예제 9-4] <c:choose> 커스텀액션의사용예 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= c uri= http://java.sun.com/jsp/jstl/core %> <HTML> <HEAD><TITLE> 인사하기 </TITLE></HEAD> <BODY> <c:choose> <c:when test= ${param.num == 0} > 처음뵙겠습니다. <BR> </c:when> <c:when test= ${param.num == 1} > 반갑습니다. <BR> </c:when> <c:otherwise> 안녕하세요. <BR> </c:otherwise> </c:choose> </BODY> </HTML> [ 그림 9-11] 예제 9-3 의실행결과

3. 코어라이브러리사용하기 <c:foreach> 커스텀액션 <c:foreach> 커스텀액션은자바프로그램의 for 문에해당하는기능을제공 특정 HTML 코드를지정된횟수만큼반복해서출력하는등에사용 <c:foreach> 액션을사용할때는 begin과 end라는이름의애트리뷰트를쓰고, 거기에각각카운터변수의시작값과끝값을지정하면된다. 카운터의초기값반복종료의기준값카운터를증가시키는식 for (int cnt = 0; cnt < 10; cnt++) { System.out.println( 야호 ); } 반복실행할명령문 시작값 끝값 <c:foreach begin= 1 end= 10 > 야호 <BR> </c:foreach> 반복출력할명령문 26/80

3. 코어라이브러리사용하기 <c:foreach> 커스텀액션 반복출력할코드안에서카운터변수의값을사용해야할경우에는 <c:foreach> 태그안에 var라는애트리뷰트를쓰고, 그값으로카운터변수의이름을지정하면된다. 카운터변수 <c:foreach var= cnt begin= 1 end= 10 > ${cnt} <BR> </c:foreach> 카운터변수의값은기본적으로 1 씩증가하지만, 증가값을바꾸려면 <c:foreach> 태그에 step 이라는애트리뷰트를추가하고증가치를지정 증가치 <c:foreach var= cnt begin= 1 end= 10 step= 2 > ${cnt} <BR> </c:foreach> 27/80

28/80 3. 코어라이브러리사용하기 <c:foreach> 커스텀액션 [ 예제 9-5] <c:foreach> 커스텀액션의사용예 (1) <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= c uri= http://java.sun.com/jsp/jstl/core %> <HTML> <HEAD><TITLE> 메아리 </TITLE></HEAD> <BODY> <c:foreach var= cnt begin= 1 end= 5 > <FONT size=${cnt} > 야 ~ 호 ~ </FONT> <BR> </c:foreach> </BODY> </HTML> [ 그림 9-13] 예제 9-5 의실행결과

3. 코어라이브러리사용하기 <c:foreach> 커스텀액션의사용방법 <c:foreach> 커스텀액션의 items 애트리뷰트를이용하면여러개의항목으로구성된데이터를순서대로출력하는일도할수있다. java 스타일반복문 배열의각항목을저장할변수 배열의이름 <c:foreach var= str items= ${arr} > ${str} <BR> </c:foreach> <c:foreach> 액션의 items 애트리뷰트를이용해서처리할수있는데이터 배열 java.util.collection 객체 java.util.iterator 객체 java.util.enumeration 객체 java.util.map 객체 콤마 (,) 로구분된항목들을포함한문자열 29/80

30/80 3. 코어라이브러리사용하기 <c:foreach> 커스텀액션 [ 예제 9-6] <c:foreach> 커스텀액션의사용예 (2) <%@page contenttype= text/html; charset=euc-kr %> <% String arr[] = { 불고기백반, 오므라이스, 콩국수 }; request.setattribute( MENU, arr); %> <jsp:forward page= LunchMenuView.jsp /> 호출 request 데이터영역에배열을저장합니다. <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= c uri= http://java.sun.com/jsp/jstl/core %> <HTML> <HEAD><TITLE> 구내식당 </TITLE></HEAD> <BODY> <H3> 오늘의점심메뉴입니다.</H3> <UL> <c:foreach var= dish items= ${MENU} > <LI>${dish}</LI> </c:foreach> </UL> </BODY> </HTML> 배열항목을순서대로가져다가출력합니다.

3. 코어라이브러리사용하기 <c:fortokens> 커스텀액션 <c:fortokens> 커스텀액션은자바의 for 문과 java.util.stringtokenizer 클래스의기능을합친것같은기능을제공한다. items, delims, var라는 3개의애트리뷰트를사용 items에는토큰을포함하는문자열을, delims에는토큰분리에사용할구획문자를, var에는분리된토큰을대입할변수의이름을지정 토큰을대입할변수토큰을포함한문자열구획문자 <c:fortokens var= pet items= 햄스터이구아나소라게 delims= > ${pet} <BR> </c:fortokens> 토큰의구획문자로한종류이상의문자를지정할수도있다. 토큰을대입할변수토큰을포함한문자열구획문자 <c:fortokens var= fruit items= 딸기 * 키위 / 체리 - 참외 delims= */- > ${fruit} <BR> </c:fortokens> 31/80

32/80 3. 코어라이브러리사용하기 <c:fortokens> 커스텀액션 [ 예제 9-7] <c:fortokens> 커스텀액션의사용예 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= c uri= http://java.sun.com/jsp/jstl/core %> <HTML> <HEAD><TITLE> 동물의왕국 </TITLE></HEAD> <BODY> 사자의생일잔치에누가왔을까요? <BR><BR> <c:set var= guests value= 토끼 ^^ 거북이 ~ 사슴 /> <c:fortokens var= animal items= ${guests} delims= ^~ > ${animal} <BR> </c:fortokens> </BODY> </HTML> [ 그림 9-15] 예제 9-7 의실행결과

3. 코어라이브러리사용하기 <c:catch> 커스텀액션 <c:catch> 커스텀액션은자바프로그래밍언어의 try문과비슷 <c:catch> 커스텀액션의시작태그와끝태그사이에서에러가발생하면실행의흐름이곧바로 <c:catch> 액션다음에있는코드로넘어간다. 익셉션객체를저장할변수 <c:catch var= e > <% int result = num1 / num2 %> 나눗셈의결과는? <%= result %> </c:catch> 에러가발생할수있는부분 <c:catch> 커스텀액션은자바의 try 블록에해당하는일만하기때문에 catch 블록에해당하는일은별도로코딩해야한다. 33/80

34/80 3. 코어라이브러리사용하기 <c:catch> 커스텀액션 var 애트리뷰트에지정된변수 ( 익셉션객체가저장되는변수 ) 는 <c:catch> 액션의범위밖에서도 EL 식을통해사용할수있으므로, 이를이용해서에러처리를하면된다. 익셉션이발생했는지체크하는조건식 <c:if test= ${e!= null} > 에러메시지 : ${e.message} </c:if> 에러메시지를출력하는코드 ${e.message} 라는 EL 식은익셉션객체 e 에대해 getmessage 메서드를호출하는일을 한다.

35/80 3. 코어라이브러리사용하기 <c:catch> 커스텀액션 [ 예제 9-8] <c:catch> 커스텀액션의사용예 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= c uri= http://java.sun.com/jsp/jstl/core %> <% String str1 = request.getparameter( NUM1 ); String str2 = request.getparameter( NUM2 ); int num1 = Integer.parseInt(str1); int num2 = Integer.parseInt(str2); %> <HTML> <HEAD><TITLE> 나눗셈프로그램 </TITLE></HEAD> <BODY> <c:catch var= e > <% int result = num1 / num2; %> 나눗셈의결과는? <%= result %> </c:catch> <c:if test= ${e!= null} > 에러메시지 : ${e.message} </c:if> </BODY> </HTML> [ 그림 9-16] 예제 9-8 의실행결과

3. 코어라이브러리사용하기 <c:redirect> 커스텀액션의사용방법 <c:redirect> 커스텀액션은 sendredirect 메서드를통해다른웹자원을호출하는일을한다. 호출할웹자원의 URL은 url 애트리뷰트를이용해서지정하면된다. <c:redirect url= http://www.hanb.co.kr /> 호출할웹자원의 URL [ 예제 9-9] <c:redirect> 커스텀액션의사용예 <%@taglib prefix= c uri= http://java.sun.com/jsp/jstl/core %> <c:redirect url= Multiply.jsp > <c:param name= NUM1 value= 5 /> <c:param name= NUM2 value= 25 /> </c:redirect> 36/80

3. 코어라이브러리사용하기 <c:import> 커스텀액션 <c:import> 커스텀액션은 <jsp:include> 표준액션과비슷 다른 JSP 페이지뿐만아니라다른종류의웹자원도호출할수있다는점이차이 호출할웹자원의 URL 은 url 애트리뷰트를이용해서지정 <c:import url= http://www.hanb.co.kr/binfo/brainseries.jsp /> 호출할웹자원의 URL 호출할웹자원에데이터를넘겨주려면 <c:import> 커스텀액션의시작태그 와끝태그사이에 <c:param> 커스텀액션을쓰면된다. <c:import url= http://www.hanb.co.kr/adscrap.jsp > <c:param name= product value= TV /> <c:param name= ad_index value= 007 /> </c:import> 데이터이름 데이터값 37/80

38/80 3. 코어라이브러리사용하기 <c:url> 커스텀액션 <c:url> 커스텀액션은 <c:set> 커스텀액션과마찬가지로변수의선언에사용 URL 을쉽게다룰수있는방법을제공한다는점이차이 <c:url> 의사용방법은 <c:set> 과동일 var 애트리뷰트에변수이름을지정하고, value 애트리뷰트에변수의초기값을지정 <c:url var= myurl value= http://localhost:8080/brain09/add.jsp > 변수이름 변수값 <c:url> 커스텀액션은세션유지를위한 URL 재작성기법을지원 Response.encodeURL( http://localhost:8080/brain09/add.jsp ) <c:url value= http://localhost:8080/brain09/add.jsp >

3. 코어라이브러리사용하기 <c:url> 커스텀액션 <c:url> 의시작태그와끝태그사이에 <c:param> 커스텀액션을쓰면, URL 뒤에쿼리스트링형태로덧붙는데이터를지정할수있다. <c:url var= myurl value= http://localhost:8080/brain09/add.jsp > <c:param name= NUM1 value= 999 /> <c:param name= NUM2 value= 1 /> <c:param name= NAME value= Hidden Cursor /> </c:url> 데이터이름 데이터값 <c:param> 커스텀액션은 URL 인코딩도자동으로수행 쿼리스트링에사용할수없는예약문자를다른문자로변경 위의예제에서변경된 URL <http://localhost:8080/brain09/add.jsp?jsession=123456&num1=999&num2=1&name=hidden+sursor 39/80

40/80 3. 코어라이브러리사용하기 <c:url> 커스텀액션 [ 예제 9-10] <c:url> 커스텀액션의사용예 <%@taglib prefix= c uri= http://java.sun.com/jsp/jstl/core %> <c:url var= next value= Divide.jsp > <c:param name= NUM1 value= 100 /> <c:param name= NUM2 value= 25 /> </c:url> <c:redirect url= ${next} /> 1 [ 예제 9-10] 의 URL 을입력하고 Enter 키를누르면 2 <c:redirect> 태그의 url 애트리뷰트값에해당하는웹페이지가나타납니다.

3. 코어라이브러리사용하기 <c:out> 커스텀액션 <c:out> 커스텀액션은데이터를출력할때사용 웹브라우저에의해특수한문자로해석되는 <, >, &,, 를포함하는데이터를출력할때편리 출력할데이터는 value 애트리뷰트에지정 <c:out value= <INPUT> 은 <FORM> 의서브엘리먼트입니다. /> 이두태그는 HTML 태그로해석되지않고, 웹브라우저상에그대로나타납니다 [ 예제 9-11] <c:out> 커스텀액션의사용예 (1) <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= c uri= http://java.sun.com/jsp/jstl/core %> <HTML> <HEAD><TITLE>HTML 문법설명 </TITLE></HEAD> <BODY> <H3>FONT 태그에대하여 </H3> <c:out value= <FONT size=7> 커다란글씨 </FONT> 는다음과같은출력을합니다. /> <BR><BR> <c:out value= <FONT size=7> 커다란글씨 </FONT> escapexml= false /> </BODY> </HTML> 41/80

42/80 3. 코어라이브러리사용하기 <c:out> 커스텀액션 default 애트리뷰트를이용하면출력할데이터의디폴트값을지정할수있다. EL 식의결과를출력할때유용하다. <c:out value= ${str} default= No Data /> 이값이없으면 이값을대신출력합니다 [ 예제 9-12] <c:out> 커스텀액션의사용예 (2) <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= c uri= http://java.sun.com/jsp/jstl/core %> <HTML> <HEAD><TITLE> 간단한인사 </TITLE></HEAD> <BODY> 안녕하세요, <c:out value= ${param.id} default= guest /> 님 </BODY> </HTML>

4. 포매팅라이브러리사용하기 <fmt:formatdate> 커스텀액션 날짜와시각데이터를포맷하는커스텀액션 출력할날짜와시각을 java.util.date 클래스타입의객체로넘겨줘야하므로먼저이클래스의객체를만들어야한다. Date date = new Date(); 현재의날짜와시각을포함한 Date 객체를생성합니다. <fmt:formatdate> 커스텀액션의 value 애트리뷰트에 Date 객체를지정하면 그객체가포함하고있는날짜가 YYYY. MM. DD 포맷으로출력된다. <fmt:formatdate value= ${date} /> Date 객체 43/80

4. 포매팅라이브러리사용하기 <fmt:formatdate> 커스텀액션 <fmt:formatdate> 커스텀액션은시각을출력하기위한용도로도사용될수 있다. <fmt:formatdate value= ${date} type= time /> 시각을출력하라고지시하는애트리뷰트값 type 애트리뷰트에 date 라는값을지정하면날짜가출력되고, both 라는값을넘 겨주면날짜와시각이모두출력된다. 디폴트값 : date <fmt:formatdate value= ${date} type= both /> 날짜와시각을모두출력하라고지시하는애트리뷰트값 44/80

45/80 4. 포매팅라이브러리사용하기 <fmt:formatdate> 커스텀액션 java.util.date 클래스를사용하기위해필요합니다 [ 예제 9-13] <fmt:formatdate> 커스텀액션의사용예 (1) <%@page contenttype= text/html; charset=euc-kr %> <%@page import= java.util.* %> <%@taglib prefix= c uri= http://java.sun.com/jsp/jstl/core %> <%@taglib prefix= fmt uri= http://java.sun.com/jsp/jstl/fmt %> <c:set var= date value= <%= new Date() %> /> <HTML> <HEAD><TITLE> 현재의시각 </TITLE></HEAD> <BODY> [ 오늘의날짜 ] <fmt:formatdate value= ${date} /> <BR> [ 현재의시각 ] <fmt:formatdate value= ${date} type= time /> </BODY> </HTML> <fmt:formatdate> 액션에서 Date 객체를사용하기위해서는 <c:set> 액션으로선언한변수에저장해야합니다. 날짜와시각을출력합니다. [ 그림 9-21] 예제 9-13 의실행결과

4. 포매팅라이브러리사용하기 <fmt:formatdate> 커스텀액션 datestyle 애트리뷰트 full, long, medium, short 중한값을넘겨주면날짜를다른포맷으로출력할수있다. <fmt:formatdate type= date value= ${date} datestylet= long /> timestyle 애트리뷰트에 full, long, medium, short 중한값을넘겨주면시각도 다른포맷으로출력할수있다. 날짜를 2009 년 5 월 5 일 ( 화 ) 포맷으로출력하도록지시합니다 <fmt:formatdate type= time value= ${date} timestyle= full /> 시각을 오후 1 시 31 분 42 초 KST 포맷으로출력하도록지시합니다 type 애트리뷰트에 both 값을지정해서날짜와시각을한꺼번에출력할때는 datestyle 과 timestyle 애트리뷰트를함께쓸수있다. <fmt:formatdate type= both value= ${date} datestyle= long timestyle= short /> 날짜를 2009 년 5 월 5 일 ( 화 ) 포맷으로, 시각을 오후 2:50 포맷으로출력하도록지시합니다. 46/80

47/80 4. 포매팅라이브러리사용하기 <fmt:formatdate> 커스텀액션 [ 예제 9-14] <fmt:formatdate> 커스텀액션의사용예 (2) <%@page contenttype= text/html; charset=euc-kr %> <%@page import= java.util.* %> <%@taglib prefix= c uri= http://java.sun.com/jsp/jstl/core %> <%@taglib prefix= fmt uri= http://java.sun.com/jsp/jstl/fmt %> <c:set var= date value= <%= new Date() %> /> <HTML> <HEAD><TITLE> 현재의시각 </TITLE></HEAD> <BODY> [S] <fmt:formatdate value= ${date} type= both datestyle= short timestyle= short /> <BR> [M] <fmt:formatdate value= ${date} type= both datestyle= medium timestyle= medium /> <BR> [L] <fmt:formatdate value= ${date} type= both datestyle= long timestyle= long /> <BR> [F] <fmt:formatdate value= ${date} type= both datestyle= full timestyle= full /> </BODY> </HTML>

48/80 4. 포매팅라이브러리사용하기 <fmt:formatdate> 커스텀액션 시각의포맷도 pattern 애트리뷰트를이용해서지정할수있다. <fmt:formatdate value= ${date} type= time pattern= (a) hh:mm:ss /> 시각을 ( 오후 ) 5:52:03 포맷으로출력하도록지시합니다 [ 예제 9-15] <fmt:formatdate> 커스텀액션의사용예 (3) <%@page contenttype= text/html; charset=euc-kr %> <%@page import= java.util.* %> <%@taglib prefix= c uri= http://java.sun.com/jsp/jstl/core %> <%@taglib prefix= fmt uri= http://java.sun.com/jsp/jstl/fmt %> <c:set var= date value= <%= new Date() %> /> <HTML> <HEAD><TITLE> 현재의시각 </TITLE></HEAD> <BODY> [ 오늘의날짜 ] <fmt:formatdate value= ${date} type= date pattern= yyyy/mm/dd (E) /> <BR> [ 현재의시각 ] <fmt:formatdate value= ${date} type= time pattern= (a) hh:mm:ss /> </BODY> </HTML>

49/80 4. 포매팅라이브러리사용하기 <fmt:formatnumber> 커스텀액션 출력할수치값은 <fmt:formatnumber> 의 vaule 애트리뷰트에지정 <fmt:formatnumber value= 10000 /> 출력할수치데이터 세자리마다쉼표를찍은포맷으로출력하려면 groupingused라는애트리뷰트를추가하고, 그값으로 true를지정 <fmt:formatnumber value= 1234500 groupingused= true /> 주어진값을 1,234,500 포맷으로출력하도록지시합니다 pattern 애트리뷰트를사용하면소수점아래의숫자를원하는만큼끊거나늘려서표시할수있다. <fmt:formatnumber value= 3.14158 pattern= #.## /> 주어진값을소수점아래 2 자리까지끊어서출력하도록지시합니다.

4. 포매팅라이브러리사용하기 <fmt:formatnumber> 커스텀액션 pattern 애트리뷰트의값에서 0 이라고쓴위치는표시할유효숫자가없으면 0 으로채워진다. <fmt:formatnumber value= 10.5 pattern= #.00 /> 주어진값을소수점아래 2 자리까지끊어서출력하도록지시합니다 [ 예제 9-16] <fmt:formatnumber> 커스텀액션의사용예 (1) <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= fmt uri= http://java.sun.com/jsp/jstl/fmt %> <HTML> <HEAD><TITLE> 숫자포맷 </TITLE></HEAD> <BODY> 첫번째수 : <fmt:formatnumber value= 1234500 groupingused= true /> <BR> 두번째수 : <fmt:formatnumber value= 3.14158 pattern= #.## /> <BR> 세번째수 : <fmt:formatnumber value= 10.5 pattern= #.00 /> </BODY> </HTML> 50/80

51/80 4. 포매팅라이브러리사용하기 <fmt:formatnumber> 커스텀액션 type 애트리뷰트에 percent 라는값을지정하면주어진수치를퍼센트단위로 표시 <fmt:formatnumber value= 0.5 type= percent /> type 애트리뷰트에 currency 라는값을지정하면주어진수치가금액에적합한 포맷으로변환하여출력 주어진수치를퍼센트단위로포맷하여출력하도록지시합니다 <fmt:formatnumber value= 2500000 type= currency /> 주어진수치를금액으로표시하여출력하도록지시합니다 화폐단위를표시하기위해서는 currencysymbol 이라는애트리뷰트를이용 <fmt:formatnumber value= 2500000 type= currency currencysymbol= /> 금액앞에붙는화폐단위표시

52/80 4. 포매팅라이브러리사용하기 <fmt:formatnumber> 커스텀액션 [ 예제 9-17] <fmt:formatnumber> 커스텀액션의사용예 (2) <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= fmt uri= http://java.sun.com/jsp/jstl/fmt %> <HTML> <HEAD><TITLE> 숫자포맷 </TITLE></HEAD> <BODY> 금액 : <fmt:formatnumber value= 1000000 type= currency currencysymbol= /> <BR> 퍼센트 : <fmt:formatnumber value= 0.99 type= percent /> </BODY> </HTML> [ 그림 9-25] 예제 9-17 의실행결과

53/80 4. 포매팅라이브러리사용하기 <fmt:setlocale> 커스텀액션 출력할데이터의포맷을특정지역에맞게설정하고자할때사용 특정지역을설정하기위해서는 value 애트리뷰트에언어코드또는국가코드 _ 언어코드를지정 <fmt:setlocale value= en /> 언어코드 <fmt:setlocale value= us_en /> 국가코드및언어코드 위의액션이실행되고나면날짜와시각이영어권에맞게포맷되고, <fmt:formatnumber> 액션을이용해서출력되는모든금액앞에는달러를의미하는 $ 기호가자동으로붙어서표시된다.

54/80 4. 포매팅라이브러리사용하기 <fmt:setlocale> 커스텀액션 [ 예제 9-18] <fmt:setlocale> 커스텀액션의사용예 <%@page contenttype= text/html; charset=euc-kr %> <%@page import= java.util.* %> <%@taglib prefix= c uri= http://java.sun.com/jsp/jstl/core %> <%@taglib prefix= fmt uri= http://java.sun.com/jsp/jstl/fmt %> <c:set var= date value= <%= new Date() %> /> <HTML> <HEAD><TITLE> 나라마다다른포맷 </TITLE></HEAD> <BODY> <H3> 우리나라의포맷 </H3> <fmt:setlocale value= ko_kr /> 금액 : <fmt:formatnumber value= 1000000 type= currency /> <BR> 일시 : <fmt:formatdate value= ${date} type= both datestyle= full timestyle= full /> <BR> <H3> 미국의포맷 </H3> <fmt:setlocale value= en_us /> 금액 : <fmt:formatnumber value= 1000000 type= currency /> <BR> 일시 : <fmt:formatdate value= ${date} type= both datestyle= full timestyle= full /> <BR> <H3> 일본의포맷 </H3> <fmt:setlocale value= ja_jp /> 금액 : <fmt:formatnumber value= 1000000 type= currency /> <BR> 일시 : <fmt:formatdate value= ${date} type= both datestyle= full timestyle= full /> <BR> </BODY> </HTML>

55/80 4. 포매팅라이브러리사용하기 <fmt:timezone> 커스텀액션 시간대마다다른날짜와시각을자동으로계산해서표시 시작태그의 value 애트리뷰트에특정시간대에해당하는지역이름을지정하면, 이액션의시작태그와끝태그사이에서출력되는날짜와시각은그시간대에맞게표시된다. <fmt:timezone value= America/New_York > 날짜 : <fmt:formatdate value= ${date} type= date /> 시각 : <fmt:formatdate value= ${date} type= time /> </fmt:timezone>

56/80 4. 포매팅라이브러리사용하기 <fmt:timezone> 커스텀액션 [ 예제 9-19] <fmt:timezone> 의커스텀액션의사용예 <%@page contenttype= text/html; charset=euc-kr %> <%@page import= java.util.* %> <%@taglib prefix= c uri= http://java.sun.com/jsp/jstl/core %> <%@taglib prefix= fmt uri= http://java.sun.com/jsp/jstl/fmt %> <c:set var= date value= <%= new Date() %> /> <HTML> <HEAD><TITLE> 세계시프로그램 </TITLE></HEAD> <BODY> 서울 : <fmt:formatdate value= ${date} type= both /> <BR> <fmt:timezone value= Asia/Hong_Kong > 홍콩 : <fmt:formatdate value= ${date} type= both /> <BR> </fmt:timezone> <fmt:timezone value= Europe/London > 런던 : <fmt:formatdate value= ${date} type= both /> <BR> </fmt:timezone> <fmt:timezone value= America/New_York > 뉴욕 : <fmt:formatdate value= ${date} type= both /> <BR> </fmt:timezone> </BODY> </HTML>

4. 포매팅라이브러리사용하기 <fmt:settimezone> 커스텀액션 <fmt:timezone> 처럼시간대를설정하는기능수행 시작태그와끝태그사이에만영향을미치는것이아니라, 이액션다음의모든코드에영향을미친다. <fmt:settimezone value= Europe/London /> 시간대의기준이되는지역이름 [ 예제 9-20] <fmt:settimezone> 커스텀액션의사용예 <%@page contenttype= text/html; charset=euc-kr %> <%@page import= java.util.* %> <%@taglib prefix= c uri= http://java.sun.com/jsp/jstl/core %> <%@taglib prefix= fmt uri= http://java.sun.com/jsp/jstl/fmt %> <c:set var= date value= <%= new Date() %> /> <HTML> <HEAD><TITLE> 세계시프로그램 </TITLE></HEAD> <BODY> 서울 : <fmt:formatdate value= ${date} type= both /> <BR> <fmt:settimezone value= Asia/Hong_Kong /> 홍콩 : <fmt:formatdate value= ${date} type= both /> <BR> <fmt:settimezone value= Europe/London /> 런던 : <fmt:formatdate value= ${date} type= both /> <BR> <fmt:settimezone value= America/New_York /> 뉴욕 : <fmt:formatdate value= ${date} type= both /> <BR> </BODY> </HTML> 57/80

4. 포매팅라이브러리사용하기 <fmt:setbundle> 과 <fmt:bundle> 커스텀액션 <fmt:setbundle>, <fmt:bundle>, <fmt:message> 커스텀액션을사용하면하나의 JSP 페이지만가지고서로다른언어로기술된두개이상의웹페이지를생성할수있다. 우선웹페이지마다서로다른언어로기술되어야할부분을추출해서프로퍼티파일 (property file) 로만들어놓아야한다. < 한글데이터가저장된프로퍼티파일 > < 영문데이터가저장된프로퍼티파일 > TITLE= 회사소개 GREETING= 이사이트를방문해주셔서감사합니다. BODY= 당사는소프트웨어개발을주업무로하는회사입니다. COMPANY_NAME=( 주 ) 듀크소프트웨어 TITLE=About Us GREETING=Thank you for visiting this site. BODY=We are a dedicated software development company. COMPANY_NAME=Duke Software Inc. 프로퍼티파일은 대표명 _ISO 언어코드.properties 라는이름으로만들어서 WB-INF/classes 디렉터리에저장해야한다. 58/80

59/80 4. 포매팅라이브러리사용하기 <fmt:setbundle> 과 <fmt:bundle> 커스텀액션 영문프로퍼티파일은일반텍스트에디터를이용해서만들어저장하면된다. 2) 영문프로퍼티파일을만들어서저장하십시오. 1) brain09 웹애플리케이션의 WEB-INF/ classes 서브디렉터리로가십시오. [ 그림 9-30] 영문프로퍼티파일을만드는방법

4. 포매팅라이브러리사용하기 <fmt:setbundle> 과 <fmt:bundle> 커스텀액션 한글프로퍼티파일은일반텍스트에디터를이용해서만들어저장한다음에 ascii2native.exe 프로그램을이용하여변환해야한다. 2) 한글프로퍼티파일을만들어서저장하십시오. 1) brain09 웹애플리케이션의 WEB-INF/ classes 서브디렉터리로가십시오. [ 그림 9-31] 한글프로퍼티파일을만드는방법 (1) 60/80

61/80 4. 포매팅라이브러리사용하기 <fmt:setbundle> 과 <fmt:bundle> 커스텀액션 1) 명령프롬프트창을여세요. 2) Intro_ko.properties.org 파일이있는디렉터리로가세요. 3) native2ascii.exe 프로그램을실행하면 Intro_ko.properties 파일이생성됩니다. [ 그림 9-32] 한글프로퍼티파일을만드는방법 (2)

4. 포매팅라이브러리사용하기 <fmt:setbundle> 과 <fmt:bundle> 커스텀액션 <fmt:setbundle> 액션은프로퍼티파일의대표명을지정하는역할을한다. <fmt:setbundle basename= Intro /> 프로퍼티파일의대표명 <fmt:message> 커스텀액션은프로퍼티파일에있는데이터를가져다가출력 하는역할을한다. <fmt:message key= TITLE /> 프로퍼티파일에있는데이터의키 62/80

63/80 4. 포매팅라이브러리사용하기 <fmt:setbundle> 과 <fmt:bundle> 커스텀액션 [ 예제 9-21] <fmt:setbundle> 커스텀액션의사용예 (1) <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= fmt uri= http://java.sun.com/jsp/jstl/fmt %> <fmt:setbundle basename= Intro /> <HTML> <HEAD><TITLE><fmt:message key= TITLE /></TITLE></HEAD> <BODY> <H3><fmt:message key= TITLE /></H3> <fmt:message key= GREETING /> <BR><BR> <fmt:message key= BODY /> <BR><BR> <FONT size=2><fmt:message key= COMPANY_NAME /></FONT> </BODY> </HTML> [ 그림 9-33] 예제 9-21 의실행결과 (1)

64/80 4. 포매팅라이브러리사용하기 <fmt:setbundle> 과 <fmt:bundle> 커스텀액션 1) 웹브라우저의메뉴에서도구 인터넷옵션을선택하면인터넷옵션창이나타납니다. 2) 언어버튼을누르면언어기본설정창이나타납니다. [ 그림 9-34] 웹브라우저의언어기본설정을영문으로바꾸는방법 3) 추가버튼을누르면언어추가창이나타납니다.

65/80 4. 포매팅라이브러리사용하기 <fmt:setbundle> 과 <fmt:bundle> 커스텀액션 4) 영어 ( 미국 ) 을찾아서선택한다음에확인버튼을누르면이창은사라집니다. 5) 영어 ( 미국 ) 을선택하고위로이동버튼을누르십시오. 6) 영어 ( 미국 ) 항목이제일위에위치하면모든설정이끝난것입니다.

66/80 4. 포매팅라이브러리사용하기 <fmt:setbundle> 과 <fmt:bundle> 커스텀액션 [ 그림 9-35] 예제 9-21 의실행결과 (2)

4. 포매팅라이브러리사용하기 <fmt:setbundle> 과 <fmt:bundle> 커스텀액션 <fmt:message> 커스텀액션에 var 애트리뷰트를사용하면프로퍼티파일의데 이터가출력되는것이아니라변수에저장된다. <fmt:message var= title key= TITLE /> 변수이름 [ 예제 9-22] <fmt:setbundle> 커스텀액션의사용예 (2) <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= fmt uri= http://java.sun.com/jsp/jstl/fmt %> <fmt:setbundle basename= Intro /> <fmt:message var= title key= TITLE /> <fmt:message var= greeting key= GREETING /> <fmt:message var= body key= BODY /> <fmt:message var= companyname key= COMPANY_NAME /> <HTML> <HEAD><TITLE>${title}</TITLE></HEAD> <BODY> <H3>${title}</H3> ${greeting} <BR><BR> ${body} <BR><BR> <FONT size=2>${companyname}</font> </BODY> </HTML> 67/80

4. 포매팅라이브러리사용하기 <fmt:setbundle> 과 <fmt:bundle> 커스텀액션 <fmt:bundle> 커스텀액션도 <fmt:setbundle> 처럼프로퍼티파일의대표명지 정에사용되지만, 시작태그와끝태그사이에있는코드만영향을미친다는 점이다르다. <fmt:bundle basename= Intro > <fmt:message var= title key= TITLE /> <fmt:message var= greeting key= GREETING /> <fmt:message var= body key= BODY /> <fmt:message var= companyname key= COMPANY_NAME /> </fmt:bundle> <fmt:bundle> 커스텀액션은프로퍼티파일이적용되는코드의범위를한눈 에알아볼수있게만들기때문에코드의가독성을높여주는효과가있다. 68/80

4. 포매팅라이브러리사용하기 <fmt:setbundle> 과 <fmt:bundle> 커스텀액션 프로퍼티파일에도변수를사용할수있다. 단, 이때는영문으로된변수이름 이아니라숫자로된인덱스값으로변수를표시해야한다. GREETING= 안녕하세요, {0} 님 {1} 번째방문하셨군요. 아이디가들어갈부분 방문횟수가들어갈부분 변수에값을대입하는일은 JSP 페이지안에서해야한다. <fmt:message> 액 션의시작태그와끝태그사이에 <fmt:param> 액션을사용하여값을지정 <fmt:message var="greeting" key="greeting" > <fmt:param>spiderman</fmt:param> {0} 위치에들어갈변수값을지정합니다. <fmt:param>3</fmt:param> {1} 위치에들어갈변수값을지정합니다. </fmt:message> 69/80

4. 포매팅라이브러리사용하기 <fmt:setbundle> 과 <fmt:bundle> 커스텀액션 변수를포함하는프로퍼티파일을사용하는예제를작성하기위해다음과같 은두개의프로퍼티파일을만든다 < 한글데이터가저장된프로퍼티파일 > < 영문데이터가저장된프로퍼티파일 > TITLE= 환영인사 GREETING= 안녕하세요, {0} 님. {1} 번째방문이시군요. BODY= 새로운게임이추가되었습니다. \ 즐거운시간보내시기바랍니다. COMPANY_NAME=( 주 ) 듀크게임 TITLE=WELCOME GREETING=Hi, {0}. You have visited this site {1} times. BODY=New games are added. Have a good time. COMPANY_NAME=Duke Games Inc. 70/80

71/80 4. 포매팅라이브러리사용하기 <fmt:setbundle> 과 <fmt:bundle> 커스텀액션 [ 예제 9-23] 프로퍼티데이터에변경가능한값을대입해서출력하는예 <%@page contenttype= text/html; charset=euc-kr %> <% request.setattribute( ID, Spiderman ); request.setattribute( VNUM, new Integer(3)); %> <jsp:forward page= WelcomeView.jsp /> request 데이터영역에아이디와방문횟수를저장합니다 호출 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= fmt uri= http://java.sun.com/jsp/jstl/fmt %> <fmt:bundle basename= Welcome > <fmt:message var= title key= TITLE /> <fmt:message var= greeting key= GREETING > <fmt:param>${id}</fmt:param> <fmt:param>${vnum}</fmt:param> </fmt:message> <fmt:message var= body key= BODY /> <fmt:message var= companyname key= COMPANY_NAME /> </fmt:bundle> <HTML> <HEAD><TITLE>${title}</TITLE></HEAD> <BODY> {greeting} <BR><BR> ${body} <BR><BR> <FONT size=2>${companyname}</font> </BODY> </HTML> 아이디와방문횟수를포함한인사말을만듭니다 인사말을출력합니다.

72/80 4. 포매팅라이브러리사용하기 <fmt:setbundle> 과 <fmt:bundle> 커스텀액션 웹브라우저가기본적으로한글을사용하도록설정되어있을때 웹브라우저가기본적으로영문을사용하도록설정되어있을때 [ 그림 9-38] 예제 9-23 의실행결과

73/80 4. 포매팅라이브러리사용하기 <fmt:requestencoding> 커스텀액션 POST 메서드로전송된한글입력데이터를입력받기 [ 예제 9-24] 프로퍼티데이터에변수값을첨가해서편집하는예 아이디를입력받는 HTML 문서 <HTML> <HEAD> <META http-equiv= Content-Type content= text/html;charset=euc-kr > <TITLE> 한글로인사하기 </TITLE> </HEAD> <BODY> <FORM ACTION=HelloResult.jsp METHOD=POST> 한글아이디를입력하세요. <BR> <INPUT TYPE=TEXT NAME=ID> <BR><BR> <INPUT TYPE=SUBMIT VALUE= 확인 > </FORM> </BODY> </HTML> POST 메서드를이용해서아이디를입력받습니다 입력받은아이디를가지고인사말을출력하는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <HTML> <HEAD><TITLE> 인사하기 </TITLE></HEAD> <BODY> 안녕하세요, ${param.id} 님 </BODY> </HTML> 익스프레션언어를이용해서아이디를포함한인사말을출력합니다.

74/80 4. 포매팅라이브러리사용하기 <fmt:requestencoding> 커스텀액션 POST 메서드로전송된한글입력데이터를입력받기 한글아이디를입력하고 확인 버튼을누르면한글이깨져서출력될것입니다. [ 그림 9-39] 예제 9-24 의실행결과

4. 포매팅라이브러리사용하기 <fmt:requestencoding> 커스텀액션 POST 메서드로전송된한글입력데이터를입력받기 POST 메서드로전송된한글입력데이터를올바르게가져오기위해서는 setcharacterencoding 메서드를호출해야한다. <fmt:requestencoding> 커스텀액션은내부적으로 setcharacterencoding 메서드를호출한다. <fmt:requestencoding value= enc-kr /> 한글코드이름 [ 예제 9-25] <fmt:requestencoding> 커스텀액션의사용예 입력받은아이디를가지고인사말을출력하는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= fmt uri= http://java.sun.com/jsp/jstl/fmt %> <fmt:requestencoding value= euc-kr /> <HTML> <HEAD><TITLE> 인사하기 </TITLE></HEAD> <BODY> 안녕하세요, ${param.id} 님 </BODY> </HTML> <fmt:requestencoding> 액션을사용하기위해필요합니다. 한글데이터를입력받을수있도록만듭니다 75/80

76/80 4. 포매팅라이브러리사용하기 <fmt:requestencoding> 커스텀액션 한글아이디를입력하고 확인 버튼을누르면한글이올바르게출력될것입니다. [ 그림 9-39] 예제 9-24 의실행결과

5. 함수라이브러리사용하기 JSTL 함수라이브러리 표현식언어의 EL 식안에서사용할수있는 EL 함수들의라이브러리 touppercase라는함수는문자열에포함된모든영문소문자를영문대문자로바꾸는함수 ${fn:touppercase( Hello. )} 이함수는 HELLO. 를리턴합니다. substring 이라는함수는문자열의부문자열을가져오는함수 ${fn:substring( 도레미파솔라시도, 3, 6)} 이함수는 파솔라 를리턴합니다 77/80

78/80 5. 함수라이브러리사용하기 JSTL 함수라이브러리함수

79/80 5. 함수라이브러리사용하기 [ 예제 9-26] 함수라이브러리의사용예 <%@page contenttype= text/html; charset=euc-kr %> <%@page import= java.util.* %> <%@taglib prefix= c uri= http://java.sun.com/jsp/jstl/core %> <%@taglib prefix= fn uri= http://java.sun.com/jsp/jstl/functions %> <c:set var= greeting value= How Are You? /> <HTML> <HEAD><TITLE> 여러가지인사말 </TITLE></HEAD> <BODY> 본래의문자열 : ${greeting} <BR> 모두대문자로 : ${fn:touppercase(greeting)} <BR> 모두소문자로 : ${fn:tolowercase(greeting)} <BR> Are 의위치는? ${fn:indexof(greeting, Are )} <BR> Are 를 Were 로바꾸면? ${fn:replace(greeting, Are, Were )} <BR> 문자열의길이는? ${fn:length(greeting)} <BR> </BODY> </HTML> [ 그림 9-41] 예제 9-26 의실행결과

JSP & Servlet