Head First Java 파헤치기!!

Download Report

Transcript Head First Java 파헤치기!!

JSTL (JSP Standard Tag Library)

1

목 차

1. EL (Expression Language) 2. JSTL(JSP Standard Tag Library)

2

EL ( Expression Language )  정의 JSP 2.0 스펙에 포함되어 JSP에서 자바 scripting 대신에 데이터를 출력하기 위한 기능이 확장된 표현언어이다.

     특징 변수와 연산자를 포함할 수 있다.

JSP의 scope에 저장된 속성 및 자바 빈 속성도 EL의 변수로 사용 가능하다.

EL 자체의 내장객체가 제공된다.

표현식에는 숫자, 문자열 , boolean 값과 null 도 포함할 수 있다.

EL ( Expression Language ) •  방법 ${ 표현식 }  항상 중괄호({})로 묶고, 제일 앞에 달러 기호($)를 붙인다.  표현 예 1.

2.

3.

JSP : <%=pageContext.getAttribute(“a”).getFoo()%> JSTL : EL : ${a.foo}  주의사항 • • 기본적으로 EL 사용을 무시하도록 설정이 되어있다.

반드시 page Directive 에서 isELIgnored= “ false ” 로 설정한다.

EL ( Expression Language ) •  실습 예제 자바 빈의 속성 출력

EL ( Expression Language ) 

JSP 페이지 선언시 isELIgnored="false" 를 추가하여야 한다!!

<%@ page language="java" import="java.util.*" contentType="text/html;charset=euc-kr" isELIgnored="false" %> 버전에 따라 명시 유무가 틀리지만 isELIgnored="true" 할 경우에는 지원하지 않는다. 아래와 같이 표현식이 출력된다 isELIgnored="false" 로 설정할 경우!!

EL ( Expression Language )

EL ( Expression Language )  EL 표현식

EL ( Expression Language )

EL ( Expression Language )

EL ( Expression Language ) 

빈과 맵 : 도트(.) 연산자, 브래킷[] 연산자 둘 다 사용 가능

EL ( Expression Language )  배열 이나 List 인 경우 -Servlet 코드 String[] KoreaMusic={“A”, “B”, “C”, “D”}; request.setAttribute(“musicList”,KoreaMusic); -JSP 코드 First song is : ${musicList[0]} (출력결과) First song is : A Second song is : ${musicList[“1”]} (출력결과) Second song is : B  Beans 와 Map 인 경우 -Servlet 코드 Java.util.Map musicMap = new java.util.HashMap(); musciMap.put (“a” ,”A”); musciMap.put (“b” ,”B”); musciMap.put (“c” ,”C”); musciMap.put (“d” ,”D”); request.setAttribute(“musicMap”,musicMap); -JSP 코드 a is : ${musicMap.a} / a is : ${musicMap[“a”]} (출력결과) a is : A a is : ${musicMap[a]} 두 표현식 모두 “a”를 맵키로 처리 “a”라는 이름의 속성을 찾음, Null값을 반환

EL ( Expression Language )  EL 연산자 : 데이터와 리터럴이 결합 및 비교될 수 있도록 한다! Category 산술 관계형 논리 타당성검사 연산자 +,-,*,/ (or div),%(or mod) == (or eq), != (or ne), < (or lt), > (or gt), <= (or le), >= (or ge) && (or and), || (or or), ! (or not) empty 산술 연산자를 사용하는 EL 익스프레션  ${item.price * (1 + taxRate[user.address.zipcode])} 관계형 연산자 및 논리적 연산자를 사용하는 EL 익스프레션  ${(x >= min) && (x <= max)}  EL 내장 객체 Category JSP 식별자 pageContext 범위 pageScope requestScope sessionScope applicationScope 요청 매개변수 param paramValues 요청 헤더 header headerValues 쿠키 cookie 초기화 매개변수 initParam 설명 현재 페이지의 프로세싱과 상응하는PageContext 인스턴스 페이지 범위 애트리뷰트 요청범위 애트리뷰트 세션범위 애플리케이션 범위 요청매개변수의 기본값을 이름 요청매개변수의 모든값을 StringArea 요청헤더의 기본값을 이름 요청헤더의 모든값을 StringArea 요청에 수단되는 쿠키들을 이름으로 초기화 매개변수를 이름으로 지정 Map

EL ( Expression Language )  EL 내장 객체 표현식 예)

EL ( Expression Language ) •  실습 예제 Scope 사용 결과

EL ( Expression Language ) •  실습 예제 Param 사용 결과

EL ( Expression Language ) •  실습 예제 initParam 사용 결과

커스텀 태그

18

커스텀 태그  정의 EL 이나 JSP의 표준 액션으로 구현하기 어려운 부분을 해결 하기위해 필요에 의해서 만든 태그를 의미한다.

 종류 1. JSTL ( JSP Standard Tag Library )   일반적으로 모든 개발자가 가장 필요로 하는 구현내용을 표준 태그로 제공한다.

JSTL 을 사용하기 위해서는 다음과 같은 설정이 필요하다.

  JSTL 라이브러리를 다운받아 클래스패스에 설정한다.

JSP 에서 taglib 태그로 사용할 라이브러리를 지정해야 한다.

2. 개발자가 작성한 커스텀 태그  특정 개발자가 필요에 의해서 작성한 커스텀 태그를 의미한다.

JSTL

20

JSTL ( JSP Standard Tag Library ) • • 

정의

가장 일반적으로 많이 사용되는 커스텀 태그를 표준화시켜 라이브러리 형태로 제공하는 것을 의미한다 .

JCP(Java Community Process, 자바표준화 단체) 에서 정환 표준 / JSP 2.0 에 포함 

처리 영역 ( 4개의 커스텀 태그 와 문자열을 다루는 함수들)

함수들 지원

JSTL ( JSP Standard Tag Library ) • •

1.

JSTL 설치 인터넷 다운 설치 Http://jakarta.apache.org/taglib/doc/standard-doc/intro.html에서 jstl.jar, standard.jar 파일 다운 다운 받은 파일의 압축을 푼 후, jstl,jar 와 standard.jar 파일을 톰캣의 lib 또는 프로젝트 lib에 추가할것!

JSTL ( JSP Standard Tag Library )

2. JSTL 구성 요소

• • • • CORE : 공통 필수 기능 XML : XML 문서 처리 관련 기능 I18N : 국제화 지원 관련 기능 SQL : JDBC를 이용한 DB처리 기능 

JSTL 라이브러리별 taglib URI 와 Prefix Libray

CORE XML I18N(국제화) SQL

URI http://java.sun.com/jsp/jstl/core http://java.sun.com/jsp/jstl/xml http://java.sun.com/jsp/jstl/fmt http://java.sun.com/jsp/jstl/sql

페이지 지시어에서 사용법 Prefix

c x fmt sql

JSTL Core Library

24

JSTL ( JSP Standard Tag Library )

Core 라이브러리 : 수식,제어흐름, URL 처리 등에 관련된 작업

Core 라이브러리 실습 예제 

<%@ taglib prefix=" c " uri=" http://java.sun.com/jstl/core " %>

화면에 해당 변수 값을 출력한다.

문법

Core 라이브러리 실습 예제 

실습예제

결과

Core 라이브러리 실습 예제 

변수에 값을 설정!

JSP의 setAttribute() 메소드와 같은 역할을 하며 scope에 속성을 설정한다 EL 변수에 값을 설정 객체의 멤버 변수 값 설정 

문법

기본 예

Core 라이브러리 실습 예제 

실습예제

JSP 스크립트릿 에서는 pageContext.getAttribute()를 이용하여 값을 가져올수 있다..

<%=pageContext.getAttribute(“name”)%>

Core 라이브러리 실습 예제 

Scope에 저장된 변수 제거!

JSP의 removeAttribute() 메소드와 같은 역할을 하며 scope의 속성값을 제거한다.

문법

예외처리!!

바디에서 실행되는 코드의 예외를 잡아냄.

문법

nested actions

Core 라이브러리 실습 예제 

조건이 맞는 경우 태그 바디부분 처리!

조건문을 사용할 때 사용한다.

자바의 if와 유사하지만 else 지원하지 않음 (else구현은 로 사용) 

문법

Core 라이브러리 실습 예제 

실습예제

 조건식에서 {m.name==null}이 아니면 aaa속성값에 false를 반환한다!!

Core 라이브러리 실습 예제 

, , 조건이 맞는 경우 처리!

자바의 switch 문과 같다.

조건식에 문자열 사용 가능하다.

하나의 choose 태그에 여러 개의 when 태그가 존재.

문법

Core 라이브러리 실습 예제 

실습예제

Core 라이브러리 실습 예제 

실습예제

Core 라이브러리 실습 예제 

반복 실행할 때 사용한다

자바의 반복문과 유사 컬렉션 객체 접근시 매우 유용함.

문법

문자열을 토큰들로 잘라 반복 수행

자바의 StringTokenizer 클래스 기능을 제공함

3 1 2 Core 라이브러리 실습 예제 

실습예제

1 2 3

Core 라이브러리 실습 예제 

URL 자원의 내용을 import

내부 자원을 포함할 때 사용된다.

HTTP , FTP 같은 외부자원도 포함할 수 있다 

문법

Core 라이브러리 실습 예제 

실습예제

Core 라이브러리 실습 예제 

URL Rewriting 방식으로 URL 정보를 다룬다

import, url,. redirect 태그에서 파라미터 값을 전달 하기 위해 사용한다.

JSTL I18N Library

41

I18N 라이브러리 

<%@ taglib prefix=" fmt " uri=" http://java.sun.com/jstl/fmt " %>

I18N Libraby : 로컬과 언어를 지정하기 위한 방법들을 제공 영역

Locale 지정 I18n 메시지 숫자/날짜 형식

기능 태그 TLD Prefix setLocale requestEncoding bundle message param setBundle formatNumber formatDate parseDate parseNumber setTimeZone timeZone

/jstl-fmt fmt 

: Http 요청의 문자 인코딩을 설정하기 위해 사용

문법

JSTL SQL Library

43

JSTL ( JSP Standard Tag Library )

SQL 라이브러리 : 데이터베이스 관련 웹 응용프로그램을 개발

SQL 라이브러리

<%@ taglib prefix=" sql " uri=" http://java.sun.com/jstl/sql %>

: JDBC의 데이터 소스를 지정

javax.sql.DataSource 를 지정할 때 사용한다.

만약 context에 DataSource가 지정되어있다면 태그를 사용하여 DataSource를 사용할 수 있다.

문법

SQL 라이브러리

: 데이터베이스 질의어를 실행, 결과는 변수에 저장!

쿼리 문장을 실행할 때 사용한다.

executeQuery() 메소드와 동일하다.

문법

SQL 라이브러리 실습 예제 

, 실습예제

결과

maxRows="1" startRow="1“ />추가시

SQL 라이브러리

: Insert, Update, Delete 문장 수행

쿼리 문장을 실행할 때 사용한다.

executeUpdate() 메소드와 동일하다.

문법

SQL 라이브러리

: SQL 문장의 ? 부분에 날짜 타입의 데이터를 설정

날짜관련 파라미터를 사용할 수 있다.

PreparedStatement 의 setTimestamp()메소드와 동일하다.

문법

: SQL 문장의 ? 부분에 값을 기술하기 위해 사용

문자열 파라미터를 사용할 수 있다.

PreparedStatement 의 setString() 메소드와 동일하다.

문법

SQL 라이브러리

: ,를 위한 트랜잭션 설정

트랜잭션을 구현할 때 사용한다.

문법

6 7 4 5 SQL 라이브러리 실습 예제 

,, 실습예제

결과

JSTL 정리 

JSTL 정리

• • • 표준 커스텀 태그 ( Custom Tag ) 이다.

주로 EL과 함께 사용된다.

JSP 페이지의 로직 중에서 if문 , for문 , while 문 , 데이터베이스 처리 작업을 JSTL 을 이용하여 JSP 페이지 의 가독성을 좋게 한다