520 likes | 754 Views
JSTL (JSP Standard Tag Library). 목 차. EL (Expression Language) JSTL(JSP Standard Tag Library) . EL ( Expression Language ). 정의. JSP 2.0 스펙에 포함되어 JSP 에서 자바 scripting 대신에 데이터를 출력하기 위한 기능이 확장된 표현언어이다 . 특징. 변수와 연산자를 포함할 수 있다 . JSP 의 scope 에 저장된 속성 및 자바 빈 속성도 EL 의 변수로 사용 가능하다 .
E N D
목 차 EL (Expression Language) JSTL(JSP Standard Tag Library)
EL ( Expression Language ) • 정의 • JSP 2.0 스펙에 포함되어 JSP에서 자바 scripting 대신에 데이터를 출력하기 위한 기능이 확장된 표현언어이다. • 특징 • 변수와 연산자를 포함할 수 있다. • JSP의 scope에 저장된 속성 및 자바 빈 속성도 EL의 변수로 사용 가능하다. • EL 자체의 내장객체가 제공된다. • 표현식에는 숫자, 문자열 , boolean값과 null 도 포함할 수 있다.
EL ( Expression Language ) • 방법 • ${ 표현식} • 항상 중괄호({})로 묶고, 제일 앞에 달러 기호($)를 붙인다. • 표현 예 JSP : <%=pageContext.getAttribute(“a”).getFoo()%> JSTL : <c:out value=“${a.foo}”/> 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 표현식
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.MapmusicMap = 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 연산자 : 데이터와 리터럴이 결합 및 비교될 수 있도록 한다! • 산술 연산자를 사용하는 EL 익스프레션 • ${item.price * (1 + taxRate[user.address.zipcode])} • 관계형 연산자 및 논리적 연산자를 사용하는 EL 익스프레션 • ${(x >= min) && (x <= max)} • EL 내장 객체 Map
EL ( Expression Language ) • EL 내장 객체 표현식 예)
EL ( Expression Language ) • 실습 예제 • Scope 사용 결과
EL ( Expression Language ) • 실습 예제 • Param사용 결과
EL ( Expression Language ) • 실습 예제 • initParam사용 <Web-app 초기 설정> 결과
커스텀태그 • 정의 EL 이나 JSP의 표준 액션으로 구현하기 어려운 부분을 해결 하기위해 필요에 의해서 만든 태그를 의미한다. • 종류 • 1. JSTL ( JSP Standard Tag Library ) • 일반적으로 모든 개발자가 가장 필요로 하는 구현내용을 표준 태그로 제공한다. • JSTL 을 사용하기 위해서는 다음과 같은 설정이 필요하다. • JSTL 라이브러리를 다운받아 클래스패스에 설정한다. • JSP 에서 taglib태그로 사용할 라이브러리를 지정해야 한다. • 2. 개발자가 작성한 커스텀태그 • 특정 개발자가 필요에 의해서 작성한 커스텀 태그를 의미한다.
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 • 페이지 지시어에서 사용법
JSTL ( JSP Standard Tag Library ) Core 라이브러리 : 수식,제어흐름, URL 처리 등에 관련된 작업
Core 라이브러리 실습 예제 • <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> • <c:out> 화면에 해당 변수 값을 출력한다. • 문법
Core 라이브러리 실습 예제 • <c:out> 실습예제 결과
Core 라이브러리 실습 예제 • <c:set> 변수에 값을 설정! JSP의 setAttribute() 메소드와 같은 역할을 하며 scope에 속성을 설정한다 EL 변수에 값을 설정 객체의 멤버 변수 값 설정 • 문법 • 기본 예
Core 라이브러리 실습 예제 • <c:set> 실습예제 JSP 스크립트릿 에서는 pageContext.getAttribute()를 이용하여 값을 가져올수 있다.. <%=pageContext.getAttribute(“name”)%>
Core 라이브러리 실습 예제 • <c:remove> Scope에 저장된 변수 제거! JSP의 removeAttribute() 메소드와 같은 역할을 하며 scope의 속성값을 제거한다. • 문법 • <c:cathc> 예외처리!! • 바디에서 실행되는 코드의 예외를 잡아냄. • 문법 <c:catch var=“변수명“> nested actions</c:catch>
Core 라이브러리 실습 예제 • <c:if> 조건이 맞는 경우 태그 바디부분 처리! 조건문을 사용할 때 사용한다. 자바의 if와 유사하지만 else 지원하지 않음 (else구현은 <c:choose> 로 사용) • 문법
Core 라이브러리 실습 예제 • <c:if> 실습예제 조건식에서{m.name==null}이 아니면 aaa속성값에 false를 반환한다!!
Core 라이브러리 실습 예제 • <c:choose> , <c:when> , <c:otherwise> 조건이 맞는 경우 처리! 자바의 switch 문과 같다. 조건식에 문자열 사용 가능하다. 하나의 choose 태그에 여러 개의 when 태그가 존재. • 문법
Core 라이브러리 실습 예제 • <c:choose> 실습예제
Core 라이브러리 실습 예제 • <c:choose> 실습예제
Core 라이브러리 실습 예제 • <c:forEach> 반복 실행할 때 사용한다 자바의 반복문과 유사 컬렉션 객체 접근시 매우 유용함. • 문법 • <c:forTokens> 문자열을 토큰들로 잘라 반복 수행 자바의 StringTokenizer클래스 기능을 제공함
Core 라이브러리 실습 예제 • <c:forEach> 실습예제 1 2 3 1 2 3
Core 라이브러리 실습 예제 • <c:import> URL 자원의 내용을 import 내부 자원을 포함할 때 사용된다. HTTP , FTP 같은 외부자원도 포함할 수 있다 • 문법
Core 라이브러리 실습 예제 • <c:import> 실습예제
Core 라이브러리 실습 예제 • <c:url> URL Rewriting 방식으로 URL 정보를 다룬다 <c:url value="url주소" context="context" var="변수명" scope="scope중 하나"/> • <c:param> import, url,. redirect 태그에서 파라미터 값을 전달 하기 위해 사용한다. <c:param name="name" value="value/> • < c:redirect> : response,sendRedirect나 <jap:forward> 액션 대신 사용할 수 있다. <c:redirect url="value" context="현재 웹 어플리케이션의 context”>
영역 기능 태그 TLD Prefix I18n Locale 지정 setLocalerequestEncoding /jstl-fmt fmt 메시지 bundlemessage paramsetBundle 숫자/날짜 형식 formatNumberformatDateparseDateparseNumbersetTimeZonetimeZone I18N 라이브러리 • <%@ taglib prefix="fmt" uri="http://java.sun.com/jstl/fmt" %> • I18N Libraby : 로컬과 언어를 지정하기 위한 방법들을 제공 • <fmt:requestEncoding> : Http 요청의 문자 인코딩을 설정하기 위해 사용 • 문법 <fmt:requestEncoding [value=“charsetName”]/>
JSTL ( JSP Standard Tag Library ) SQL 라이브러리 : 데이터베이스 관련 웹 응용프로그램을 개발
SQL라이브러리 • <%@ taglib prefix="sql" uri="http://java.sun.com/jstl/sql %> • <sql:setDataSource> : JDBC의 데이터 소스를 지정 javax.sql.DataSource를 지정할 때 사용한다. 만약 context에 DataSource가 지정되어있다면 <sql:query> 태그를 사용하여 DataSource를 사용할 수 있다. • 문법
SQL라이브러리 • <sql:query> : 데이터베이스 질의어를실행, 결과는 변수에 저장! 쿼리 문장을 실행할 때 사용한다. executeQuery() 메소드와 동일하다. • 문법
SQL 라이브러리 실습 예제 • <sql:setDataSource>,<sql:query> 실습예제 결과 <sql:query ….. maxRows="1" startRow="1“ />추가시
SQL라이브러리 • <sql:update> : Insert, Update, Delete 문장 수행 쿼리 문장을 실행할 때 사용한다. executeUpdate() 메소드와 동일하다. • 문법
SQL라이브러리 • <sql:dateParam> : SQL 문장의 ? 부분에 날짜 타입의 데이터를 설정 날짜관련 파라미터를 사용할 수 있다. PreparedStatement의 setTimestamp()메소드와 동일하다. • 문법 • <sql:param> : SQL 문장의 ? 부분에 값을 기술하기 위해 사용 문자열 파라미터를 사용할 수 있다. PreparedStatement의 setString() 메소드와동일하다. • 문법
SQL라이브러리 • <sql:transaction>: <sql:query>,<sql:update>를 위한 트랜잭션 설정 트랜잭션을 구현할 때 사용한다. • 문법