Presentation is loading. Please wait.

Presentation is loading. Please wait.

Java Web Programming 5일차.

Similar presentations


Presentation on theme: "Java Web Programming 5일차."— Presentation transcript:

1 Java Web Programming 5일차

2 Custom Tag란 사용자 정의 태그 useBean, param, setProperty 등의 미리 정의되어있는 태그를 액션 태그라고 한다. 커스텀 태그는 액션 태그의 한계성을 극복하여 사용자가 특성에 맞게 스스로 태그를 설계 이렇게 필요한 태그의 특성, 태그 해석의 방식, 그리고 태그들을 모아 라이브러리로 묶어 필요한 곳에 사용. 이를 Tag Library라고 한다. 자바 빈과 커스텀 태그 자바 빈 커스텀 태그 n    JSP 페이지의 내용을 조작할 수 없음 n    커스텀 태그에 비해 상대적으로 복잡한 처리과정 n    하나의 서블릿 클래스에 정의되어 다른 서블릿이나 JSP에 의해 사용됨 n    JSP 1.0 스펙 이상에서 사용가능 n    JSP 페이지의 내용을 조작 가능 n    상대적으로 빈보다 다루기 쉬움 n    많은 자체 작업을 정의할 수 있음 n    JSP1.1 스펙 이상에서 사용가능

3 Custom Tag library의 구성 태그 핸들러 클래스(Tag Handler Class)
태그 핸들러 클래스(Tag Handler Class)는 태그의 의미와 행동을 정의하는 클래스로, JSP 페이지에서 커스텀 태그를 사용할 때 어떤 일을 할 것인지 정의하고, 처리한다. 태그 라이브러리 서술파일(Tag Library Descriptor TLD) TLD는 태그 라이브러리를 설명해주는 파일로, XML의 표준형식을 따르는 XML 문서로서, XML Element 이름과 태그의 구현을 연결시키는 역할을 한다. 즉, JSP에서 태그가 호출되었을 때 그 태그를 처리하는 태그 핸들러로 연결시켜 주어 관련된 처리를 실행하게 한다. 태그를 사용하는 JSP 파일 커스텀 태그를 사용하는 JSP 파일로서, 태그를 사용하기 전에 taglib 지시자로 태그의 위치와 접두어를 지정해야 한다.

4

5 태그 핸들러 클래스(Tag Handler Class)

6 Tag 인터페이스 Tag 인터페이스는 JSP 페이지와 태그 핸들러 사이를 연결하는 기본적인 프로토콜과 메서드를 정의한다. 이것은 단순하고 기본적인 커스텀 태그를 구현하기 위해 만들어졌으며, 커스텀 태그의 Body 부분은 건드리지 않는 것을 원칙으로 한다. 즉, Tag 인터페이스는 태그에 Body 부분이 없거나, Body 부분을 그대로 나타내는 경우에 사용될 수 있다. Tag 인터페이스는 태그 핸들러의 주기를 정의하며, 태그가 시작하고 끝날 때 호출되는 메서드들을 정의하는데 사용한다. BodyTag 인터페이스 BodyTag는 Tag 인터페이스를 상속한 인터페이스로 태그의 몸체를 다룰 수 있는 메서드를 제공한다. Tag 인터페이스가 제공하는 메서드 외에 부가적인 메서드를 제공합니다.

7 TagSupport 클래스 TagSupport는 Tag 인터페이스를 구현하는 클래스로, 새로운 태그 핸들러를 생성하는 기본이 되는 클래스입니다. Tag 인터페이스의 메서드 외에 setter,/getter 메서드 등, 태그를 다룰 때 유용하게 쓰일 수 있는 메서드들을 제공하고 있다. BodyTagSupport 클래스 BodyTagSupport는 TagSupport 클래스를 상속 받고 BodyTag 인터페이스를 구현한 클래스. 이 클래스도 역시 상속 받고 구현된 것 이외에 getBodyContent 메서드등, 여러가지 유용한 메서드들을 가지고 있다. 많은 태그 핸들러들이 BodyTagSupport 클래스를 상속 받아서 몇 가지 소수의 메서드만 재정의해 쓰는 방식으로 만들어 진다. BodyContent 클래스 BodyContent는 JspWriter 클래스를 상속 받는 추상 클래스로서, 태그의 바디부분을 처리한 것을 캡슐화하고 있는 클래스. 즉, BodyContent의 내용은 Body 부분 처리의 결과로, 그것을 핸들러가 이용할 수 있다. 따라서 BodyContent는 그 내용을 스트링으로 변환하거나, 읽거나, 지울 수 있는 메서드를 가지고 있다.

8 <간단한 태그 핸들러> HelloTag. java package tags; import java. io
<간단한 태그 핸들러> HelloTag.java package tags; import java.io.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class HelloTag implements Tag { PageContext pageContext; Tag parent; public int doStartTag() throws JspException{ try{ JspWriter out = pageContext.getOut(); out.write("Hello Tag!!!"); }catch(IOException e){} return SKIP_BODY; } public int doEndTag() throws JspException{ return EVAL_PAGE; }

9 public void release(){}   public void setPageContext(PageContext pg){     pageContext = pg;   }   public void setParent(Tag p){     parent = p;   }   public Tag getParent(){     return parent;   } }

10 태그 라이브러리 서술파일(Tag Library Descriptor TLD)
noveltag.tld <?xml version="1.0" encoding="ISO " ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" " <taglib> <tlib-version>1.0</tlib-version> <jsp-version>1.2</jsp-version> <short-name>noveljsp</short-name> <uri></uri> <description> novel jsp simple Hello Tag </description> <tag> <name>hello</name> <tag-class>tags.HelloTag</tag-class> <description>say Hello~ </description> </tag> </taglib>

11 JSP에서 기본적인 태그의 사용 < 기본적인 커스텀 태그를 사용하는JSP> hellotag.jsp page contentType="text/html; charset=euc-kr" %> taglib uri ="noveltag.tld" prefix = "noveljsp" %> <html><body> <h1><noveljsp:hello /></h1> </body></html>

12 속성을 가지는 태그 <속성 사용을 위한 태그 핸들러 > WelcomeTag.java package tags; import java.io.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class WelcomeTag extends TagSupport { private String name = ""; private String nation = ""; public int doStartTag() { try{ JspWriter out = pageContext.getOut(); out.print(name + " from " + nation + "<br>"); out.print("welcome to Korea!!!"); }catch(IOException e){} return SKIP_BODY; }

13 public void setName(String name){ this
 public void setName(String name){     this.name = name;   }   public void setNation(String nation){     this.nation = nation;   } }

14 noveltag.tld <!—위에는 이미 정의된 부분 생략 --> <tag> <name>welcome</name> <tag-class>tags.WelcomeTag</tag-class> <description>say welcome~ </description> <attribute> <name>name</name> <required>true</required> </attribute> <attribute> <name>nation</name> <required>true</required> </attribute> </tag> <!-- WelcomeTag를 위해 추가된 부분 --> </taglib> welcometag.jsp page contentType="text/html; charset=euc-kr" %> taglib uri ="noveltag.tld" prefix = "noveljsp" %> <html><body> <h1><noveljsp:welcome name = "Alice" nation = "Wonderland"/></h1> </body></html>

15 Body를 가지는 태그 <prefix:tagname> body doStartTag 메서드의 리턴 값
SKIP_BODY : 바디의 내용 유무에 상관없이 무시 EVAL_BODY_INCLUDE : 바디 내용을 포함 처리 가능하게 함

16 FontMagic. java package tags; import java. io. ; import javax. servlet
FontMagic.java package tags; import java.io.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class FontMagic extends TagSupport { String color = "black"; String size = "3"; public int doStartTag() { try{ JspWriter out = pageContext.getOut(); out.print("<font color="+color+" size = "+ size + ">"); }catch(IOException e){} return EVAL_BODY_INCLUDE; } public int doEndTag(){ try{ JspWriter out = pageContext.getOut(); out.print("</font></br>"); }catch(IOException e){} return EVAL_PAGE; } public void setColor(String color){ this.color = color; } public void setSize(String size){ this.size = size; } }

17 noveltag.tld <! 앞부분 생략 --> <tag> <name>fontmagic</name> <tag-class>tags.FontMagic</tag-class> <description>adjust font color and font size </description> <attribute> <name>color</name> <required>false</required> </attribute> <attribute> <name>size</name> <required>false</required> </attribute> </tag> <!-- 여기까지 FontMagic을 위해 추가된 부분 --> </taglib>

18 fontmagic.jsp page contentType="text/html; charset=euc-kr" %> taglib uri ="noveltag.tld" prefix = "noveljsp" %> <html><body> <noveljsp:fontmagic> 디폴트 값이군요. </noveljsp:fontmagic> <noveljsp:fontmagic color="blue" size="5"> 파란색에 5크기입니다. </noveljsp:fontmagic> <noveljsp:fontmagic color="red" size="7"> 빨강색에 7크기입니다. </noveljsp:fontmagic> </body></html>

19 표현 언어란 [표현 언어가 제공하는 기능] JSP의 네 가지 기본 객체가 제공하는 영역의 속성 사용
표현 언어(Expression Language)는 값을 표현하는 데 사용되는 새로운 스크립트 언어로서 JSP의 기본 문법을 보완하는 역할을 한다 [표현 언어가 제공하는 기능] JSP의 네 가지 기본 객체가 제공하는 영역의 속성 사용 집합 객체에 대한 접근 방법 제공 수치 연산, 관계 연산, 논리 연산자 제공 자바 클래스 메소드 호출 기능 제공 표현언어만의 기본 객체 제공 JSP 2.0 Programming

20 표현언어는 JSP의 스크립트 요소(스크립트릿, 표현식, 선언부)를 제외한 나머지 부분에서 사용될 수 있으며, 표현식을 통해서
표현 언어의 표현 방법 Syntax ${expr} expr - 표현언어가 정의한 문법에 따라 값을 표현하는 식 Example <jsp:include page="/module/${skin.id}/header.jsp" flush="true" /> <b>${sessionScope.member.id}</b>님 환영합니다. 표현언어는 JSP의 스크립트 요소(스크립트릿, 표현식, 선언부)를 제외한 나머지 부분에서 사용될 수 있으며, 표현식을 통해서 표현식보다 편리하게 값을 출력할 수 있다. JSP 2.0 Programming

21 표현 언어의 기본 객체 기본 객체 설명 pageContext JSP의 page 기본 객체와 동일하다. pageScope
pageContext 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체. requestScope request 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체. sessionScope session 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체. applicationScope application 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체. param 요청 파라미터의 <파라미터이름, 값> 매핑을 저장한 Map 객체. 파라미터 값의 타입은 String 으로서, request.getParameter(이름)의 결과와 동일하다. paramValues 요청 파라미터의 <파라미터이름, 값배열> 매핑을 저장한 Map 객체. 값의 타입은 String[] 으로서, request.getParameterValues(이름)의 결과와 동일하다. header 요청 정보의 <헤더이름, 값> 매핑을 저장한 Map 객체. request.getHeader(이름)의 결과와 동일하다. headerValues 요청 정보의 <헤더이름, 값 배열> 매핑을 저장한 Map 객체. request.getHeaders(이름)의 결과와 동일하다. cookie <쿠키 이름, Cookie> 매핑을 저장한 Map 객체. request.getCookies()로 구한 Cookie 배열로부터 매핑을 생성한다. initParam 초기화 파라미터의 <이름, 값> 매핑을 저장한 Map 객체. application.getInitParameter(이름)의 결과와 동일하다. JSP 2.0 Programming

22 표현 언어의 기본 객체 사용 예 Example page contentType = "text/html; charset=euc-kr" %> <% request.setAttribute("name", "최범균"); %> <html> <head><title>EL Object</title></head> <body> 요청 URI: ${pageContext.request.requestURI} <br> request의 name 속성: ${requestScope.name} <br> code 파라미터: ${param.code} </body> </html> pageContext.getRequest() .getRequestURI() reqeust.getAttribute("name") request.getParameter("code") JSP 2.0 Programming

23 ※ 표현언어에서 호출할 메소드는 static 메소드이어야 한다.
자바 메소드 호출하기: 클래스 작성 ※ 표현언어에서 호출할 메소드는 static 메소드이어야 한다. Example package madvirus.util; import java.util.Date; import java.text.SimpleDateFormat; public class DateUtil { private static SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); public static String format(Date date) { return formatter.format(date); } JSP 2.0 Programming

24 자바 메소드 호출하기: TLD 파일 작성 Example
<?xml version="1.0" encoding="euc-kr" ?> <taglib ... version="2.0"> ... <function> <description>Date 객체 포맷팅</description> <name>dateFormat</name> <function-class> madvirus.util.DateUtil </function-class> <function-signature> java.lang.String format( java.util.Date ) </function-signature> </function> </taglib> EL에서 사용할 이름 메소드를 정의하고 있는 클래스의 이름 함수의 시그너쳐 JSP 2.0 Programming

25 자바 메소드 호출하기: web.xml에 TLD 내용 추가
Example <?xml version="1.0" encoding="euc-kr"?> <web-app version="2.4"> ... <taglib> <taglib-uri> /WEB-INF/tlds/el-functions.tld </taglib-uri> <taglib-location> </taglib-location> </taglib> </web-app> JSP 2.0 Programming

26 자바 메소드 호출하기: EL에서 메소드 호출 Example
page contentType = "text/html; charset=euc-kr" %> page session="true" %> taglib prefix="elfunc" uri="/WEB-INF/tlds/el-functions.tld" %> <% java.util.Date today = new java.util.Date(); request.setAttribute("today", today); %> <html> <head><title>EL 함수 호출</title></head> <body> 오늘은 <b>${elfunc:dateFormat(today) }</b> 입니다. </body> </html> web.xml의 <taglib-uri> 태그에 정의한 이름 EL에서 메소드 호출 TLD의 <name> 태그에 정의한 이름 JSP 2.0 Programming

27 표현 언어의 주요 사용법 함수호출을 통한 값의 포매팅 액션 태그나 커스텀 태그의 값으로 사용
${elfunc:dateFormat(date) } 액션 태그나 커스텀 태그의 값으로 사용 <jsp:include page="/layout/${layout.moduleName}.jsp" /> 기본 객체 영역에 저장된 값의 출력 ${requestScope.name} vs <%= request.getAttribute("name") %> JSP 2.0 Programming

28 표현 언어 비활성화(1): web.xml에 비활성화 옵션
Code <?xml version="1.0" encoding="euc-kr"?> <web-app ... version="2.4"> ... <jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <el-ignored>true</el-ignored> </jsp-property-group> </jsp-config> </web-app> 지정한 패턴에 속하는 JSP는 표현 언어가 비활성화된다. JSP 2.0 Programming

29 JSTL이란? JSTL(JSP Standard Tag Library)은 JSP 페이지에서 논리적인 판단,
반복문의 처리, 데이터베이스 등의 처리를 하는 코드를 깔끔하게 작성하기 위해서 작성한 표준화된 커스텀 태그이다. <% if (list.size() > 0) { for (int i = 0 ; i < list.size() ; i++) { Data data = (Data) list.get(i); %> <%= data.getTitle() %> ... } } else { 데이터가 없습니다. JSTL을 사용함으로써 스크립트를 사용할 때의 복잡한 코드를 깔끔하게 작성할 수 있게 된다. <c:if test="!empty ${list}"> <c:foreach varName="data" list="${list}"> ${data.title} </c:foreach> </c:if> <c:if test="empty ${list}"> 데이터가 없습니다. </c> JSP 2.0 Programming

30 JSTL이 제공하는 태그의 종류 라이브러리 하위 기능 접두어 관련URI 코어 변수지원 흐름 제어 URL 처리 c XML
XML XML 코어 XML 변환 x 국제화 지역 메시지 형식 숫자 및 날짜 형식 fmt 데이터베이스 SQL sql 함수 콜렉션 처리 String 처리 fn JSP 2.0 Programming

31 코어 태그 기능분류 태그 설명 변수 지원 set JSP에서 사용될 변수를 설정한다. remove 설정한 변수를 제거한다.
흐름 제어 if 조건에 따라 내부 코드를 수행한다. choose 다중 조건을 처리할 때 사용된다. forEach 콜렉션이나 Map의 각 항목을 처리할 때 사용된다. forTokens 구분자로 분리된 각각의 토큰을 처리할 때 사용된다. URL 처리 import URL을 사용하여 다른 자원의 결과를 삽입한다. redirect 지정한 경로로 리다이렉트한다. url URL을 재작성한다. 기타 태그 catch 예외 처리에 사용된다. out JspWriter에 내용을 알맞게 처리한 후 출력한다. JSP 2.0 Programming

32 코어태그: 변수 지원 태그 - set, remove
변수 설정: 지정한 영역에 변수를 생성한다. Syntax <c:set var="varName" scope="session" value="someValue" /> <c:set var="varName" scope="request"> some Value </c:set> var - EL에서 사용될 변수명 scope - 변수값이 저장될 영역(page, request, session, application) value - 변수값 변수 제거 Syntax <c:remove var="varName" scope="request" /> JSP 2.0 Programming

33 코어태그: 변수 지원 태그 - 프로퍼티, 맵의 처리
Syntax <c:set target="${some}" property="propertyName" value="anyValue" /> some 객체가 자바빈일 경우: some.setPropertyName(anyvalue) some 객체가 맵(map)일 경우: some.put(propertyName, anyValue); target -<c:set>으로 지정한 변수 객체 property - 프로퍼티 이름 value - 새로 지정할 프로퍼티 값 JSP 2.0 Programming

34 코어 태그: 흐름제어 태그 - if Syntax <c:if test="조건"> ... </c:if>
test의 조건이 true이면 몸체 내용을 처리한다. Example taglib prefix="c" uri=" %> <c:if test="true"> 무조건 수행<br> </c:if> <c:if test="${param.name == 'bk'}"> name 파라미터의 값이 ${param.name} 입니다.<br> <c:if test="${18 < param.age}"> 당신의 나이는 18세 이상입니다. JSP 2.0 Programming

35 코어 태그: 흐름제어 태그 - choose Syntax <c:choose>
<c:when test="조건1" > ... </c:when> <c:when test="조건2" > <c:otherwise> </c:otherwise> </c:choose> 조건1이 true일 때 실행 조건2가 true일 때 실행 앞의 <c:when>의 조건들이 모두 만족하지 않을 때에 실행된다. JSP 2.0 Programming

36 배열 및 Collection에 저장된 요소를 차례대로 처리한다.
코어 태그: 흐름제어 태그 - forEach 배열 및 Collection에 저장된 요소를 차례대로 처리한다. Syntax <c:forEach var="변수" items="아이템" [begin="시작번호"] [end="끝번호"]> ... ${변수} </c:forEach> var - EL에서 사용될 변수명 items - 배열, List, Iterator, Enumeration, Map 등의 Collection begin - items에 지정한 목록에서 값을 읽어올 인덱스의 시작값 end - item에 지정한 목록에서 값을 읽어올 인덱스의 끝값 item이 Map인 경우 변수에 저장되는 객체는 Map.Entry이다. 따라서, 변수값을 사용할 때는 ${변수.key}와 ${변수.value}를 사용해서 맵에 저장된 항목의 <키, 값> 매핑에 접근할 수 있다. JSP 2.0 Programming

37 지정한 URL에 연결하여 결과를 지정한 변수에 저장한다.
코어 태그: 흐름제어 태그 - import 지정한 URL에 연결하여 결과를 지정한 변수에 저장한다. Syntax <c:import url="URL" charEncoding="캐릭터인코딩" var="변수명" scope="범위" > <c:param name="파라미터이름" value="파라미터값" /> </c:import> url - 결과를 읽어올 URL charEncoding - 읽어온 결과를 저장할 때 사용할 캐릭터 인코딩 var - 읽어온 결과를 저장할 변수명 scope - 변수를 저장할 영역 <c:param> 태그는 url 속성에 지정한 사이트에 연결할 때 전송할 파라미터를 입력한다. Example <c:import url=" charEncoding="euc-kr" var="daumNews" scope="request" > <c:param name="_top_G" value="news" /> </c:import> JSP 2.0 Programming

38 코어 태그: 흐름제어 태그 - url URL을 생성해서 변수에 저장한다. Syntax Example
<c:url var="변수명" value="재작성할URL" scope="저장범위" > <c:param name="파라미터이름" value="파라미터값" /> </c:url> var - 생성한 URL이 저장될 변수명 value - 생성할 URL scope - 변수를 저장할 범위 지정. Example <c:url var="url1" value="../shopping.do" /> <c:url var="url2" value="/shopping.do" > <c:param name="Add" value="isdn-001" /> </c:url> <c:url var="url3" value=" /> JSP 2.0 Programming

39 코어 태그: 흐름제어 태그 - redirect
지정한 페이지로 리다이렉트한다. response.sendRedirect()와 비슷 Syntax <c:redirect url="리다이렉트할URL"> <c:param name="파라미터이름" value="파라미터값" /> </c:redirect> url - 리다이렉트 URL <c:param>은 리다이렉트할 페이지에 전달할 파라미터 지정 Example <c:redirect url="/ifTag.jsp"> <c:param name="name" value="bk" /> </c:redirect> JSP 2.0 Programming

40 코어 태그: 기타 태그 - out JspWriter에 데이터를 출력한다 Syntax
<c:out value="value" escapeXml="{true|false}" default="defaultValue" /> value - JspWriter에 출력할 값을 나타낸다. 일반적으로 value 속성의 값은 String과 같은 문자열이다. 만약 value의 값이 java.io.Reader의 한 종류라면 out 태그는 Reader로부터 데이터를 읽어와 JspWriter에 값을 출력한다. escapeXml - 이 속성의 값이 true일 경우 아래 표와 같이 문자를 변경한다. 생략할 수 있으며, 생략할 경우 기본값은 true이다. default - value 속성에서 지정한 값이 존재하지 않을 때 사용될 값을 지정한다 [표] escapeXml 속성이 true일 경우 변환되는 문자 문자 변환된 형태 < > & & ' ' " " JSP 2.0 Programming

41 코어 태그: 기타 태그 - catch 태그 몸체에서 발생한 예외를 변수에 저장한다. Syntax
<c:catch var="exName"> ... 예외가 발생할 수 있는 코드 </c:catch> ${exName} 사용 에러가 발생하면 에러가 exName 변수에 저장된다. var - 예외 객체를 저장할 변수명 JSP 2.0 Programming

42 국제화 태그 기능분류 태그 설명 로케일 지정 setLocale Locale을 지정한다. requestEncoding
요청 파라미터의 캐릭터 인코딩을 지정한다. 메시지 처리 bundle 사용할 번들을 지정한다. message 지역에 알맞은 메시지를 출력한다. setBundle 리소스 번들을 읽어와 특정 변수에 저장한다. 숫자 및 날짜 포맷팅 formatNumber 숫자를 포맷팅한다. formatDate Date 객체를 포맷팅한다. parseDate 문자열로 표시된 날짜를 분석해서 Date 객체로 변환 parseNumber 문자열로 표시된 날짜를 분석해서 숫자로 변환 setTimeZone 시간대 정보를 특정 변수에 저장한다. timeZone 시간대를 지정한다. JSP 2.0 Programming

43 국제화 태그: 로케일 지정 - setLocale, requestEncoding
Syntax <fmt:setLocale value="로케일" scope="영향미치는범위" /> value - Locale을 지정한다. 두 글자로 된 언어 코드를 반드시 지정해주어야 하며, 두 글자로 된 국가 코드를 추가로 지정할 수 있다. scope - 지정한 Locale이 영향을 미치는 범위를 지정한다. requestEncoding: 요청 파라미터의 인코딩을 지정 Syntax <fmt:requestEncoding value="캐릭터인코딩" /> value - 캐릭터 인코딩 JSP 2.0 Programming

44 국제화 태그: 메시지 태그 - bundle, message
Syntax <fmt:bundle basename="리소스번들" prefix="기본키접두어"> ... <fmt:message key="키값1" /> <fmt:message key="키값2" /> </fmt:bundle> basename - 리소스 번들의 이름 prefix - message 태그의 key 속성의 값 앞에 자동으로 붙게 될 문자열 key - 리소스 번들에 저장된 메시지 키 값 * bundle 태그의 몸체에 중첩되어 사용된다. JSP 2.0 Programming

45 국제화 태그: 메시지 태그 - setBundle, message
Syntax <fmt:setBundle var="변수명" basename="리소스번들" /> ... <fmt:message bundle="${변수명}" key="키값" /> var - 리로스 번들을 저장할 변수명 basename - 리소스 번들의 이름 bundler - 참조할 리소스 번들 변수명 key - 리소스 번들에 저장된 메시지 키 값 * bundler 속성을 사용하면, message 태그가 bundle 태그의 몸체에 중첩될 필요가 없다. JSP 2.0 Programming

46 JSTL은 EL에서 사용할 수 있는 함수를 제공한다
Syntax ${fn:함수명(인자 목록)} [표] JSTL이 제공하는 주요 함수 함수 설명 length(obj) obj가 List와 같은 Collection인 경우 저장된 항목의 개수를 리턴하고, obj가 문자열일 경우 문자열의 길이를 리턴한다. toUpperCase(str) str을 대문자로 변환한다. toLowerCase(str) str을 소문자로 변환한다. substring(str, idx1, idx2) str.substring(idx1, idx2)의 결과를 리턴한다. idx2가 -1일 경우 str.substring(idx1)과 동일하다. trim(str) str 좌우의 공백문자를 제거한다. replace(str, src, dest) str에 있는 src를 dest로 변환한다. split(str1, str2) str2로 명시한 글자를 기준으로 str1을 분리해서 배열로 리턴한다. escapeXml(str) XML의 객체 참조에 해당하는 특수 문자를 처리한다. 예를 들어, '&'는 '&'로 변환한다. JSP 2.0 Programming


Download ppt "Java Web Programming 5일차."

Similar presentations


Ads by Google