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

Similar documents
PowerPoint Presentation

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

Microsoft PowerPoint - 4강.pptx

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

04장

<param-value> 파라미터의값 </param-value> </init-param> </servlet> <servlet-mapping> <url-pattern>/ 매핑문자열 </url-pattern> </servlet-mapping> - 위의예에서 ServletC

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

KYO_SCCD.PDF

Microsoft PowerPoint 세션.ppt

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

PowerPoint Presentation

TP_jsp7.PDF

PowerPoint Template

중간고사

Data Provisioning Services for mobile clients

5장. JSP와 Servlet 프로그래밍을 위한 기본 문법(완성-0421).hwp

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


Microsoft PowerPoint 웹 연동 기술.pptx

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

슬라이드 1

17장 클래스와 메소드

Data Provisioning Services for mobile clients

Microsoft PowerPoint - 웹프로그래밍_ ppt [호환 모드]

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

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Microsoft PowerPoint - web-part02-ch15-문서객체조작.pptx

Design Issues

PowerPoint Presentation

PowerPoint Presentation

쉽게

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

JAVA PROGRAMMING 실습 08.다형성

PowerPoint 프레젠테이션

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

PowerPoint Presentation

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 05. 객체의 활용

<4D F736F F F696E74202D203130C0E52EBFA1B7AF20C3B3B8AE205BC8A3C8AF20B8F0B5E55D>

adfasdfasfdasfasfadf

PowerPoint 프레젠테이션

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

PHP & ASP

C# Programming Guide - Types

PHP & ASP

Microsoft PowerPoint - 7강.pptx

Microsoft PowerPoint - web-part03-ch20-XMLHttpRequest기본.pptx

PowerPoint 프레젠테이션

gnu-lee-oop-kor-lec06-3-chap7

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

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

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

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

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

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

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

PowerPoint 프레젠테이션

Microsoft PowerPoint - Chap6_cmpl

어댑터뷰

PowerPoint Template

JAVA Bean & Session - Cookie

Data Provisioning Services for mobile clients

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

JUNIT 실습및발표

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

PowerPoint 프레젠테이션

OCW_C언어 기초

Interstage5 SOAP서비스 설정 가이드

<4D F736F F F696E74202D20B8AEB4AABDBA20BFC0B7F920C3B3B8AEC7CFB1E22E BC8A3C8AF20B8F0B5E55D>

슬라이드 1

chap 5: Trees

Research & Technique Apache Tomcat RCE 취약점 (CVE ) 취약점개요 지난 4월 15일전세계적으로가장많이사용되는웹애플리케이션서버인 Apache Tomcat에서 RCE 취약점이공개되었다. CVE 취약점은 W

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

Microsoft PowerPoint - CSharp-10-예외처리

- 목차 - - ios 개발환경및유의사항. - 플랫폼 ios Project. - Native Controller와플랫폼화면연동. - 플랫폼 Web(js)-Native 간데이터공유. - 플랫폼확장 WN Interface 함수개발. - Network Manager clas

로거 자료실

슬라이드 1

Microsoft PowerPoint - chap06-2pointer.ppt

MasoJava4_Dongbin.PDF

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

Microsoft PowerPoint - C++ 5 .pptx

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout << " 양수입력 : "; cin >> *p; if (*p <= 0) cout << " 양수를입력해야합니다 " << endl; return; 동적할

ThisJava ..

PowerPoint 프레젠테이션

제11장 프로세스와 쓰레드

- 이벤트의처리 <input type= button id= button1 value= 확인 /> <input type= button id= button2 value= 확인 /> 자바스크립트인경우 : document.getelementbyid( button1 ).oncl

PowerPoint 프레젠테이션

Data Provisioning Services for mobile clients

슬라이드 1

chapter6.doc

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

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

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

교육자료

Dialog Box 실행파일을 Web에 포함시키는 방법

JAVA PROGRAMMING 실습 02. 표준 입출력

Microsoft PowerPoint Predicates and Quantifiers.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

A Dynamic Grid Services Deployment Mechanism for On-Demand Resource Provisioning

PowerPoint 프레젠테이션

Transcription:

표현언어 표현언어와커스텀태그 524730-1 2019 년봄학기 5/20/2019 박경신 표현언어 (Expression Language) JSP에서사용가능한새로운스크립트언어 JSP의 PAGE, REQUEST, SESSION, APPLICATION 영역에저장된속성에사용 수치연산, 관계연산, 논리연산자제공 자바클래스메서드호출기능제공 쿠키, 내장객체의속성등 JSP를위한표현언어의내장객체제공 람다식을이용한함수정의와실행 (EL3.0) 스트림 API를통한컬랙션처리 (EL3.0) 정적메소드실행 (EL3.0) 간단한구문때문에표현식 <%= %> 대신사용 <%-- 표현식 --%> <%= member.getaddress().getzipcode() %> <%-- 표현언어 --%> ${member.address.zipcode} 표현언어구문 표현언어는 JSP 스크립트요소 ( 스크립트릿, 표현식, 선언부 ) 를제외한나머지부분에서사용 기본문법 ${expr} 은표현식이실행되는시점에바로값계산 <jsp:include page="/module/${skin.id}/header.jsp" flush= true /> <b>${sessionscope.member.id}</b> 님환영합니다. #{expr} 은값이실제로필요한시점에값계산 JSP 템플릿텍스트에서는사용불가 EL 사용예시 <jsp:setproperty> 태그에 EL 사용 <jsp:setproperty name= box property= perimeter value="${2*box.width + 2*box.height}"/> <jsp:text> 태그에 EL 사용 <jsp:text> Box 둘레 : ${2*box.width + 2*box.height} </jsp:text>

EL 자료형 Boolean 타입 true 와 false 정수타입 0~9 로이루어진정수값 실수타입 0~9로이루어져있으며, 소수점 ('.') 을사용할수있고, 3.24e3과같이지수형으로표현가능 문자열타입 따옴표 ( ' 또는 " ) 로둘러싼문자열. 작은따옴표사용시, 값에포함된작은따옴표는 \' 로입력 \ 기호자체는 \\ 로표시 널타입 null EL 연산자 수치연산자 +, -, *, / ( 또는 div), % ( 또는 mod) 비교연산자 == ( 또는 eq),!= ( 또는 ne), < ( 또는 lt), <= ( 또는 le), > ( 또는 gt), >= ( 또는 ge) 논리연산자 && ( 또는 and), ( 또는 or),! ( 또는 not) empty 연산자 empty < 값 > 값이 null 이면, true 값이빈문자열 ("") 이면, true 값의길이가 0 인배열이나콜렉션이면 true 이외의경우에는 false 비교선택연산자 < 수식 >? < 값 1> : < 값 2> EL 내장객체 EL 내장객체설명 EL 내장객체 pagecontext JSP의 page 기본객체와동일. servletcontext, session, request, response 등의여러객체를참조가능 pagescope pagecontext 기본객체에저장된속성의 < 속성, 값 > 을저장한 Map 객체. ${pagescope. 속성 } 으로값을참조 requestscope request 기본객체에저장된속성의 < 속성, 값 > 을저장한 Map 객체. ${pagescope. 속성 } 으로값을참조 sessionscope session 기본객체에저장된속성의 < 속성, 값 > 을저장한 Map 객체. ${sessionscope. 속성 } 으로값을참조 applicationscope application 기본객체에저장된속성의 < 속성, 값 > 을저장한 Map 객체. ${applicationscope. 속성 } 으로값을참조 param 요청 파라미터의 < 파라미터이름, 값 > 을 저장한 Map 객체. ${param.name} 은 request.getparameter(name) 을대체 paramvalues 요청파라미터의 < 파라미터이름, 값배열 > 을저장한 Map 객체. request.getparametervalues() 처리와동일 header 요청정보의 < 헤더이름, 값 > 을저장한 Map 객체. ${header[ name ]} 은 request.getheader( 헤더이름 ) 와같음 headervalues 요청정보의 < 헤더이름, 값배열 > 을저장한 Map 객체. request.getheaders() 의처리와동일 cookie < 쿠키이름, Cookie> 을저장한 Map 객체. request.getcookies() 의 Cookie 배열의이름과값으로 Map을생성 initparam 초기화파라미터의 < 이름, 값 > 을저장한Map 객체. ${initparam.name} 은 application.getinitparameter(name) 대체 EL 에서객체에접근 ${< 표현1>.< 표현2>} 또는 ${< 표현1>[< 표현2>]} 형식사용 처리과정 1. < 표현1> 을 < 값1> 로변환 2. < 값1> 이 null이면 null을반환 3. < 값1> 이 null이아닐경우 < 표현2> 를 < 값2> 로변환 1. < 값2> 가 null이면 null을반환 4. < 값1> 이 Map, List, 배열인경우 1. < 값1> 이 Map이면 1. < 값1>.containsKey(< 값2>) 가 false이면 null을반환 2. 그렇지않으면 < 값1>.get(< 값2>) 를반환 2. < 값1> 이 List나배열이면 1. < 값2> 가정수값인지검사 ( 정수값이아닐경우에러발생 ) 2. < 값1>.get(< 값2>) 또는 Array.get(< 값1>, < 값2>) 를반환 3. 위코드가예외를발생하면에러를발생 5. < 값1> 이다른객체이면 1. < 값2> 를문자열로변환 2. < 값1> 이이름이 < 값2> 이고읽기가능한프로퍼티를포함하고있다면 프로퍼티의값을반환 3. 그렇지않을경우에러를발생

EL 에서클래스메서드호출하기 클래스에정의한메소드를표현언어로호출하려면 ${ prefixname:functioname() } 먼저접두어 prefixname 으로태그를선언 EL 에서함수를이용하려면다음 3 가지작업을수행 1. 클래스작성 2. EL 함수를정의한 TLD(Tag Library Descriptor) 파일작성 & web.xml 파일에 TLD 파일지정 3. JSP 코드에서 TLD 에정의한함수실행 EL 에서클래스메서드호출하기 클래스의 static 메서드를 EL 에서호출가능 public class ELDateUtil { public static String format(date date) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy- MM-dd"); return formatter.format(date); } } 작업 파일이저장되는폴더 파일이름 클래스작성 [Java Resources: src]/[ 패키지 ] ELDateUtil.java TLD 파일작성 [WebContent]/[WEB-INF]/[tld] ELfunction.tld JSP 파일작성 [WebContent] function.jsp EL 함수를정의한 TLD 파일 <?xml version="1.0" encoding="euc-kr"?> <!-- XML선언문 --> <taglib version="2.1"> <!-- tag 정보 --> <description>el에서함수실행 </description> <tlib-version>1.0</tlib-version> <short-name>elfunction</short-name> <function> <description>date 객체포맷팅 </description> TLD 파일 TLD (Tag Library Descriptor) 사용자정의태그에대한설명을담고있는파일 TLD 구성 XML 선언문 DTD 지정 태그정보 - 사용자정의태그기본정보기술 사용자정의태그 - JSP에서사용할사용자정의태그항목기술 <name>dateformat</name> <!-- EL에서사용될함수명 --> <function-class>el.eldateutil</function-class> <function-signature> java.lang.string format(java.util.date) </function-signature> </function> </taglib>

TLD 파일 태그정보 사용자정의태그기본정보기술 태그 설명 <tlib-version> 태그라이브러리버전으로개발자에의해설정되는부분 <jsp-version> 적용되는 JSP 버전 <short-name> 현재태그라이브러리의간단한이름 <uri> taglib을고유한것으로만들어주는 URI 정보 <display-name> 출력에사용되는 taglib 이름 <tag> 사용자정의태그가위치하는부분 TLD 파일 사용자정의태그 JSP 에서사용할사용자정의태그항목기술 태그 <name> <tag-class> <body-content> 설명태그이름으로사용자정의태그핸들러와연결사용자정의태그핸들러클래스 태그내에다른태그를가질것인지, JSP 문장이올수있는지지정. empty : body 가없는태그로 <xxx /> 형태로사용. JSP : body 내용에 JSP 코드가올수있음. <xxx> JSP 코드 </xxx> tag-dependent : 태그핸들러에의해처리. 또다른사용자정의태그올수있음. <description> 태그라이브러리에대한설명이들어가는부분 web.xml 파일에 TLD 파일지정 JSP 에서 EL 함수호출 <web-app... version="2.5"> <jsp-config> <taglib> <taglib-uri> /WEB-INF/tlds/ELfunction.tld </taglib-uri> <taglib-location> /WEB-INF/tlds/ELfunction.tld </taglib-location> </taglib> </jsp-config> </web-app> JSP 에서사용될 URI TLD 파일경로 <%@ taglib prefix="elfunc" uri="/web-inf/tlds/elfunction.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> 입니다. prefix:tld 에정의된함수명 ()

EL 비활성화 web.xml 파일에비활성화옵션설정 <jsp-config> <jsp-property-group> <url-pattern>/oldversion/*</url-pattern> <el-ignored>true</el-ignored> </jsp-property-group> </jsp-config> * <deferred-syntax-allowed-as-literal> 를이용한 #{expr} 을문자열로처리 page 디렉티브에서설정 iselignored 속성을 true 로하면 EL 무시 deferredsyntaxallowedasliteral 속성을 true로하면 #{expr} 을문자열로처리 web.xml 파일버전에따라자동비활성화 서블릿 2.3 버전 : EL 지원하지않음 서블릿 2.4 버전 : ${expr} 형식의 EL 지원 EL 용법 Request 나 session 속성으로전달한값을출력 액션태그나커스텀태그의속성값 <jsp:include page= /lo/${layout.module}.jsp flush= true 함수의호출 코드의간결함및가독성향상 커스텀태그 (Custom Tag) <% while(iter.hasnext()) { HashMap data = (HashMap)iter.next(); %> <form name=<%=data.get("gb_id") %> action=guestbook_edit_form.jsp method=post> <input type=hidden name="gb_id" value="<%=data.get("gb_id") %>" <table cellpadding=5 cellspacing=0 border="1" width=400> <tr> <td bgcolor="#99ccff" height="23" > 작성자 </td> <td><%= data.get("gb_name") %></td> <td bgcolor="#99ccff" height="23" > 작성일 </td> <td><%= data.get("gb_date") %></td> </tr> <tr> <td bgcolor="#99ccff" height="23">email</td> <td colspan=3><%= data.get("gb_email") %></td> </tr> <tr> <td colspan=4><%= data.get("gb_contents") %></td> </tr> <tr> <td colspan=4> 비밀번호 <input type=password name=gb_passwd size=6> <input type=submit value=" 수정 / 취소 " ></td> </tr> </table> </form> <P> <% } // end while % 사용자정의태그사용전 사용자정의태그사용후 /WEB-INF/tags/getList.tag <%taglib prefix= tf tagdir= /WEB-INF/tags %> <html> <body> <tf:getlist /> </body> </html> 커스텀태그 (Custom Tag) JSP 액션태그와같은태그를추가할수있는기능 JSTL도커스텀태그라이브러리의한종류 커스텀태그의장점 재사용성향상 한번작성한커스텀태그는 JSP 컨테이너에서사용가능 쉽고단순한 JSP 제작 커스텀태그를사용하여쉽게 JSP 작성 코드가독성향상 스크립트코드를줄일수있기때문 커스텀태그의종류 JSP 1.2 스타일커스텀태그 JSP 2.0 이상의 SimpleTag를사용한커스텀태그 JSP 2.0 이상의태그파일을사용한커스텀태그 ( 구현이쉬움 )

태그파일 (tag file) JSP 문법을사용해서커스텀태그로동작할수있도록만들어진소스코드 서블릿보다 JSP가작성하기쉽듯이, 클래식태그나 SimpleTag보다태그파일이작성하기쉬움 JSP와동일한방식으로태그파일작성 JSP 소스코드를서블릿클래스로변환하듯이, 태그파일을커스텀태그클래스로변환 커스텀태그의표준인터페이스를구현하거나클래스를상속받아서구현 소스코드상태그대로설치해야하므로소드코드가공개 taglib 지시어를사용해서태그파일에서다른커스텀태그를사용할수있음 태그파일의위치및참조 위치및확장자 WEB-INF/tags 디렉터리및하위디렉터리에위치 확장자.tag 또는.tagx를갖는파일만태그파일로인식 태그파일의이름은커스텀태그의이름이됨 uri 속성대신 tagdir 속성을사용. 태그파일이위치한디렉터리의경로를입력하고해당디렉터리에있는태그파일의이름은각각하나의커스텀태그이름이됨 JSP에서태그파일참조 <%@ taglib prefix="tf" tagdir="/web-inf/tags/util" %>... <tf:removehtml...>...</tf:removehtml> /WEB-INF/tags/util 디렉터리의 removehtml.tag 파일을 <tf:removehtml> 태그의구현코드로사용 태그파일에서사용할수있는지시어 tag 디렉티브의주요속성 디렉티브 tag taglib include attribute variable 설명 JSP 페이지의 page 지시어와동일. tag 지시어는태그파일의정보를명시 JSP 페이지와마찬가지로태그파일에서사용할태그라이브러리를명시할때사용 JSP 페이지와마찬가지로태그파일에특정한파일을포함시킬때사용. 태그파일에포함되는파일은태그파일에알맞은문법으로작성되어야함 태그파일이커스텀태그로사용될때입력받을속성을명시 EL 변수로사용될변수에대한정보를지정 속성 display-name body-content dynamic-attributes 설명태그파일을도구에서보여줄때사용될이름지정몸체내용의종류를지정. empty, tagdependent, scriptless 중한가지사용. 기본값은 scriptless 동적속성을사용할때, 속성의 < 이름, 값 > 이저장될 Map 객체를 page 범위의속성에저장할때사용할이름을명시. EL에서변수이름으로사용가능 import page 지시어의 import 속성과동일 ( 선택 ) pageencoding page 지시어의 pageencoding 속성과동일 ( 선택 ) iselignored page 지시어의 iselignored 속성과동일 ( 선택 ) deferredsyntaxallowedasli teral(2.1) trimdirectivewhitespaces (2.1) page 지시어의 deferredsyntaxallowedasliteral 속성과동일 ( 선택 ) #{ 문자가문자열값으로사용되는것을허용여부를지정 page 지시어의 trimdirectivewhitespaces 속성과동일 ( 선택 ) 출력결과에서템플릿텍스트의공백문자를제거할지의여부를지정

태그파일의내장객체 jspcontext pagecontext가제공하는 setattribute(), getattribute() 메서드를그대로제공하며, 각속성과관련된작업을처리 request JSP 페이지의 request 기본객체와동일 response JSP 페이지의 response 기본객체와동일 session JSP 페이지의 session 기본객체와동일 application JSP 페이지의 application 기본객체와동일 out JSP 페이지의 out 기본객체와동일 attribute 지시어의기본사용법 attribute 지시어의기본사용법 name : 속성이름. 태그파일에서변수명으로사용가능 required : 속성의필수여부를지정 ( 기본값은 false) type : 속성값의타입을지정 ( 기본값은 java.lang.string) <%-- header.tag --%> <%@ tag... %> <%@ attribute name="title" required="true" %> <%@ attribute name="level" type="java.lang.integer" %>... // level 에따른 starttag= <h1> & endtag= </h1> 셋팅 <%=starttag %>${title}<%= endtag%> JSP 에서의사용법 <tf:header title="<%= article.gettitle() %>" level= 1 /> <tf:header title="${article.title}" /> <tf:header title=" 이글의제목 " /> <jsp:attribute> 액션태그이용속성값전달 태그파일의 attribute 지시어의 fragment 속성이 true 경우 JSP 에서속성에값을전달할때 <jsp:attribute> 사용해야함 태그파일에서는 <jsp:invoke> 를이용해서설정한속성값사용 <%-- header.tag --%> <%@ attribute name="title" fragment="true" %> // 첫번째, <jsp:attribute> 의몸체내용을그대로처리하여출력 <jsp:invoke fragment="title" /> // 두번째, <jsp:attribute> 의몸체내용을처리한결과를 // 지정한영역의속성에저장 <jsp:invoke fragment="title" var="rs" scope="page" /> ${pagescope.rs} <jsp:attribute> 액션태그로값지정 <tf:header> attribute 몸체에서는텍스트, EL, <jsp:include> 사용가능 <jsp:attribute name="title">${article.title}</jsp:attribute> </tf:header> 동적속성 attribute 디렉티브로지정하지않은속성을 Map에저장 상황에따라서동적으로속성을추가할때사용 tag 디렉티브의 dynamic-attributes 속성에동적속성을저장할변수명지정 ( 변수타입은 Map) 동적속성들은 java.util.map 타입의 EL 변수에저장되므로 dynamic-attributes 속성에서명시한 Map 이름으로 Map EL 변수를통해서접근가능 <%@ tag dynamic-attributes="dynamicmap" %>... ${dynamicmap.attrname}.. <!-- attrname 속성값 -->

태그파일이용커스텀태그에몸체내용전달하기 방법 1 - 태그몸체 <tf:sometagfile attr1=" 속성값 "> 여기에몸체내용을입력한다. </tf:sometagfile> 태그파일에서몸체내용사용하기 EL 및태그가처리된몸체내용사용하기 <%@ tag body-content="scriptless" %> <!-- 몸체로전달받은내용을사용 --> <jsp:dobody /> 방법2 - <jsp:body> 액션태그사용 태그파일이용커스텀태그의몸체에는표현식사용불가 <tf:sometagfile attr1=" 속성값 "> <jsp:attribute name="attr2">value</jsp:attribute> <jsp:body> 여기에몸체내용을입력한다. </jsp:body> </tf:sometagfile> 몸체내용을데이터로사용하기 <%@ tag body-content="tagdependent" pageencoding="euc-kr" %> <jsp:dobody var="bodytext" /> variable 지시어와 name-given 을이용한변수추가 variable 지시어를사용해서태그파일을사용하는 JSP/ 태그파일에서사용할 EL 변수추가 variable 지시어의기본문법 <%@ variable name-given="el 변수이름 " variable-class=" 변수타입 " scope=" 변수범위 " /> name-given 속성및 scope 속성에따른 EL 변수특징 name-from-attribute 속성을이용한변수생성 특정속성의값을생성할변수명으로사용 name-from-attribute 속성의사용법 <%@ attribute name="var" rtexprvalue="false" required="true" type="java.lang.string" %> <%@ variable alias="localname" name-from-attribute="var" scope=" 영역 " %>... <c:set var="localname" value="..." /> name-from-attribute 속성에명시한속성의제약조건 rtexprvalue 속성의값이 false required 속성이 true type 속성의값은 java.lang.string alias 속성 : 태그파일에서생성할변수에접근할때사용할 EL 변수명

변수동기화처리 AT_BEGIN NESTED AT_END 태그시작아무것도안함 EL 변수저장아무것도안함 <jsp:dobody> 실행전 태그 페이지복사태그 페이지복사아무것도안함 태그끝태그 페이지복사 EL 변수복구태그 페이지복사