29
JSTL

JSTL

Embed Size (px)

DESCRIPTION

JSTL. JSTL 개요. Custom Tag 의 표준 많은 JSP 어플리케이션을 간단한 태그로 캡슐화 JSTL 을 사용하면 작업을 수행하는 코드들을 태그로 간략화할 수 있음 . 가독성이 좋아짐 . JSTL 은 JSP 페이지의 로직을 담당하는 부분인 if, for, while, 데이터베이스 처리 등과 관련된 표준 커스텀 태그를 제공 모든 태그는 시작태그와 종료태그가 쌍으로 이루어짐. 비교. JSTL 을 사용하기 위한 환경설정. http://jakarta.apache.org 사이트 접속 - PowerPoint PPT Presentation

Citation preview

Page 1: JSTL

JSTLJSTL

Page 2: JSTL

JSTL 개요 Custom Tag 의 표준 많은 JSP 어플리케이션을 간단한 태그로 캡슐화 JSTL 을 사용하면 작업을 수행하는 코드들을

태그로 간략화할 수 있음 . 가독성이 좋아짐 . JSTL 은 JSP 페이지의 로직을 담당하는 부분인

if, for, while, 데이터베이스 처리 등과 관련된 표준 커스텀 태그를 제공

모든 태그는 시작태그와 종료태그가 쌍으로 이루어짐 .

Page 3: JSTL

비교

Page 4: JSTL

JSTL 을 사용하기 위한 환경설정

http://jakarta.apache.org 사이트 접속 Jakarta-taglibs-standard-1.1.2.zip 파일

다운로드 압축 해제 후 lib 폴더에서

jstl.jar,standard.jar 복사 톰갯홈 \webapps\ROOT\WEB-INF\lib 로

붙여넣기

Page 5: JSTL

JSTL 1.1 라이브러리

라이브러리 URI 접두어 예시

Core( 코어 )기능 : 변수설정 , 제거 , 흐름제어 , URL 사용

http://java.sun.com/jsp/jstl/core C <c:tagname …>

XML Processing기능 : 변수설정 , 제거 , 흐름제어 , XML 변환

http://java.sun.com/jsp/jstl/xml X <x:tagname …>

|18N capable formatting기능 : 국가에 따른 메시지처리 , 숫자 /날짜 형식

http://java.sun.com/jsp/jstl/fmt fmt <fmt:tagname …>

Datatbase access(SQL)기능 :SQL 쿼리 처리

http://java.sun.com/jsp/jstl/sql sql <sql:tagname …>

Function( 함수 )기능 : 함수 지원

http://java.sun.com/jsp/jstl/functions

fn fn:functionName(…)

Page 6: JSTL

JSTL core

core( 코어 ) 변수선언 , 삭제 등 변수와 관련된 작업 및 if 문 , for

문 등과 같은 제어문 , URL 처리등에 사용

코어 태그 라이브러리 사용 <%@ tablib prefix=“c” uri=

http://java.sun.com/jsp/jstl/core” %> 태그 라이브러리 정보

Display Name : JSTL core Version : 1.1 Short Name : c URI : http://java.sun.com/jsp/jstl/core

Page 7: JSTL

Jstl core Tag Summary (1)

태그 설명

Catch ∙ body 위치에서 실행되는 코드의 예외를 잡아냄 .∙ <c:catch> 태그로 사용됨 .

Choose ∙ 자바의 switch 문과 같지만 , 조건에 문자열 비교도 가능∙ 한 개 이상의 <when> 과 한 개의 <otherwise> 서브 태그를 가짐 .∙ <c:choose> 태그로 사용됨 .

if ∙ 조건문 사용시 씀 .∙ <c:if> 태그로 사용됨 .

import ∙ 웹 애플리케이션 내부의 자원과 http, ftp 와 같은 외부에 있는 자원을 가져옴 .∙ 자원을 가공할 수도 있고 , 편집도 가능 .∙ <c:import> 태그로 사용됨 .

forEach ∙ 객체 전체에 걸쳐 반복 실행시 사용∙ <c:forEach> 태그로 사용됨 .

forTokens ∙ 자바의 StringTokenizer 클래스와 동일∙ <c:forToken> 태그로 사용됨 .

out ∙ JSP 표현식을 대체하는 것으로 사용됨 .∙ <c:out> 태그로 사용됨 .

Page 8: JSTL

Jstl core Tag Summary (2)

태그 설명

otherwise ∙ <choose> 의 서브 태그로 <when> 태그 다음에 표시되는 것으로 조건을 만족하지 못하는 경우에 사용∙ <c:otherwise> 태그로 사용됨

param ∙ <import> 태그의 URL 뒤에 파라미터로 붙여서 사용할 수 있음 . ∙ <c:param> 태그로 사용됨 .

redirect ∙ response.sendRedirect() 를 대체하는 태그로 , 지정한 다른 페이지로 이동

∙ <c:redirect> 태그로 사용됨 .

remove ∙ JSP 의 removeAttribute() 와 같은 역할 ∙ (page|request|session|application) 범위의 변수 ( 속성 ) 를 제거 함 . ∙ <c:remove> 태그로 사용됨 .

set ∙ JSP 의 setAttribute() 와 같은 역할 ∙ (page|request|session|application) 범위의 변수 ( 속성 ) 를 설정 함 . ∙ <c:set> 태그로 사용됨 .

url ∙ 쿼리 파라미터로부터 URL 을 생성함 . ∙ <c:url> 태그로 사용됨 .

when ∙ <choose> 의 서브 태그로 조건을 만족하는 경우에 사용 함 . ∙ <c:when> 태그로 사용됨 .

Page 9: JSTL

jstlEx1.jsp

9

<c:set var=“varName” value=“${value}” /><c:set var=“varName” value=“${value}” scope=“request” />

Page 10: JSTL

jstlEx2.jsp

Page 11: JSTL

jstlEx3.jsp

<c:forEach var=:k: begin=“1” end=“100”> <c:out value=“${k%2==0}”/></c:forEach>

Page 12: JSTL

jstlEx4.jsp

<c:forTokens var=“color” items=“red,yellow,black” delims=“,”> <c:out value=“${color}” /></c:forTokens>

Page 13: JSTL

jstlEx5.jsp

Page 14: JSTL

JSTL XML

xml 을 처리하기 위한 것으로 xml 출력 , 흐름제어 , XML 변환등의 작업에 사용

XML 태그 라이브러리 사용 <%@ taglib prefix=“x”

uri=http://java.sun.com/jsp/jstl/xml” %> 태그 라이브러리 정보

Display Name : JSTL xml Version : 1.1 Short Name : x URI : http://java.sun.com/jsp/jstl/xml

Page 15: JSTL

XML Tag Summary(1)

태그 설명

choose <x:choose> <x:when select=“XPathExpression”>body 내용 </x:when> <x:otherwise>body 내용 </x:otherwise></x:choose>

out ∙ Xpath 에 지정한 패턴에 따라 xml 내용 출력<x:out select=“XPathExpression” [escapeXml=“{true|false}”]/>

if ∙ 조건문에 사용 <x:if select=“XPathExperssion” var=“varName” [scope=“{page|request|session|application}”]/>

forEach ∙ Xpath 에 따라서 해당하는 엘리먼트 수만큼 반복 수행<x:forEach [var=“varname”] seelct=“XPathExpression”> body 내용</x:forEach>

otherwise ∙ 조건이 false 일 때 수행

param ∙ 파라미터 사용 시에 씀 . <x:param name=“name” />

Page 16: JSTL

XML Tag Summary(2)

태그 설명

parse ∙ xml 문서를 읽어서 파싱함 .

<x:parse xml=“XMLDocument” {var=“var” [scope=“scopeName”]|varDom=“var” [scopeDom=“scopeName”]}

[systemid=“systemid”] [filter=“filter”]/>

set ∙ Xpath 에 따라 선택된 내용을 변수에 저장

<x:set select=“XPathExpression” var=“varName” [scope=“{page|request|session|application}”]/>

transform ∙ xml 과 xslt 파일을 결합해서 새로운 형식의 문서를 생성 함 .

<x:transform xml=“XMLDocument” xslt=“XSLTStylesheet” [xmlSystemid=“XMLSystemid”] [xsltSystemid=“XSLTSystemid”][{var=“varName” [scope=“scopeName”]|result=“resultObject”}]/>

when ∙ 조건이 true 일 때 수행 함 .

Page 17: JSTL

jstlEx10.jsp

Page 18: JSTL
Page 19: JSTL

커스텀 태그

사용자가 직접 자신만의 태그를 만들어 사용할 수 있는 기술

커스텀 태그 라이브러리 사용자가 정의한 커스텀 태그를 모아 놓은 것 .

이점 한 번 작성하면 언제든지 필요한 곳에서 재사용이 가

능 , 타 사용자에게 배포하여 재사용될 수 있음 프로그램의 가독성 향상 JSP 의 스크립트를 사용하지 않으므로 자바 문법에 거의

의존하지 않기 때문에 JSP 페이지의 작성이 쉬움 . 디자이너와 프로그래머가 각자의 일을 분담할 수 있어

효율적인 작업이 가능

Page 20: JSTL

커스텀 태그 작성 방법① 커스텀 태그를 정의하는 자바 파일 작성② 자바의 클래스를 커스텀 태그로 사용하기 위해

TLD(Tag Library Descriptor) 파일에 등록 ( 정의 )③ JSP 페이지에서 해당 커스텀 태그를 사용할 수

있도록 하기 위해 wdb.xml 에 등록④ JSP 페이지에서 해당 커스텀 태그 사용

자바 클래스 파일

(.class)

TLD 파일(.tld)

web.xmlJSP 페이지

(.jsp)

커스텀태그 정의( 구조 , 로직 )

자바 클래스 파일을 태그로 사용할 수

있도록 등록

JSP 페이지에서 사용할 수 있도록 TLD 파일 등록 커스텀 태그 사용

.java 파일 작성 후 컴파일

Page 21: JSTL

파일위치 자바 클래스 파일

웹 애플리케이션 폴더 \WEB-INF\classes 폴더 내에 위치 ( 모든 자바 클래스 파일은 이 위치에 존재해야 함 )

TLD 파일 웹 애플리케이션 폴더 \WEB-INF\tlds 폴더 내에 위치

web.xml 웹 애플리케이션 폴더 \WEB-INF 폴더 내에 위치 이 파일을 수정해서 사용함 .

JSP 페이지 웹 애플리케이션 폴더 \폴더

Page 22: JSTL

환경설정

Javax.servlet.jsp.tagext 패키지가 필요하며 이 패키지는 jsp-api.jar 파일이 필요한데 톰캣이 기본적으로 제공

톰캣홈 \common\lib 폴더 내에 jsp-api.jar를 복사

자바폴더 \lib 에 붙여넣기 제어판에서 환경변수 CLASSPATH 편집

~\jdk1.5.07\lib\jsp-api.jar 를 추가

Page 23: JSTL

커스텀 태그의 설명 및 작성

커스텀 태그 작성 Tag, InterationTag 인터페이스를 미리 구현해놓은 TagSupport 클래스 또는

BodyTag 인터페이스를 미리 구현해놓은 BodyTagSupport 클래스를 상속받아 사용

Tag Interface Method Summary

Int doEndTag() 끝 태그를 만날 때 실행

Int doStartTag() 시작 태그를 만날 때 실행

Tag getParent() 부모 태그를 구함

Void

Release() 커스텀 태그를 사용하지 않을 때 실행

Void

setPageContext(PageContext pc)

커스텀 태그가 포함된 JSP 페이지의 컨텍스트를 전달받음

void setParent(Tag t) 해당 태그의 부모 태그가 존재할 때 부모 태그를 설정

int doAfterBody() 태그의 body 내용을 처리한 뒤에 실햄

void doInitBody() Body 를 수행하기 위한 준비를 함

void setBodyContent(BodyContent b)

Bodycontent 속성을 지정

Page 24: JSTL

WelcomeTag.java

Page 25: JSTL

WelcomeTag.tld

태그라이브러리에 대한 설명부분

태그라이브러리 버전 : 필수요소태그라이브러리 이름 : 필수요소

∙ 커스텀 태그당 1 개씩 매핑됨 . ∙ <body-content> 태그는

커스텀 태그의 body 가 존재하지 않을 때 empty 로 입력 . 필수조건

Page 26: JSTL

web.xml

Page 27: JSTL

web.xml

Page 28: JSTL

welcomeTag.jsp

Page 29: JSTL

참고문헌 JSP 2.0 웹프로그래밍 , 삼양미디어 , 김은옥 저

16 장 JSTL(JSP Standard Tag Library) 17 장 커스텀 태그 (Custom Tag)