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

Size: px
Start display at page:

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

Transcription

1 커스텀액션 JSP & Servlet

2 2/94 Contents 학습목표 커스텀액션을직접만들어서사용하는방법과커스텀액션을모아서태 그라이브러리를만들어배포하는방법을배워보자. 내용 커스텀액션작성방법 태그파일을이용한커스텀액션작성방법 태그클래스를이용한커스텀액션작성방법 태그라이브러리작성방법

3 3/94 1. 커스텀액션구현 커스텀액션구현 커스텀액션구현방법 태그파일 (Tag File) 태그클래스 심플태그 (Simple Tag) 클래스 클래식태그 (Classic Tag) 클래스 태그파일 (tag file) JSP 페이지와비슷한문법으로작성하는텍스트파일 커스텀태그의동작을기술 body-content= scriptless %> <TABLE border=1 cellpadding=20> <TR> <TD> <jsp:dobody/> </TD> </TR> </TABLE> JSP 페이지와유사한문법 [ 그림 10-2] 태그파일의예

4 4/94 1. 커스텀액션구현 커스텀액션구현 태그파일 JSP 페이지처럼웹컨테이너의특정디렉터리에저장해놓기만하면바로사용가능 간단한설치방법은태그파일의장점 [ 그림 10-3] 태그파일을개발할때해야할일

5 5/94 1. 커스텀액션구현 커스텀액션구현 태그클래스 (tag class) 자바프로그래밍언어의문법에따라완전한자바클래스형태로작성 태그의속성및동작을구현 태그클래스가상속받아야하는슈퍼클래스 package util; import java.io.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class BoxTag extends SimpleTagSupport { public void dotag() throws JspException, IOException { JspContext context = getjspcontext(); JspWriter out = context.getout(); JspFragment body = getjspbody(); out.println( <TABLE border=1 cellpadding=20><tr><td> ); body.invoke(out); out.println( </TD></TR></TABLE> ); return; } } 커스텀액션이실행될때호출되는메서드 커스텀액션의기능을구현하는코드

6 6/94 1. 커스텀액션구현 커스텀액션구현 태그클래스 태그파일과달리설치방법이상당히복잡 [ 그림 10-5] 태그클래스를개발할때해야할일

7 7/94 2. 태그파일 아주간단한태그파일 태그파일 태그의동작을구현한일련의 JSP 파일 파일확장자 : jsp tag 특정배포위치에배포하여야웹컨테이너가검색하여실행가능 다음과같이웹페이지에선을출력하는태그파일을만들어보자. <util:line/> [ 그림 10-6] 아주간단한커스텀액션의예 [ 예제 10-1] 선을출력하는커스텀액션의태그파일 미완성 <BR>

8 8/94 2. 태그파일 아주간단한태그파일 태그파일에서사용가능한지시자 이름 tag 지시자 include 지시자 taglib 지시자 attribute 지시자 variable 지시자 역할 웹컨테이너가태그파일을처리할때필요한정보를기술 다른태그파일을포함 태그파일에서사용할다른커스텀액션의태그라이브러리 (tag library) 에대한정보를기술 커스텀액션의애트리뷰트에대한정보를기술 커스텀액션의변수에대한정보를기술 [ 표 10-1] 태그파일에서사용할수있는지시자 include / taglib 지시자 - JSP 페이지에서와똑같은역할을수행 나머지지시자는태그파일에서만사용

9 2. 태그파일 아주간단한태그파일 태그파일을이용해서만든커스텀액션은기본적으로본체를가질수있다. 커스텀액션의본체 - 시작태그와끝태그사이에오는부분 <util:box> 야유회가취소되었습니다.</util:box> 커스텀액션의본체 (body) 커스텀액션이본체를갖지않는경우는태그파일에 tag 지시자의옵션을이용하여설정 <%@tag body-content= empty %> 커스텀액션이본체를가질수없음을표시합니다. 위와같이 tag 지시자의 body-content 옵션을정의하는경우, 커스텀액션을사용할 때다음과같이처리된다. <util:line> 절취선 </util:line> <util:line/> 문법에러가발생합니다. 정상처리됩니다 9/94

10 2. 태그파일 아주간단한태그파일 [ 예제 10-2] 선을출력하는커스텀액션의태그파일 line.tag <%@tag body-content= empty %> <BR> 3 그디렉터리안에 [ 예제 10-2] 의태그파일을저장하세요 1 이번장의예제를위한 brain10 웹애플리케이션디렉터리를만드세요. 2 그리고그아래에 WEB-INF/tags 서브디렉터리를만드세요 10/94

11 11/94 2. 태그파일 아주간단한태그파일 웹컨테이너에서의태그파일위치

12 2. 태그파일 아주간단한태그파일 JSP 페이지에서커스텀액션을사용하려면 taglib 지시자로지정 taglib 지시자에 uri 애트리뷰트대신 tagdir 애트리뷰트를사용 prefix= util tagdir= /WEB-INF/tags %> 접두어 태그파일이있는디렉터리의경로명 tablib 지시자로지정한다음에는접두어와커스텀액션의이름을이용해서커 스텀액션을사용 커스텀액션의이름은태그파일의이름에서.tag 를제외한나머지부분 <util:line/> 접두어 커스텀액션의이름 12/94

13 13/94 2. 태그파일 아주간단한태그파일 [ 예제 10-3] 예제 10-2 가만드는커스텀액션을사용하는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= util tagdir= /WEB-INF/tags %> <HTML> <HEAD><TITLE> 오늘의메뉴 </TITLE></HEAD> <BODY> <H3> 오늘의점심메뉴입니다.</H3> <util:line/> 삼계탕 <BR> 볶음밥 <BR> 튀김우동 <BR> <util:line/> </BODY> </HTML> [ 그림 10-8] 예제 10-3 의실행결과

14 2. 태그파일 애트리뷰트를지원하는태그파일 다음과같은애트리뷰트가있는커스텀액션을만들어보자. <util:newline color= red size= 20 /> 20 개의마이너스기호로이루어진빨간색선을출력합니다 애트리뷰트가있는커스텀액션을만들기위해서는태그파일에각각의애트리뷰트를 attribute 지시자를사용하여정의하여야함. Attribute 지시자옵션 name type required rtexprvalue [ 그림 10-9] 애트리뷰트가있는커스텀액션의예 14/94

15 15/94 2. 태그파일 애트리뷰트를지원하는태그파일 attribute 지시자의 name 옵션은커스텀액션의애트리뷰트이름을지정 name= color %> 애트리뷰트의이름 커스텀액션의애트리뷰트접근 스크립팅요소안에서자바변수처럼사용 표현식언어의 EL 식안에서데이터이름으로사용 <%= color %> ${color} 애트리뷰트의이름 애트리뷰트의이름

16 16/94 2. 태그파일 애트리뷰트를지원하는태그파일 [ 예제 10-4] 애트리뷰트를지원하는태그파일 <%@tag body-content= empty %> <%@attribute name= color %> <%@attribute name= size type= java.lang.integer %> <FONT color=${color} > <% for (int cnt = 0; cnt < size; cnt++) out.print( - ); %> </FONT><BR> [ 예제 10-5] 예제 10-4 가만드는커스텀액션을사용하는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= util tagdir= /WEB-INF/tags/util %> <HTML> <HEAD><TITLE> 오늘의메뉴 </TITLE></HEAD> <BODY> <util:newline color= blue size= 25 /> 저녁메뉴 <BR> <util:newline color= red size= 20 /> 불고기덮밥 <BR> 카레라이스 <BR> 쫄면 <BR> <util:newline color= blue size= 25 /> </BODY> </HTML> [ 그림 10-11] 예제 10-5 의실행결과

17 2. 태그파일 애트리뷰트를지원하는태그파일 [ 예제 10-4] 태그파일의문제점 <util:newline> 커스텀액션은 color 와 size 애트리뷰트를모두지정하였을때는정상 적으로작동하지만, size 애트리뷰트를쓰지않으면선이전혀출력되지않는다. size 애트리뷰트를필수애트리뷰트로지정하여해결 [ 예제 10-4] 의 attribute 지시자에 required 애트리뷰트를추가하고그값으로 true 를 지정 <%@attribute name= size type= java.lang.integer required= true %> 필수애트리뷰트임을표시합니다 17/94

18 2. 태그파일 동적애트리뷰트를지원하는태그파일 애트리뷰트각각을위해 attribute 지시자를쓰는대신모든애트리뷰트를한꺼 번에선언하려면동적애트리뷰트를선언하면된다. 태그파일의 tag 지시자에 dynamic-attributes 애트리뷰트를쓰고, 그값으로커 스텀액션의모든애트리뷰트를대표할이름을지정 dynamic-attributes= attrs %> 동적애트리뷰트의대표이름 태그파일안에서다음과같은 EL 식을사용하면커스텀액션에서사용된특 정애트리뷰트값을가져올수있다. ${attrs.color} 동적애트리뷰트의대표이름 실제로사용된애트리뷰트의이름 18/94

19 2. 태그파일 동적애트리뷰트를지원하는태그파일 커스텀액션의애트리뷰트를담고있는 Map 객체는 page 데이터영역을통해 태그파일에전달되는데, 그객체는 jspcontext 내장변수에대해 getattribute 라는메서드를호출해서가져올수있다. Map attrs = (Map) jspcontext.getattribute( attrs ); 동적애트리뷰트의대표이름 동적애트리뷰트의경우에는모든애트리뷰트의값이문자열형태로저장되므 로, Map 객체에대해 get 메서드를호출할때리턴값을 String 타입으로변환 해서받아야한다. String str = (String) attrs.get( size ); 개별적인애트리뷰트이름 19/94

20 2. 태그파일 동적애트리뷰트를지원하는태그파일 문자열형태의애트리뷰트값은다음과같은방법을이용해서다른데이터타 입으로변환해서사용할수도있다. int size = Integer.parseInt(str); 필요하다면가져온애트리뷰트값의타입을변환하세요 [ 예제 10-6] 동적애트리뷰트를지원하는태그파일 <%@tag body-content= empty %> <%@tag dynamic-attributes= attrs %> <FONT color=${attrs.color} > <% java.util.map attrs = (java.util.map) jspcontext.getattribute( attrs ); String str = (String) attrs.get( size ); int size = Integer.parseInt(str); for (int cnt = 0; cnt < size; cnt++) { out.print( = ); } %> </FONT><BR> WEB-INF/tags/util 디렉터리에 doubleline.tag 라는이름으로저장 20/94

21 21/94 2. 태그파일 동적애트리뷰트를지원하는태그파일 [ 예제 10-7] 예제 10-6 이만드는커스텀액션을사용하는 JSP 페이지 ( 1 ) <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= util tagdir= /WEB-INF/tags/util %> <HTML> <HEAD><TITLE> 오늘의메뉴 </TITLE></HEAD> <BODY> <H3> 오늘의토요일이므로간단한분식만제공합니다.</H3> <util:doubleline color= green size= 30 /> 샌드위치 <BR> 우동 <BR> <util:doubleline color= purple size= 50 /> </BODY> </HTML>

22 2. 태그파일 동적애트리뷰트를지원하는태그파일 동적애트리뷰트를지원하는커스텀액션은유효한애트리뷰트와그렇지못한 애트리뷰트를일일이확인하지않는다. [ 예제 10-8] 예제 10-6 이만드는커스텀액션을사용하는 JSP 페이지 (2) <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= util tagdir= /WEB-INF/tags/util %> <HTML> <HEAD><TITLE> 일요일의메뉴 </TITLE></HEAD> <BODY> <H3> 일요일에는급식을하지않습니다.<H3> <util:doubleline color= pink size= 40 style= bold /> </BODY> </HTML> [ 그림 10-14] 예제 10-8 의실행결과 22/94

23 23/94 2. 태그파일 동적애트리뷰트를지원하는태그파일 [ 그림 10-15] 태그파일에정의되지않은애트리뷰트를사용했을때발생하는에러

24 2. 태그파일 커스텀액션의본체를처리하는태그파일 커스텀액션의시작태그와끝태그사이에오는내용을커스텀액션의본체 (body) 라고한다. <util:box> 안녕하세요, 여러분! <BR> 홈페이지를오픈했습니다. </util:box> [ 그림 10-16] 본체가있는커스텀액션의예 본체가있는커스텀액션을만들기위해서는태그파일의 tag 지시자에있는 body-content 애트리뷰트에 empty 라는값대신 scriptless 나 tagdependent 라는 값을써야한다. <%@tag body-content= scriptless %> 커스텀액션의본체에스크립틀릿을쓸수없음을표시합니다. 24/94

25 25/94 2. 태그파일 커스텀액션의본체를처리하는태그파일 [ 예제 10-9] 본체를지원하는태그파일 <%@tag body-content= scriptless %> <TABLE border=1 cellpadding=20> <TR> <TD> <jsp:dobody/> </TD> </TR> </TABLE> [ 예제 10-10] 예제 10-9 가만드는커스텀액션을사용하는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= util tagdir= /WEB-INF/tags/util %> <HTML> <HEAD><TITLE> 공지사항 </TITLE></HEAD> <BODY> 구내식당에서알려드립니다. <util:box> 공사관계로급식을일시중단합니다. <BR> </util:box> </BODY> </HTML> [ 그림 10-11] 예제 10-5 의실행결과

26 2. 태그파일 변수를지원하는커스텀액션 변수를지원하는커스텀액션을만들려면태그파일에 variable 지시자를써야 한다. variable 지시자를기술하는방법은다음과같다. name-given= result %> 변수의이름 String 타입이아닌다른타입의변수를선언하려면 variable 지시자에 variable-class 라는애트리뷰트를추가해서타입을지정하면된다. name-given= result variable-class= java.lang.integer %> 변수의타입 주의할점 - variable-class 애트리뷰트에는프리미티브타입을지정할수없으므로, 래퍼클래스타입을대신사용해야한다. 26/94

27 2. 태그파일 변수를지원하는커스텀액션 JSP 페이지 <tool:max num1= 45 num2= 32 />... ${maximum} num1, num2 애트리뷰트의값 maximum 변수의값 태그파일 입력 출력 위그림처럼작동하는커스텀액션을만들기위해서는커스텀액션이끝난다음에 maximum이라는변수를사용할수있도록만들어야한다. variable 지시자에 scope 애트리뷰트를추가하여지정 scope 애트리뷰트 [ 그림 10-18] 변수를이용해서데이터를리턴하는커스텀액션의예 변수의사용범위를지정하는역할 NESTED, AT_BEGIN, AT_END 중한값을지정 <%@variable name-given= result variable-class= java.lang.integer scope= AT_END %> 변수의사용범위 단독으로사용되는태그다음에변수를사용할수있도록만들려면 AT_END 값을지정하는것이가장적합 27/94

28 2. 태그파일 변수를지원하는커스텀액션 variable 지시자를이용해서선언한변수에값을대입하려면 <c:set> 커스텀액 션을사용해야한다. <c:set var= result value= 100 /> 변수의이름 변수에대입할값 태그파일안에서변수에저장한값은 JSP 페이지로전달되고, JSP 페이지에 서그값을가져다가사용할수있다. 28/94

29 29/94 2. 태그파일 변수를지원하는커스텀액션 [ 예제 10-11] 변수를지원하는태그파일 ( 1 ) <%@tag pageencoding= euc-kr %> <%@tag body-content= empty %> <%@taglib prefix= c uri= %> <%@attribute name= num1 type= java.lang.integer %> <%@attribute name= num2 type= java.lang.integer %> <%@variable name-given= maximum variable-class= java.lang.integer scope= AT_END %> <% int result; if (num1 > num2) result = num1; Else result = num2; %> <c:set var= maximum value= <%= result %> /> [ 예제 10-12] 예제 이만드는커스텀액션을사용하는 JSP 페이지 [ 그림 10-20] 예제 의실행결과 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= util tagdir= /WEB-INF/tags/util %> <HTML> <HEAD><TITLE> 최대값구하기 </TITLE></HEAD> <BODY> <H3> 최대값구하기 </H3> <util:max num1= ${param.num1} num2= ${param.num2} /> 최대값 : ${maximum} </BODY> </HTML>

30 2. 태그파일 변수를지원하는커스텀액션 앞예제의단점 결과를반환하는 maximum 변수의이름이태그파일안에고정되어있다. 해결책 - 별도의애트리뷰트를이용하여변수의이름을지정 <util:max var= maximum num1= 37 num2= 42 /> 변수의이름 변수이름을저장할애트리뷰트를선언할때는지켜야하는규칙 첫째, 필수애트리뷰트로만들어야한다. 둘째, 애트리뷰트값에스크립팅요소나익스프레션언어를사용할수없도록만들어야한다. <%@attribute name= var required= true rtexprvalue= false %> 애트리뷰트이름 필수애트리뷰트임을표시 애트리뷰트값으로스크립팅요소나 익스프레션언어를사용할수없음을표시 30/94

31 2. 태그파일 변수를지원하는커스텀액션 애트리뷰트를이용해서변수이름을지정할때는 variable 지시자도다르게기 술해야한다. 첫째, name-given 애트리뷰트를이용해서변수의이름을지정하는것이아니라, name-from-attribute 애트리뷰트를이용해서변수의이름을지정할애트리뷰트의이 름을지정해야한다. 둘째, 태그파일안에서사용할변수이름을따로선언해야한다. 변수이름을지정하기위해사용할애트리뷰트이름 태그파일안에서사용할변수이름 name-from-attribute= var alias= maximum variable-class= java.lang.integer scope= AT_END %> 31/94

32 32/94 2. 태그파일 변수를지원하는커스텀액션 [ 예제 10-13] 변수를지원하는태그파일 (2) <%@tag pageencoding= euc-kr %> <%@tag body-content= empty %> <%@taglib prefix= c uri= %> <%@attribute name= var required= true rtexprvalue= false %> <%@attribute name= num1 type= java.lang.integer %> <%@attribute name= num2 type= java.lang.integer %> <%@variable name-from-attribute= var alias= maximum variable-class= java.lang.integer scope= AT_END %> <% int result; if (num1 > num2) result = num1; else result = num2; %> <c:set var= maximum value= <%= result %> /> [ 예제 10-14] 예제 이만드는커스텀액션을사용하는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= util tagdir= /WEB-INF/tags/util %> <HTML> <HEAD><TITLE> 최대값구하기 </TITLE></HEAD> <BODY> <H3> 최대값구하기 </H3> <util:newmax var= MAX num1= ${param.num1} num2= ${param.num2} /> 최대값 : ${MAX} </BODY> </HTML> [ 그림 10-21] 예제 의실행결과

33 2. 태그파일 변수를지원하는커스텀액션 다음과같이커스텀액션의본체안에서변수를사용하는예제를작성해보자. <util:compute var= num start= 1 end= 5 > ${num} 의제곱은? ${num * num} <BR> </util:compute> [ 그림 10-22] 커스텀액션의본체안에서변수를사용하는커스텀액션의예 start 애트리뷰트부터 end 애트리뷰트까지변화하는값을본체안에서사용할 수있도록만들어야한다. 33/94

34 34/94 2. 태그파일 변수를지원하는커스텀액션 variable 지시자의 scope 애트리뷰트값을 NATED 로지정해야한다. [ 예제 10-15] 변수를지원하는태그파일 (3) <%@tag pageencoding= euc-kr %> <%@tag body-content= scriptless %> <%@taglib prefix= c uri= %> <%@attribute name= var required= true rtexprvalue= false %> <%@attribute name= start type= java.lang.integer %> <%@attribute name= end type= java.lang.integer %> <%@variable name-from-attribute= var alias= number variable-class= java.lang.integer scope= NESTED %> <% for (int cnt=start; cnt <= end; cnt++) { %> <c:set var= number value= <%= cnt %> /> <jsp:dobody/> <% } %>

35 35/94 2. 태그파일 변수를지원하는커스텀액션 [ 예제 10-16] 예제 가만드는커스텀액션을사용하는 JSP 페이지 ( 1 ) <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= util tagdir= /WEB-INF/tags/util %> <HTML> <HEAD><TITLE> 제곱표 </TITLE></HEAD> <BODY> <H3>1 부터 5 까지의제곱표 </H3> <util:compute var= num start= 1 end= 5 > ${num} 의제곱은? ${num * num} <BR> </util:compute> </BODY> </HTML> [ 그림 10-23] 예제 의실행결과

36 36/94 2. 태그파일 변수를지원하는커스텀액션 [ 예제 10-17] 예제 가만드는커스텀액션을사용하는 JSP 페이지 (2) <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= util tagdir= /WEB-INF/tags/util %> <HTML> <HEAD><TITLE> 세제곱표 </TITLE></HEAD> <BODY> <H3>1 부터 5 까지의세제곱표 </H3> <util:compute var= num start= 1 end= 7 > ${num} 의세제곱은? ${num * num * num} <BR> </util:compute> </BODY> </HTML> [ 그림 10-24] 예제 의실행결과

37 37/94 3. 태그클래스 태그클래스종류 [ 그림 10-25] 태그클래스를만드는방법

38 38/94 3. 태그클래스 SimpleTag 인터페이스를구현하는태그클래스

39 39/94 3. 태그클래스 SimpleTag 인터페이스를구현하는태그클래스

40 40/94 3. 태그클래스 심플태그핸들러클래스구현

41 3. 태그클래스 SimpleTagSupport 태그클래스 SimpleTagSupport 클래스를이용해서태그클래스를만들때는반드시다음과같은형식의 dotag 메서드를작성해야한다. public void dotag() throws JspException, IOException { } 이위치에커스텀액션이해야할일을기술해야합니다. 웹브라우저로 HTML 코드를출력하기위해서는우선다음과같은방법으로 JspContext 객체를구해야한다. JspContext context = getjspcontext(); JspWriter out = context.getout(); JSP 페이지에관한여러가지정보가들어있는 JspContext 객체를리턴하는메서드 JspContext 객체에대해 print 나 println 메서드를호출하면웹브라우저로 HTML 을출력할수있다. JspWriter 객체를리턴하는메서드 out.println( <BR> ); 웹브라우저로선을출력합니다 41/94

42 42/94 3. 태그클래스 SimpleTagSupport 태그클래스 다음은선을출력하는커스텀액션을구현하는태그클래스이다. [ 예제 10-18] 아주간단한태그클래스 package tool; import java.io.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class StarLineTag extends SimpleTagSupport { public void dotag() throws JspException, IOException { JspContext context = getjspcontext(); JspWriter out = context.getout(); out.println( ************************************<BR> ); return; } }

43 43/94 3. 태그클래스 SimpleTagSupport 태그클래스 1 톰캣의 lib 디렉터리에있는이파일을 [ 그림 10-29] jsp-api.jar 파일을 JDK 의확장라이브러리디렉터리에설치하기

44 44/94 3. 태그클래스 SimpleTagSupport 태그클래스 2 JDK 의 jre\lib\ext 디렉터리로복사합니다.

45 3. 태그클래스 SimpleTagSupport 태그클래스 [ 그림 10-30] 태그클래스를컴파일하는방법 3 작업디렉터리 (C:\src\ch10) 에있는컴파일결과물을 tool 서브디렉터리에복사하세요 1 brain10/web-inf 디렉터리아래에 classes 디렉터리를만드세요. 2 [ 예제 10-18] 의클래스는 tool 패키지에속하므로 tool 서브디렉터리를만드세요 [ 그림 10-31] 예제 의태그클래스를설치하는방법 45/94

46 46/94 3. 태그클래스 SimpleTagSupport 태그클래스 태그클래스를설치한다음에는등록을해야한다. ( 앞의 [ 그림 10-5] 참고 ) TLD 파일에태그클래스를등록하기위해서는다음과같은형식의 <tag> 엘리먼트를추가해야한다. <tag> <name>starline</name> <tag-class>tool.starlinetag</tag-class> <body-content>empty</body-content> </tag> 커스텀액션의이름 태그클래스의이름 본체의형태 <tag> 엘리먼트는 TLD 파일의루트엘리먼트인 <tablib> 엘리먼트의바로아 래에위치해야한다. <taglib xmlns= version= 2.1 > <tlib-version>1.0</tlib-version> <short-name>tool</short-name> TLD 파일의버전 <tag> TLD 파일의이름 <name>starline</name> <tag-class>tool.starlinetag</tag-class> <body-content>empty</body-content> </tag> </taglib>

47 47/94 3. 태그클래스 SimpleTagSupport 태그클래스 [ 예제 10-19] 예제 의태그클래스가만드는커스텀액션을사용하는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= tool uri= /taglibs/tools.tld %> <HTML> <HEAD><TITLE> 자료실공지사항 </TITLE></HEAD> <BODY> <H3> 이달의신착도서 </H3> <tool:starline/> 멀티프로세서프로그래밍 <BR> 트와일라잇 <BR> 회사에서바로통하는관리회계 <BR> <tool:starline/> </BODY> </HTML> [ 그림 10-34] 예제 의실행결과

48 48/94 3. 태그클래스 애트리뷰트가있는심플태그클래스 태그클래스를이용하여애트리뷰트가있는커스텀액션을구현하는방법 애트리뷰트값을받는 public 메서드를선언해야한다. 메서드의이름은 set 으로시작해야하고, 그다음에애트리뷰트의본래이름에서첫 글자를대문자로바꾼이름을붙여서만들어야한다. color 애트리뷰트값을받는메서드의이름 이파라미터변수를통해애트리뷰트값이전달됩니다 public void setcolor(string color) { } set- 메서드가받은애트리뷰트값은필드 (field, 클래스의멤버변수 ) 에저장 public class NewLineTag extends SimpleTagSupport { private String color; }... public void setcolor(string color) { this.color = color; } 애트리뷰트값을필드에저장합니다. 저장된애트리뷰트값은나중에 dotag 메서드안에서사용

49 49/94 3. 태그클래스 애트리뷰트가있는심플태그클래스 [ 예제 10-20] 애트리뷰트를지원하는태그클래스 package tool; import java.io.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class NewLineTag extends SimpleTagSupport { private int size; private String color; public void setsize(integer size) { size 애트리뷰트를받는메서드 this.size = size; } public void setcolor(string color) { this.color = color; color 애트리뷰트를받는메서드 } public void dotag() throws JspException, IOException { JspContext context = getjspcontext(); JspWriter out = context.getout(); out.println( <FONT color= + color + > ); for (int cnt = 0; cnt < size; cnt++) { out.print( * ); } out.println( </FONT><BR> ); return; } }

50 3. 태그클래스 애트리뷰트가있는심플태그클래스 애트리뷰트를지원여부를 TLD 파일에등록 <tag> 엘리먼트안에 <attribute> 라는서브엘리먼트를사용 <tag> <name>newline</name> <tag-class>tool.newlinetag</tag-class> <body-content>empty</body-content> </tag> 이위치에 <attribute> 엘리먼트를추가해야합니다. <attribute> 엘리먼트안에는 <name> 와 <type> 라는두개의서브엘리먼트를 사용하여각각애트리뷰트의이름과타입을표시 <attribute> <name>size</name> <type>java.lang.integer</type> </attribute> 애트리뷰트의이름 애트리뷰트의타입 50/94

51 3. 태그클래스 애트리뷰트가있는심플태그클래스 [ 예제 10-20] 의 setcolor 메서드가구현하는 color 애트리뷰트를위해서는다음 과같은 attribute 엘리먼트를기술해야한다. <attribute> <name>color</name> <type>java.lang.string</type> </attribute> 애트리뷰트의이름 애트리뷰트의타입 [ 그림 10-35] 예제 의태그클래스를 TLD 파일에등록하는방법 51/94

52 3. 태그클래스 애트리뷰트가있는심플태그클래스 [ 예제 10-21] 예제 이만드는커스텀액션을사용하는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= tool uri= /taglibs/tools.tld %> <HTML> <HEAD><TITLE> 전자정보실공지사항 </TITLE></HEAD> <BODY> <H3> 이달의신착자료 </H3> <tool:newline color= red size= 40 /> 카르멘 ( 오페라 ) DVD<BR> 돈키호테 ( 발레 ) DVD<BR> 시간을달리는소녀 ( 애니메이션 ) DVD<BR> <tool:newline color= red size= 40 /> 전자정보실에서만감상하실수있습니다.<BR> <tool:newline color= blue size= 50 /> </BODY> </HTML> [ 그림 10-36] 예제 의실행결과 52/94

53 3. 태그클래스 동적애트리뷰트를지원하는심플태그클래스 동적애트리뷰트를지원하기위해 setdynamicattribute 메서드를선언 다음과같은 3 개의파라미터를지정 애트리뷰트의이름이속하는네임스페이스의 URI 애트리뷰트의이름 애트리뷰트의값 public void setdynamicattribute(string uri, String localname, Object value) throws JspException { } 네임스페이스 (namespace) 란똑같은이름의충돌을방지하기위해서만들어놓은이름공간이다. 특정네임스페이스에속하지않는애트리뷰트일경우에이메서드의첫번째파라미터값은 null이된다. 53/94

54 3. 태그클래스 동적애트리뷰트를지원하는심플태그클래스 애트리뷰트의네임스페이스는잘사용되지않으므로, 대개의경우 setdynamicattribute 메서드안에서는첫번째파라미터값을무시하고두번 째와세번째파마리터값만저장해놓아도충분하다. public class NewerLineTag extends SimpleTagSupport implements DynamicAttributes { private Map<String,Object> attrs = new HashMap<String,Object>();... public void setdynamicattribute(string uri, String localname, Object value) throws JspException { attrs.put(localname, value); } } 애트리뷰트의이름과값을 Map 객체에저장합니다 public class NewerLineTag extends SimpleTagSupport implements DynamicAttributes { private Map<String,Object> attrs = new HashMap<String,Object>();... public void dotag() throws JspException, IOException {... String color = (String) attrs.get( color );... } } Map 객체에저장되어있는애트리뷰트값을가져옵니다 54/94

55 55/94 3. 태그클래스 동적애트리뷰트를지원하는심플태그클래스 [ 예제 10-22] 동적애트리뷰트를지원하는태그클래스 package tool; import java.io.*; import java.util.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class NewerLineTag extends SimpleTagSupport implements DynamicAttributes { private Map<String,Object> attrs = new HashMap<String,Object>(); public void setdynamicattribute(string uri, String localname, Object value) throws JspException { attrs.put(localname, value); } public void dotag() throws JspException, IOException { String color = (String) attrs.get( color ); int size = Integer.parseInt((String) attrs.get( size )); JspContext context = getjspcontext(); JspWriter out = context.getout(); out.println( <FONT color= + color + > ); for (int cnt = 0; cnt < size; cnt++) { out.print( * ); } out.println( </FONT><BR> ); return; } }

56 3. 태그클래스 동적애트리뷰트를지원하는심플태그클래스 TLD 파일에동적애트리뷰트를지원하는태그클래스를등록할때는 <tage> 엘리먼트안에 <dynamic-attributes> 서브엘리먼트를쓰고, 그안에 true 라는값 을쓰면된다. <tag> <name>newerline</name> <tag-class>tool.newerlinetag</tag-class> <body-content>empty</body-content> <dynamic-attributes>true</dynamic-attributes> </tag> 동적애트리뷰트를지원한다는표시 [ 예제 10-22] 의태그클래스를등록하는 <tag> 엘리먼트 [ 그림 10-37] 예제 의태그클래스를 TLD 파일에등록하는방법 56/94

57 57/94 3. 태그클래스 동적애트리뷰트를지원하는심플태그클래스 [ 예제 10-23] 예제 가만드는커스텀액션을사용하는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= tool uri= /taglibs/tools.tld %> <HTML> <HEAD><TITLE> 시청각실공지사항 </TITLE></HEAD> <BODY> <H3> 무료영화상영안내 </H3> <tool:newerline color= red size= 40 background= black /> 제목 : 폴라익스프레스 <BR> 일시 : 2009 년 7 월 4 일 ( 토 ) 오후 5:00<BR> <tool:newerline color= blue size= 45 height= 3 /> </BODY> </HTML> [ 그림 10-38] 예제 의실행결과

58 58/94 3. 태그클래스 본체를갖는심플태그클래스 태그클래스를이용해서본체가있는커스텀액션을만들기위해서는다음과 같은두단계의작업을해야한다. 첫째, getjspbody 메서드를이용해서커스텀액션의본체내용을가져온다. JspFragment body = getjspbody(); 커스텀액션의본체를가져오는메서드 둘째, JspFragment 객체를이용해서본체의내용을출력한다. body.invoke(out); JspFragment 객체의내용을출력하는메서드 invoke 메서드를호출할때는파라미터로 null 값을넘겨줄수도있다. body.invoke(null); null 을넘겨주면 JSP 페이지와동일한출력스트림을통해본체의내용이출력됩니다.

59 59/94 3. 태그클래스 본체를갖는심플태그클래스 [ 예제 10-24] 본체를지원하는태그클래스 package tool; import java.io.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class BoxTag extends SimpleTagSupport { public void dotag() throws JspException, IOException { JspContext context = getjspcontext(); JspWriter out = context.getout(); JspFragment body = getjspbody(); out.println( <TABLE border=1 cellpadding=20><tr><td> ); body.invoke(out); out.println( </TD></TR></TABLE> ); return; } }

60 3. 태그클래스 본체를갖는심플태그클래스 TLD 파일에본체가있는커스텀액션을등록할때는 <tag> 엘리먼트의 <body-content> 서브엘리먼트안에 scriptless 나 tagdependant 라는값을지정 <tag> <name>box</name> <tag-class>tool.boxtag</tag-class> <body-content>scriptless</body-content> </tag> 커스텀액션이본체에스크립팅요소를쓸수없다는표시 [ 예제 10-24] 의태그클래스를등록하는 <tag> 엘리먼트 [ 그림 10-39] 예제 의태그클래스를 TLD 파일에등록하는방법 60/94

61 61/94 3. 태그클래스 본체를갖는심플태그클래스 [ 예제 10-25] 예제 가만드는커스텀액션을사용하는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= tool uri= /taglibs/tools.tld %> <HTML> <HEAD><TITLE> 자료실공지사항 </TITLE></HEAD> <BODY> <tool:box> 다음달 1 일부터구입희망도서를신청받습니다. <BR> 많은참여바랍니다. <BR> </tool:box> </BODY> </HTML> [ 그림 10-40] 예제 의실행결과

62 3. 태그클래스 커스텀액션의본체내용을조작하는심플태그클래스 다음그림처럼커스텀액션의본체내용을조작해서출력하는커스텀액션을 만들어보자. <util:replace oldword= 비행기 newword= 제트기 > 떴다떴다비행기날아라날아라 <BR> 높이높이날아라우리비행기 <BR> </util:replace> [ 그림 10-41] 본체의내용을조작하는커스텀액션의예 태그클래스안에서커스텀액션의본체내용을가져다가문자열로만든다음, 그문자열을조작해서출력하면된다. 자바표준라이브러리의 java.io.stringwriter 클래스를이용하여동작수행 62/94

63 63/94 3. 태그클래스 커스텀액션의본체내용을조작하는심플태그클래스 첫째, getjspbody 메서드를호출해서커스텀액션의본체내용을가져온다. JspFragment body = getjspbody(); 커스텀액션의본체를가져옵니다. 둘째, JspFragment 객체에대해 invoke 메서드를호출할때파라미터로 StringWriter 객체를넘겨준다. StringWriter writer = new StringWriter(); body.invoke(writer); StringWriter 객체를생성합니다 본체의내용을 StringWriter 객체안으로출력합니다. 셋째, tostring 메서드를이용해서 StringWriter 객체안의내용을문자열로만 든다. String str = writer.tostring(); StringWriter 객체안에있는내용을문자열로만듭니다

64 64/94 3. 태그클래스 커스텀액션의본체내용을조작하는심플태그클래스 [ 예제 10-26] 커스텀액션의본체내용을조작하는태그클래스 package tool; import java.io.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class ReplaceTag extends SimpleTagSupport { private String oldword, newword; public void setoldword(string oldword) { this.oldword = oldword; } public void setnewword(string newword) { this.newword = newword; } public void dotag() throws JspException, IOException { JspContext context = getjspcontext(); JspWriter out = context.getout(); JspFragment body = getjspbody(); StringWriter writer = new StringWriter(); body.invoke(writer); String str = writer.tostring(); String newstr = str.replaceall(oldword, newword); out.print(newstr); return; } }

65 65/94 3. 태그클래스 커스텀액션의본체내용을조작하는심플태그클래스 [ 예제 10-27] 예제 이만드는커스텀액션을사용하는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= tool uri= /taglibs/tools.tld %> <HTML> <HEAD><TITLE> 노래바꿔부르기 </TITLE></HEAD> <BODY> <tool:replace oldword= 비행기 newword= 제트기 > 떴다떴다비행기날아라날아라 <BR> 높이높이날아라우리비행기 <BR> </tool:replace> </BODY> </HTML> [ 그림 10-43] 예제 의실행결과

66 3. 태그클래스 변수를지원하는심플태그클래스 JSP 페이지 <util:min num1= 45 num2= 32 />... ${minimum} num1, num2 애트리뷰트의값 maximum 변수의값 태그클래스 num1 과 num2 중작은값을 minimum 변수에담아서리턴합니다 [ 그림 10-44] 변수를이용해서데이터를리턴하는태그클래스의예 태그클래스가변수를지원하도록만들려면해당변수의이름과값을 page 데이터영역에저장해놓아야한다. page 데이터영역에데이터를저장하기위해서는우선 getjspcontext 메서드를호출해서 JspContext 객체를구해야한다. JspContext context = getjspcontext(); page 데이터영역에데이터를저장할수있는객체 context.setattribute( minimum, num1) 변수이름 변수값 66/94

67 67/94 3. 태그클래스 변수를지원하는심플태그클래스 [ 예제 10-28] 변수를지원하는태그클래스 ( 1 ) package tool; import java.io.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class MinimumTag extends SimpleTagSupport { private int num1, num2; public void setnum1(integer num1) { this.num1 = num1; } public void setnum2(integer num2) { this.num2 = num2; } public void dotag() throws JspException, IOException { JspContext context = getjspcontext(); if (num1 < num2) context.setattribute( minimum, num1); Else context.setattribute( minimum, num2); return; } }

68 68/94 3. 태그클래스 변수를지원하는심플태그클래스 TLD 파일에변수를지원하는태그클래스를등록할때는 <tag> 엘리먼트안 에 <variable> 이라는서브엘리먼트를쓰고, 다시그안에변수에대한정보를 기술하는몇가지서브엘리먼트를다음과같은형식으로작성 <tag>... 변수의이름 <variable> <name-given>minimum</name-given> <variable-class>java.lang.integer</variable-class> <scope>at_end</scope> </variable> 변수의사용범위... </tag> 변수의타입 [ 예제 10-28] 의태그클래스를등록하는 <tag> 엘리먼트

69 69/94 3. 태그클래스 변수를지원하는심플태그클래스 [ 예제 10-29] 예제 이만드는커스텀액션을사용하는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= tool uri= /taglibs/tools.tld %> <HTML> <HEAD><TITLE> 최소값구하기 </TITLE></HEAD> <BODY> <tool:min num1= ${param.num1} num2= ${param.num2} /> 최소값 : ${minimum} </BODY> </HTML> URL 뒤에이런식으로입력데이터값을직접쓰세요 [ 그림 10-46] 예제 의실행결과

70 70/94 3. 태그클래스 변수를지원하는심플태그클래스 별도의애트리뷰트를이용하여변수의이름을바꿀수있도록작성 <tool:min var= minimum num1= 12 num2= 35 /> 변수의이름

71 71/94 3. 태그클래스 변수를지원하는심플태그클래스 [ 예제 10-30] 변수를지원하는태그클래스 (2) package tool; import java.io.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class NewMinimumTag extends SimpleTagSupport { private String var; private int num1, num2; public void setvar(string var) { this.var = var; } public void setnum1(integer num1) { this.num1 = num1; } public void setnum2(integer num2) { this.num2 = num2; } public void dotag() throws JspException, IOException { JspContext context = getjspcontext(); if (num1 < num2) context.setattribute(var, num1); Else context.setattribute(var, num2); return; } }

72 72/94 3. 태그클래스 변수를지원하는심플태그클래스 애트리뷰트를통해변수의이름을지정하는커스텀액션을 TLD 파일을등록 할때는 <variable> 엘리먼트안에 <name-given> 서브엘리먼트대신 <namefrom-attribute> 라는서브엘리먼트를쓰고, 그안에변수의이름지정에사용되 는애트리뷰트의이름을써야한다. <tag>... 변수이름의지정에사용할애트리뷰트의이름 <variable> <name-from-attribute>var</name-from-attribute> <variable-class>java.lang.integer</variable-class> <scope>at_end</scope> 변수의타입 </variable>... 변수의사용범위 </tag>

73 3. 태그클래스 변수를지원하는심플태그클래스 TLD 파일에변수의이름지정에사용되는애트리뷰트를추가할때는필수애 트리뷰트로만들어야하고, 애트리뷰트값에익스프레션이나 EL 식을사용할 수없도록만들어야한다. <tag>... 애트리뷰트의이름 <attribute> <name>var</name> <type>java.lang.string</type> <required>true</required> <rtexprvalue>false</rtexprvalue> </attribute>... </tag> 애트리뷰트의타입 필수애트리뷰트임을표시 익스프레션이나 EL 식을애트리뷰트값으로사용할수없도록만드는표시 73/94

74 74/94 3. 태그클래스 변수를지원하는심플태그클래스 [ 예제 10-30] 의태그클래스를등록하는 <tag> 엘리먼트 [ 그림 10-47] 예제 의태그클래스를 TLD 파일에등록하는방법

75 75/94 3. 태그클래스 변수를지원하는심플태그클래스 [ 예제 10-31] 예제 이만드는커스텀액션을사용하는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefi x= tool uri= /taglibs/tools.tld %> <HTML> <HEAD><TITLE> 최소값구하기 (New)</TITLE></HEAD> <BODY> <tool:newmin var= MIN num1= ${param.num1} num2= ${param.num2} /> 최소값 : ${MIN} </BODY> </HTML> URL 뒤에이런식으로입력데이터값을직접쓰세요 [ 그림 10-48] 예제 의실행결과

76 76/94 3. 태그클래스 차일드커스텀액션 부모 - 자식관계의커스텀액션을태그클래스를이용해서구현하는방법 <tool:list> <tool:item> 오렌지쥬스 </tool:item> <tool:item> 키위스무디 </tool:item> <tool:item> 딸기아이스크림 </tool:item> </tool:list> 위와같은커스텀액션을만들기위해서는두개의태그클래스를작성 바깥쪽에있는 <tool:list> 커스텀액션을위한태그클래스 안쪽에있는 <tool:item> 커스텀액션을위한태그클래스 [ 그림 10-49] 부모 - 자식관계를갖는커스텀액션의예 (1)

77 3. 태그클래스 차일드커스텀액션 부모커스텀액션구현에서는 getjspbody 메서드를이용하여 JspFragment 객 체를구한다음에그객체에대해 invoke 메서드를호출 [ 예제 10-32] 부모커스텀액션을구현하는태그클래스 package tool; import java.io.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class ListTag extends SimpleTagSupport { public void dotag() throws JspException, IOException { JspFragment body = getjspbody(); body.invoke(null); return; } } invoke 메서드는내부적으로부모커스텀액션에포함된자식커스텀액션의 태그클래스를호출한다. 77/94

78 3. 태그클래스 차일드커스텀액션 자식커스텀액션을구현하는태그클래스에서는그커스텀액션이올바른부 모클래스안에서사용되고있는지확인해야한다. 태그클래스가슈퍼클래스인 SimpleTagSupport 로부터상속받은 getparent 메 서드를이용하면부모커스텀액션의태그클래스객체를가져올수있다. JspTag parent = getparent(); 부모커스텀액션의태그클래스객체를리턴하는메서드 위메서드가반환하는객체의타입을자바연산자인 instanceof를사용해서확인하면부모커스텀액션이올바른타입인지알수있다. 부모커스텀액션이아예없을경우를대비해서 getparent 메서드의반환값이 null인지도확인해보아야한다. 부모커스텀액션이없는지확인 부모커스텀액션이올바른타입인지확인 if ((parent == null)!(parent instanceof ListTag)) throw new JspException( 잘못된부모커스텀액션입니다. ); 부모커스텀액션의타입이올바르지않으면 JspException 객체를생성해서던집니다. 78/94

79 79/94 3. 태그클래스 차일드커스텀액션 [ 예제 10-33] 자식커스텀액션을구현하는태그클래스 package tool; import java.io.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class ItemTag extends SimpleTagSupport { public void dotag() throws JspException, IOException { JspTag parent = getparent(); if ((parent == null)!(parent instanceof ListTag)) throw new JspException( The Parent is not ListTag ); JspContext context = getjspcontext(); JspWriter out = context.getout(); JspFragment body = getjspbody(); out.print( - ); body.invoke(null); out.println( <BR> ); return; } } [ 예제 10-32] 의태그클래스를등록하는 <tag> 엘리먼트 [ 예제 10-33] 의태그클래스를등록하는 <tag> 엘리먼트

80 80/94 3. 태그클래스 차일드커스텀액션 [ 예제 10-34] 예제 10-32, 예제 이만드는커스텀액션을사용하는 JSP 페이지 <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= tool uri= /taglibs/tools.tld %> <HTML> <HEAD><TITLE> 과일나라 </TITLE></HEAD> <BODY> <H3> 오늘의메뉴 </H3> <tool:list> <tool:item> 오렌지쥬스 </tool:item> <tool:item> 키위스무디 </tool:item> <tool:item> 딸기아이스크림 </tool:item> </tool:list> </BODY> </HTML> [ 그림 10-51] 예제 의실행결과

81 4. 태그라이브러리작성 태그라이브러리작성방법 태그라이브러리를만들기위해서는크게세가지일을해야한다. 1. 디렉터리계층구조를만들고라이브러리를구성하는파일들을그곳에저장한다. 2. TLD 파일을수정한다. 3. 디렉터리의계층구조전체를 JAR 파일로만든다. JSP 규격서에따르면태그라이브러리를구성하는파일들은다음과같은디 렉터리계층구조에저장해야한다. 작업용디렉터리 TLD 파일은이디렉터리안에저장해야합니다. WEB-INF/classes 디렉터리아래에있던패키지디렉터리를통째로복사하세요. [ 그림 10-55] 태그라이브러리를위한디렉터리계층구조만들기 81/94

82 82/94 4. 태그라이브러리작성 태그라이브러리작성방법 태그라이브러리에는 web.xml 파일을포함시키지말아야한다. TLD 파일의 URI 는 TLD 파일안에직접써넣어야한다. <uri> 엘리먼트안에 TLD 파일의 URI 를기술합니다 [ 그림 10-56] TLD 파일에 URI 직접기술하기

83 4. 태그라이브러리작성 태그라이브러리작성방법 태그라이브러리는 JAR 파일형태로만들어야하며, JAR 파일은 JDK 의 bin 디렉터리에있는 jar.exe 프로그램을이용해서만들수있다. jar.exe 프로그램을실행할때는옵션, 생성할 JAR 파일의이름, JAR 파일에 들어갈파일들의이름을다음과같은순서로써야한다. jar cvf0 tool.jar * 옵션 생성할 JAR 파일의이름 JAR 파일에들어갈파일들 위명령에서사용한와일드카드문자 (*) 는현재디렉터리에있는모든파일과서브디 렉터리, 그리고그아래에있는모든파일과서브디렉터리를의미한다. 83/94

84 84/94 4. 태그라이브러리작성 태그라이브러리작성방법 1) jar 명령을입력하고 Enter 키를누르세요. JAR 파일에저장되는파일의목록 2) jar 명령이끝나면작업디렉터리에 JAR 파일이생성됩니다. [ 그림 10-57] jar 명령으로태그라이브러리를만드는방법

85 85/94 4. 태그라이브러리작성 태그라이브러리작성방법 3) 그디렉터리에 tool.jar 파일을저장하세요. 1) brain10t 웹애플리케이션디렉터리를만드세요. 2) 그아래에 WEB-INF/lib 서브디렉터리를만드세요. [ 그림 10-58] 태그라이브러리를설치하는방법

86 86/94 4. 태그라이브러리작성 태그라이브러리작성방법 [ 예제 10-37] 태그라이브러리의테스트를위한 JSP 페이지 ( 1 ) <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= tool uri= /taglibs/tools.tld %> <HTML> <HEAD><TITLE> 샐러드나라 </TITLE></HEAD> <BODY> <H3> 오늘의메뉴 </H3> <tool:newlist bullet= # > <tool:newitem> 야채샐러드 </tool:newitem> <tool:newitem> 고구마샐러드 </tool:newitem> <tool:newitem> 감자샐러드 </tool:newitem> </tool:newlist> </BODY> </HTML> [ 그림 10-59] 예제 의실행결과

87 4. 태그라이브러리작성 태그라이브러리작성방법 태그파일을포함하는태그라이브러리를만들기위해서는다음세가지단계 의작업이필요하다. 디렉터리계층구조를만들고파일들을그곳에저장한다. TLD 파일을생성해서태그파일을등록한다. 디렉터리계층구조전체를 JAR 파일로만든다. 1) META-INF 디렉터리를만드세요 절에서만들었던태그파일과태그파일이포함된서브디렉터리 2) 그아래에 tags 디렉터리를통째로복사하세요. [ 그림 10-60] 태그라이브러리를만들기위한태그파일의배치방법 87/94

88 4. 태그라이브러리작성 태그라이브러리작성방법 TLD 파일에태그파일을등록하려면우선루트엘리먼트안에 <tag-file> 이라 는서브엘리먼트를쓰고, 그안에다시커스텀액션의이름과태그파일의경 로명을포함하는 <name> 과 <path> 라는서브엘리먼트를쓰면된다. <tag-file> <name>line</name> <path>/meta-inf/tags/line.tag</path> </tag-file> 커스텀액션의이름 태그파일의경로명 88/94

89 89/94 4. 태그라이브러리작성 태그라이브러리작성방법 앞에서작성한모든태그파일을 TLD 파일에등록해놓은모습 [ 그림 10-61] 태그파일을등록한 TLD 파일

90 4. 태그라이브러리작성 태그라이브러리작성방법 TLD 파일은 META-INF 디렉터리나아래의서브디렉터리에저장해야한다. 단, tags 디렉터리안에는저장하면안된다. [ 그림 10-61] 의 TLD 파일을저장하세요. [ 그림 10-62] TLD 파일을저장하는방법 90/94

91 91/94 4. 태그라이브러리작성 태그라이브러리작성방법 jar.exe 프로그램을이용해서태그라이브러리를만드는방법은앞에서와동일 1) jar 명령을입력하고 Enter 키를누르세요. JAR 파일에저장되는파일의목록 2) jar 명령이끝나면작업디렉터리에 JAR 파일이생성됩니다. [ 그림 10-63] jar 명령으로태그라이브러리를만드는방법

92 92/94 4. 태그라이브러리작성 태그라이브러리작성방법 2) 그디렉터리에 util.jar 파일을저장하세요. 1) brain10t 웹애플리케이션의 WEB-INF/lib 디렉터리로가세요. [ 그림 10-64] 태그라이브러리를설치하는방법

93 93/94 4. 태그라이브러리작성 태그라이브러리작성방법 [ 예제 10-38] 태그라이브러리의테스트를위한 JSP 페이지 (2) <%@page contenttype= text/html; charset=euc-kr %> <%@taglib prefix= util uri= /taglibs/util.tld %> <HTML> <HEAD><TITLE>10 장의마지막예제 </TITLE></HEAD> <BODY> <H3>10 장의마지막예제입니다.</H3> <util:box> 커스텀액션만들기에대한공부를마쳤습니다. <BR> 여러분모두수고하셨습니다. </util:box> </BODY> </HTML> [ 그림 10-65] 예제 의실행결과

94 JSP & Servlet

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

서블릿의라이프사이클 뇌를자극하는 JSP & Servlet 서블릿의라이프사이클 뇌를자극하는 JSP & Servlet Contents v 학습목표 서블릿클래스로부터서블릿객체가만들어지고, 서블릿객체가초기화되어서서블릿이되고, 서블릿이사용되고, 최종적으로소멸되기까지의전과정을서블릿의라이프사이클이라고한다. 이장에서는서브릿의라이프사이클에관련된프로그래밍기술을배워보자. v 내용 서블릿의라이프사이클 서블릿클래스의 init 메서드의 destroy

More information

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

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

More information

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

Microsoft PowerPoint - aj-lecture9.ppt [호환 모드] 표현언어 표현언어와커스텀태그 524730-1 2019 년봄학기 5/20/2019 박경신 표현언어 (Expression Language) JSP에서사용가능한새로운스크립트언어 JSP의 PAGE, REQUEST, SESSION, APPLICATION 영역에저장된속성에사용 수치연산, 관계연산, 논리연산자제공 자바클래스메서드호출기능제공 쿠키, 내장객체의속성등 JSP를위한표현언어의내장객체제공

More information

PowerPoint Presentation

PowerPoint Presentation Class - Property Jo, Heeseung 목차 section 1 클래스의일반구조 section 2 클래스선언 section 3 객체의생성 section 4 멤버변수 4-1 객체변수 4-2 클래스변수 4-3 종단 (final) 변수 4-4 멤버변수접근방법 section 5 멤버변수접근한정자 5-1 public 5-2 private 5-3 한정자없음

More information

04장

04장 20..29 1: PM ` 199 ntech4 C9600 2400DPI 175LPI T CHAPTER 4 20..29 1: PM ` 200 ntech4 C9600 2400DPI 175LPI T CHAPTER 4.1 JSP (Comment) HTML JSP 3 home index jsp HTML JSP 15 16 17 18 19 20

More information

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

혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 <html> 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 <html> 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가 혼자서일을다하는 JSP. 이젠일을 Servlet 과나눠서한다. JSP와서블릿의표현적인차이 - JSP는 내에서자바를사용할수있는수단을제공한다. - 서블릿은자바내에서 을작성할수있는수단을제공한다. - JSP나서블릿으로만웹페이지를작성하면자바와다양한코드가웹페이지내에뒤섞여있어서웹페이지의화면설계가점점어려워진다. - 서블릿이먼저등장하였으나, 자바내에

More information

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

Microsoft PowerPoint - chap02-C프로그램시작하기.pptx #include int main(void) { int num; printf( Please enter an integer "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 을 작성하면서 C 프로그램의

More information

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

뇌를 자극하는 JSP & Servlet 슬라이드 서블릿의기초 Servlet & JSP 2/70 Contents 학습목표 서블릿클래스는자바클래스형태로구현되는웹애플리케이션프로그램이며, 일반적인자바클래스를작성할때보다지켜야할규칙이많다. 이장에서는그규칙들을배워보자. 내용 서블릿이란? 웹컨테이너란? 서블릿클래스의작성, 컴파일, 설치, 등록 톰캣관리자프로그램사용하기 웹브라우저로부터데이터입력받기 3/70 1. 서블릿이란?

More information

Data Provisioning Services for mobile clients

Data Provisioning Services for mobile clients 4 장. JSP 의구성요소와스크립팅요소 제 4 장 스크립팅요소 (Scripting Element) 1) 지시문 (Directive) 1. JSP 구성요소소개 JSP 엔진및컨테이너, 즉 Tomcat 에게현재의 JSP 페이지처리와관련된정보를전달하는목적으로활용 (6 장 )

More information

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

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 제이쿼리 () 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호 CSS와마찬가지로, 문서에존재하는여러엘리먼트를접근할수있다. 엘리먼트접근방법 $( 엘리먼트 ) : 일반적인접근방법

More information

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

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

More information

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 8 장클래스와객체 I 이번장에서학습할내용 클래스와객체 객체의일생직접 메소드클래스를 필드작성해 UML 봅시다. QUIZ 1. 객체는 속성과 동작을가지고있다. 2. 자동차가객체라면클래스는 설계도이다. 먼저앞장에서학습한클래스와객체의개념을복습해봅시다. 클래스의구성 클래스 (class) 는객체의설계도라할수있다. 클래스는필드와메소드로이루어진다.

More information

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 객체지향프로그래밍 IT CookBook, 자바로배우는쉬운자료구조 q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2 q 객체지향프로그래밍의이해 v 프로그래밍기법의발달 A 군의사업발전 1 단계 구조적프로그래밍방식 3 q 객체지향프로그래밍의이해 A 군의사업발전 2 단계 객체지향프로그래밍방식 4 q 객체지향프로그래밍의이해 v 객체란무엇인가

More information

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

뇌를 자극하는 JSP & Servlet 슬라이드 서블릿의라이프사이클 JSP & Servlet 2/39 Contents 학습목표 서블릿클래스로부터서블릿객체가만들어지고, 서블릿객체가초기화되어서서블릿이되고, 서블릿이사용되고, 최종적으로소멸되기까지의전과정을서블릿의라이프사이클이라고한다. 이장에서는서브릿의라이프사이클에관련된프로그래밍기술을배워보자. 내용 서블릿의라이프사이클 서블릿클래스의 init 메서드의 destroy

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 클래스, 객체, 메소드 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 필드만있는클래스 텔레비젼 2 예제 1. 필드만있는클래스 3 예제 2. 여러개의객체생성하기 4 5 예제 3. 메소드가추가된클래스 public class Television { int channel; // 채널번호 int volume; // 볼륨 boolean

More information

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

뇌를 자극하는 JSP & Servlet 슬라이드 속성 & 리스너 JSP & Servlet 2/39 Contents 학습목표 클라이언트요청에의해서블릿이실행될때에컨테이너에의해제공되는내장객체의종류와역할, 그리고접근범위특성등을알아본다. 웹컴포넌트사이의데이터전달을위한내장객체에서의속성설정과이에따른이벤트처리방법에대해알아본다. 내용 서블릿의초기화환경을표현하는 ServletConfig 객체 웹애플리케이션의실행환경을표현하는

More information

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

금오공대 컴퓨터공학전공 강의자료 C 프로그래밍프로젝트 Chap 14. 포인터와함수에대한이해 2013.10.09. 오병우 컴퓨터공학과 14-1 함수의인자로배열전달 기본적인인자의전달방식 값의복사에의한전달 val 10 a 10 11 Department of Computer Engineering 2 14-1 함수의인자로배열전달 배열의함수인자전달방식 배열이름 ( 배열주소, 포인터 ) 에의한전달 #include

More information

PowerPoint Presentation

PowerPoint Presentation public class SumTest { public static void main(string a1[]) { int a, b, sum; a = Integer.parseInt(a1[0]); b = Integer.parseInt(a1[1]); sum = a + b ; // 두수를더하는부분입니다 System.out.println(" 두수의합은 " + sum +

More information

2장 변수와 프로시저 작성하기

2장  변수와 프로시저 작성하기 Chapter. RequestDispatcher 활용 요청재지정이란? RequestDispatcher 활용 요청재지정구현예제 Chapter.9 : RequestDispatcher 활용 1. 요청재지정이란? 클라이언트로부터요청받은 Servlet 프로그램이응답을하지않고다른자원에수행흐름을넘겨다른자원의처리결과를대신응답하는것또는다른자원의수행결과를포함하여응답하는것을요청재지정이라고한다.

More information

PowerPoint Template

PowerPoint Template JavaScript 회원정보 입력양식만들기 HTML & JavaScript Contents 1. Form 객체 2. 일반적인입력양식 3. 선택입력양식 4. 회원정보입력양식만들기 2 Form 객체 Form 객체 입력양식의틀이되는 태그에접근할수있도록지원 Document 객체의하위에위치 속성들은모두 태그의속성들의정보에관련된것

More information

JUNIT 실습및발표

JUNIT 실습및발표 JUNIT 실습및발표 JUNIT 접속 www.junit.org DownLoad JUnit JavaDoc API Document 를참조 JUNIT 4.8.1 다운로드 설치파일 (jar 파일 ) 을다운로드 CLASSPATH 를설정 환경변수에서설정 실행할클래스에서 import JUnit 설치하기 테스트실행주석 @Test Test 를실행할 method 앞에붙임 expected

More information

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

뇌를 자극하는 JSP & Servlet 슬라이드 표준액션 JSP & Servlet 2/55 Contents 학습목표 JSP에는액션 (action) 이라는문법이있는데, 이것은 XML 태그형태로코드를기술하는문법이다. 액션은크게표준액션과커스텀액션으로나눌수있는데, 이번장에서는그중하나인표준액션 (standard action) 에대해서배워보자. 내용 표준액션이란? JSP 페이지의모듈화에사용되는표준액션 자바빈의호출에사용되는표준액션

More information

Design Issues

Design Issues 11 COMPUTER PROGRAMMING INHERIATANCE CONTENTS OVERVIEW OF INHERITANCE INHERITANCE OF MEMBER VARIABLE RESERVED WORD SUPER METHOD INHERITANCE and OVERRIDING INHERITANCE and CONSTRUCTOR 2 Overview of Inheritance

More information

Microsoft PowerPoint 세션.ppt

Microsoft PowerPoint 세션.ppt 웹프로그래밍 () 2006 년봄학기 문양세강원대학교컴퓨터과학과 세션변수 (Session Variable) (1/2) 쇼핑몰장바구니 장바구니에서는사용자가페이지를이동하더라도장바구니의구매물품리스트의내용을유지하고있어야함 PHP 에서사용하는일반적인변수는스크립트의수행이끝나면모두없어지기때문에페이지이동시변수의값을유지할수없음 이러한문제점을해결하기위해서 PHP 에서는세션 (session)

More information

Microsoft PowerPoint - Java7.pptx

Microsoft PowerPoint - Java7.pptx HPC & OT Lab. 1 HPC & OT Lab. 2 실습 7 주차 Jin-Ho, Jang M.S. Hanyang Univ. HPC&OT Lab. jinhoyo@nate.com HPC & OT Lab. 3 Component Structure 객체 (object) 생성개념을이해한다. 외부클래스에대한접근방법을이해한다. 접근제어자 (public & private)

More information

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

뇌를 자극하는 JSP & Servlet 슬라이드 JSTL 사용하기 JSP & Servlet 2/65 Contents 학습목표 JSTL이란 JSP 페이지를작성할때유용하게사용할수있는여러가지커스텀액션과함수가포함되어있는라이브러리이다. 이라이브러리는인터넷에서무상으로다운로드받을수있는데이장에서는라이브러리를다운로드받아서설치하고사용하는방법을알아보자. 내용 JSTL이란? JSTL 설치하기 코어라이브러리사용하기 포매팅라이브러리사용하기

More information

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

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 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 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 Jakarta is a Project of the Apache

More information

JAVA PROGRAMMING 실습 08.다형성

JAVA PROGRAMMING 실습 08.다형성 2015 학년도 2 학기 1. 추상메소드 선언은되어있으나코드구현되어있지않은메소드 abstract 키워드사용 메소드타입, 이름, 매개변수리스트만선언 public abstract String getname(); public abstract void setname(string s); 2. 추상클래스 abstract 키워드로선언한클래스 종류 추상메소드를포함하는클래스

More information

Microsoft PowerPoint - CSharp-10-예외처리

Microsoft PowerPoint - CSharp-10-예외처리 10 장. 예외처리 예외처리개념 예외처리구문 사용자정의예외클래스와예외전파 순천향대학교컴퓨터학부이상정 1 예외처리개념 순천향대학교컴퓨터학부이상정 2 예외처리 오류 컴파일타임오류 (Compile-Time Error) 구문오류이기때문에컴파일러의구문오류메시지에의해쉽게교정 런타임오류 (Run-Time Error) 디버깅의절차를거치지않으면잡기어려운심각한오류 시스템에심각한문제를줄수도있다.

More information

chapter5.doc

chapter5.doc Chapter 5 Custom Tag Library javabeans jsp, Bean jsp content scripting jsp ( ) xxx, Custom tag( ) 1 Tag Handler Class ( ) 2 Tag Library Descriptor File ( ) 3 taglib (JSP ) Tag Handler Class ( ) Class,

More information

rmi_박준용_final.PDF

rmi_박준용_final.PDF (RMI) - JSTORM http://wwwjstormpekr (RMI)- Document title: Document file name: Revision number: Issued by: Document Information (RMI)- rmi finaldoc Issue Date: Status:

More information

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

뇌를 자극하는 JSP & Servlet 슬라이드 JSP 와서블릿 Servlet & JSP 2/78 Contents 학습목표 JSP 기술과서블릿기술의기초를배워본다. 내용 JSP와서블릿에대하여 JDK 설치하기 톰캣설치하기 간단한 JSP 페이지작성하기 3/78 1. JSP 와서블릿에대하여 웹브라우저의요청을받아해당하는웹페이지를찾아서보내주는일을하는컴퓨터 ( 일 을하는소프트웨어 ) 를웹서버라고한다. 웹브라우저와웹서버

More information

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\)

작성자 : 김성박\(삼성 SDS 멀티캠퍼스 전임강사\) Session 을이용한현재로그인한사용자의 숫자구하기 작성자 : 김성박 ( 삼성 SDS 멀티캠퍼스전임강사 ) email : urstory@nownuri.net homepage : http://sunny.sarang.net - 본문서는http://sunny.sarang.net JAVA강좌란 혹은 http://www.javastudy.co.kr 의 칼럼 란에서만배포합니다.

More information

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

gnu-lee-oop-kor-lec06-3-chap7 어서와 Java 는처음이지! 제 7 장상속 Super 키워드 상속과생성자 상속과다형성 서브클래스의객체가생성될때, 서브클래스의생성자만호출될까? 아니면수퍼클래스의생성자도호출되는가? class Base{ public Base(String msg) { System.out.println("Base() 생성자 "); ; class Derived extends Base

More information

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

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 (   ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각 JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( http://java.sun.com/javase/6/docs/api ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각선의길이를계산하는메소드들을작성하라. 직사각형의가로와세로의길이는주어진다. 대각선의길이는 Math클래스의적절한메소드를이용하여구하라.

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 3 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Lecture 02 프로그램구조및문법 Kwang-Man Ko kkmam@sangji.ac.kr, compiler.sangji.ac.kr Department of Computer Engineering Sang Ji University 2018 자바프로그램기본구조 Hello 프로그램구조 sec01/hello.java 2/40 자바프로그램기본구조 Hello 프로그램구조

More information

Microsoft PowerPoint 웹 연동 기술.pptx

Microsoft PowerPoint 웹 연동 기술.pptx 웹프로그래밍및실습 ( g & Practice) 문양세강원대학교 IT 대학컴퓨터과학전공 URL 분석 (1/2) URL (Uniform Resource Locator) 프로토콜, 호스트, 포트, 경로, 비밀번호, User 등의정보를포함 예. http://kim:3759@www.hostname.com:80/doc/index.html URL 을속성별로분리하고자할경우

More information

Cluster management software

Cluster management software 자바네트워크프로그래밍 (OCJP 국제공인자격취득중심 ) 충북대학교 최민 기본예제 예외클래스를정의하고사용하는예제 class NewException extends Exception { public class ExceptionTest { static void methoda() throws NewException { System.out.println("NewException

More information

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일 Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 Introduce Me!!! Job Jeju National University Student Ubuntu Korean Jeju Community Owner E-Mail: ned3y2k@hanmail.net Blog: http://ned3y2k.wo.tc Facebook: http://www.facebook.com/gyeongdae

More information

PowerPoint Presentation

PowerPoint Presentation Package Class 1 Heeseung Jo 목차 section 1 패키지개요와패키지의사용 section 2 java.lang 패키지의개요 section 3 Object 클래스 section 4 포장 (Wrapper) 클래스 section 5 문자열의개요 section 6 String 클래스 section 7 StringBuffer 클래스 section

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

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

[ 마이크로프로세서 1] 2 주차 3 차시. 포인터와구조체 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Functi 2 주차 3 차시포인터와구조체 학습목표 1. C 언어에서가장어려운포인터와구조체를설명할수있다. 2. Call By Value 와 Call By Reference 를구분할수있다. 학습내용 1 : 함수 (Function) 1. 함수의개념 입력에대해적절한출력을발생시켜주는것 내가 ( 프로그래머 ) 작성한명령문을연산, 처리, 실행해주는부분 ( 모듈 ) 자체적으로실행되지않으며,

More information

PowerPoint Presentation

PowerPoint Presentation 객체지향프로그래밍 인터페이스, 람다식, 패키지 ( 실습 ) 손시운 ssw5176@kangwon.ac.kr 예제 1. 홈네트워킹 public interface RemoteControl { public void turnon(); // 가전제품을켠다. public void turnoff(); // 가전제품을끈다. 인터페이스를구현 public class Television

More information

14-Servlet

14-Servlet JAVA Programming Language Servlet (GenericServlet) HTTP (HttpServlet) 2 (1)? CGI 3 (2) http://jakarta.apache.org JSDK(Java Servlet Development Kit) 4 (3) CGI CGI(Common Gateway Interface) /,,, Client Server

More information

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

뇌를 자극하는 JSP & Servlet 슬라이드 쿠키와세션 JSP & Servlet 2/51 Contents 학습목표 셋이상의화면으로구성된웹애플리케이션을작성할때에는 JSP 페이지나서블릿클래스들이서로데이터를주고받도록만들어야할필요가있다. 이장에서는이럴때필요한쿠키와세션기술에대해알아보자. 내용 쿠키와세션 쿠키기술 세션기술 / HttpSession 3/50 1. 쿠키와세션 (1) 세션 (Session) - 정의 클라이언트의연속적인요청또는그요청에대한서비스기간

More information

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

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2 6.1 함수프로시저 6.2 서브프로시저 6.3 매개변수의전달방식 6.4 함수를이용한프로그래밍 3 프로시저 (Procedure) 프로시저 (Procedure) 란무엇인가? 논리적으로묶여있는하나의처리단위 내장프로시저 이벤트프로시저, 속성프로시저, 메서드, 비주얼베이직내장함수등

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습문제 Chapter 05 데이터베이스시스템... 오라클로배우는데이터베이스개론과실습 1. 실습문제 1 (5 장심화문제 : 각 3 점 ) 6. [ 마당서점데이터베이스 ] 다음프로그램을 PL/SQL 저장프로시져로작성하고실행해 보시오. (1) ~ (2) 7. [ 마당서점데이터베이스 ] 다음프로그램을 PL/SQL 저장프로시져로작성하고실행해 보시오. (1) ~ (5)

More information

<4D F736F F F696E74202D203130C0E52EBFA1B7AF20C3B3B8AE205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D203130C0E52EBFA1B7AF20C3B3B8AE205BC8A3C8AF20B8F0B5E55D> 10 장. 에러처리 1. page 지시문을활용한에러처리 page 지시문의 errorpage 와 iserrorpage 속성 errorpage 속성 이속성이지정된 JSP 페이지내에서 Exception이발생하는경우새롭게실행할페이지를지정하기위하여사용 iserrorpage 속성 iserrorpage 는위와같은방법으로새롭게실행되는페이지에지정할속성으로현재페이지가 Exception

More information

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770>

<322EBCF8C8AF28BFACBDC0B9AEC1A6292E687770> 연습문제해답 5 4 3 2 1 0 함수의반환값 =15 5 4 3 2 1 0 함수의반환값 =95 10 7 4 1-2 함수의반환값 =3 1 2 3 4 5 연습문제해답 1. C 언어에서의배열에대하여다음중맞는것은? (1) 3차원이상의배열은불가능하다. (2) 배열의이름은포인터와같은역할을한다. (3) 배열의인덱스는 1에서부터시작한다. (4) 선언한다음, 실행도중에배열의크기를변경하는것이가능하다.

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 11 장상속 이번장에서학습할내용 상속이란? 상속의사용 메소드재정의 접근지정자 상속과생성자 Object 클래스 종단클래스 상속을코드를재사용하기위한중요한기법입니다. 상속이란? 상속의개념은현실세계에도존재한다. 상속의장점 상속의장점 상속을통하여기존클래스의필드와메소드를재사용 기존클래스의일부변경도가능 상속을이용하게되면복잡한 GUI 프로그램을순식간에작성

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 5 장생성자와접근제어 1. 객체지향기법을이해한다. 2. 클래스를작성할수있다. 3. 클래스에서객체를생성할수있다. 4. 생성자를이용하여객체를초기화할수 있다. 5. 접근자와설정자를사용할수있다. 이번장에서만들어볼프로그램 생성자 생성자 (constructor) 는초기화를담당하는함수 생성자가필요한이유 #include using namespace

More information

TP_jsp7.PDF

TP_jsp7.PDF (1) /WEB_INF.tld /WEB_INF/lib (2) /WEB_INF/web.xml (3) http://{tag library }/taglibs/{library} /web_inf/{

More information

Microsoft PowerPoint - C++ 5 .pptx

Microsoft PowerPoint - C++ 5 .pptx C++ 언어프로그래밍 한밭대학교전자. 제어공학과이승호교수 연산자중복 (operator overloading) 이란? 2 1. 연산자중복이란? 1) 기존에미리정의되어있는연산자 (+, -, /, * 등 ) 들을프로그래머의의도에맞도록새롭게정의하여사용할수있도록지원하는기능 2) 연산자를특정한기능을수행하도록재정의하여사용하면여러가지이점을가질수있음 3) 하나의기능이프로그래머의의도에따라바뀌어동작하는다형성

More information

Microsoft PowerPoint - chap06-2pointer.ppt

Microsoft PowerPoint - chap06-2pointer.ppt 2010-1 학기프로그래밍입문 (1) chapter 06-2 참고자료 포인터 박종혁 Tel: 970-6702 Email: jhpark1@snut.ac.kr 한빛미디어 출처 : 뇌를자극하는 C프로그래밍, 한빛미디어 -1- 포인터의정의와사용 변수를선언하는것은메모리에기억공간을할당하는것이며할당된이후에는변수명으로그기억공간을사용한다. 할당된기억공간을사용하는방법에는변수명외에메모리의실제주소값을사용하는것이다.

More information

쉽게

쉽게 Power Java 제 4 장자바프로그래밍기초 이번장에서학습할내용 자바프로그램에대한기초사항을학습 자세한내용들은추후에. Hello.java 프로그램 주석 주석 (comment): 프로그램에대한설명을적어넣은것 3 가지타입의주석 클래스 클래스 (class): 객체를만드는설계도 ( 추후에학습 ) 자바프로그램은클래스들로구성된다. 그림 4-1. 자바프로그램의구조 클래스정의

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 실습 1 배효철 th1g@nate.com 1 목차 조건문 반복문 System.out 구구단 모양만들기 Up & Down 2 조건문 조건문의종류 If, switch If 문 조건식결과따라중괄호 { 블록을실행할지여부결정할때사용 조건식 true 또는 false값을산출할수있는연산식 boolean 변수 조건식이 true이면블록실행하고 false 이면블록실행하지않음 3

More information

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2

비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 비트연산자 1 1 비트와바이트 비트와바이트 비트 (Bit) : 2진수값하나 (0 또는 1) 를저장할수있는최소메모리공간 1비트 2비트 3비트... n비트 2^1 = 2개 2^2 = 4개 2^3 = 8개... 2^n 개 1 바이트는 8 비트 2 2 진수법! 2, 10, 16, 8! 2 : 0~1 ( )! 10 : 0~9 ( )! 16 : 0~9, 9 a, b,

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 Power Java 제 7 장클래스와객체 이번장에서학습할내용 객체지향이란? 객체 메시지 클래스 객체지향의장점 String 클래스 객체지향개념을완벽하게이해해야만객체지향설계의이점을활용할수있다. 실제세계는객체로이루어진다. 객체지향이란? 실제세계를모델링하여소프트웨어를개발하는방법 절차지향과객체지향 절차지향프로그래밍 (procedural programming): 문제를해결하는절차를중요하게생각하는방법

More information

17장 클래스와 메소드

17장 클래스와 메소드 17 장클래스와메소드 박창이 서울시립대학교통계학과 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 1 / 18 학습내용 객체지향특징들객체출력 init 메소드 str 메소드연산자재정의타입기반의버전다형성 (polymorphism) 박창이 ( 서울시립대학교통계학과 ) 17 장클래스와메소드 2 / 18 객체지향특징들 객체지향프로그래밍의특징 프로그램은객체와함수정의로구성되며대부분의계산은객체에대한연산으로표현됨객체의정의는

More information

JVM 메모리구조

JVM 메모리구조 조명이정도면괜찮조! 주제 JVM 메모리구조 설미라자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조장. 최지성자료조사, 자료작성, PPT 작성, 보고서작성. 발표. 조원 이용열자료조사, 자료작성, PPT 작성, 보고서작성. 이윤경 자료조사, 자료작성, PPT작성, 보고서작성. 이수은 자료조사, 자료작성, PPT작성, 보고서작성. 발표일 2013. 05.

More information

OCW_C언어 기초

OCW_C언어 기초 초보프로그래머를위한 C 언어기초 4 장 : 연산자 2012 년 이은주 학습목표 수식의개념과연산자및피연산자에대한학습 C 의알아보기 연산자의우선순위와결합방향에대하여알아보기 2 목차 연산자의기본개념 수식 연산자와피연산자 산술연산자 / 증감연산자 관계연산자 / 논리연산자 비트연산자 / 대입연산자연산자의우선순위와결합방향 조건연산자 / 형변환연산자 연산자의우선순위 연산자의결합방향

More information

제11장 프로세스와 쓰레드

제11장 프로세스와 쓰레드 제9장자바쓰레드 9.1 Thread 기초 (1/5) 프로그램 명령어들의연속 (a sequence of instruction) 프로세스 / Thread 실행중인프로그램 (program in execution) 프로세스생성과실행을위한함수들 자바 Thread 2 9.1 Thread 기초 (2/5) 프로세스단위작업의문제점 프로세스생성시오버헤드 컨텍스트스위치오버헤드

More information

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

var answer = confirm( 확인이나취소를누르세요.); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write( 확인을눌렀습니다.); else { document.write( 취소를눌렀습니다.); 자바스크립트 (JavaScript) - HTML 은사용자에게인터페이스 (interface) 를제공하는언어 - 자바스크립트는서버로데이터를전송하지않고서할수있는데이터처리를수행한다. - 자바스크립트는 HTML 나 JSP 에서작성할수있고 ( 내부스크립트 ), 별도의파일로도작성이가능하다 ( 외 부스크립트 ). - 내부스크립트 - 외부스크립트

More information

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

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter 파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter 클래스의사용법은다음과같다. PrintWriter writer = new PrintWriter("output.txt");

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 3 if, if else, if else if, switch case for, while, do while break, continue : System.in, args, JOptionPane for (,, ) @ vs. logic data method variable Data Data Flow (Type), ( ) @ Member field

More information

Microsoft PowerPoint - ch07 - 포인터 pm0415

Microsoft PowerPoint - ch07 - 포인터 pm0415 2015-1 프로그래밍언어 7. 포인터 (Pointer), 동적메모리할당 2015 년 4 월 4 일 교수김영탁 영남대학교공과대학정보통신공학과 (Tel : +82-53-810-2497; Fax : +82-53-810-4742 http://antl.yu.ac.kr/; E-mail : ytkim@yu.ac.kr) Outline 포인터 (pointer) 란? 간접참조연산자

More information

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20C1A63236C0E520BED6C7C3B8B428B0ADC0C729205BC8A3C8AF20B8F0B5E55D> Power Java 제 26 장애플릿 이번장에서학습할내용 애플릿소개 애플릿작성및소개 애플릿의생명주기 애플릿에서의그래픽컴포넌트의소개 Applet API의이용 웹브라우저상에서실행되는작은프로그램인애플릿에대하여학습합니다. 애플릿이란? 애플릿은웹페이지같은 HTML 문서안에내장되어실행되는자바프로그램이다. 애플릿을실행시키는두가지방법 1. 웹브라우저를이용하는방법 2. Appletviewer를이용하는방법

More information

슬라이드 1

슬라이드 1 Pairwise Tool & Pairwise Test NuSRS 200511305 김성규 200511306 김성훈 200614164 김효석 200611124 유성배 200518036 곡진화 2 PICT Pairwise Tool - PICT Microsoft 의 Command-line 기반의 Free Software www.pairwise.org 에서다운로드후설치

More information

Network Programming

Network Programming Part 5 확장된 Network Programming 기술 1. Remote Procedure Call 2. Remote Method Invocation 3. Object Request Broker 2. Java RMI

More information

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

임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 임베디드시스템설계강의자료 6 system call 2/2 (2014 년도 1 학기 ) 김영진 아주대학교전자공학과 System call table and linkage v Ref. http://www.ibm.com/developerworks/linux/library/l-system-calls/ - 2 - Young-Jin Kim SYSCALL_DEFINE 함수

More information

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Spring Boot/JDBC JdbcTemplate/CRUD 예제 Spring Boot/JDBC JdbcTemplate/CRUD 예제 오라클자바커뮤니티 (ojc.asia, ojcedu.com) Spring Boot, Gradle 과오픈소스인 MariaDB 를이용해서 EMP 테이블을만들고 JdbcTemplate, SimpleJdbcTemplate 을이용하여 CRUD 기능을구현해보자. 마리아 DB 설치는다음 URL 에서확인하자.

More information

PowerPoint Presentation

PowerPoint Presentation 자바프로그래밍 1 배열 손시운 ssw5176@kangwon.ac.kr 배열이필요한이유 예를들어서학생이 10 명이있고성적의평균을계산한다고가정하자. 학생 이 10 명이므로 10 개의변수가필요하다. int s0, s1, s2, s3, s4, s5, s6, s7, s8, s9; 하지만만약학생이 100 명이라면어떻게해야하는가? int s0, s1, s2, s3, s4,

More information

Microsoft PowerPoint - 4강.pptx

Microsoft PowerPoint - 4강.pptx 컴퓨터과학과 김희천교수 학습개요 동적인컨텐츠를생성하는일에는 어떻게컨텐츠를생성할것인지 를지시해주기위한프로그래밍이어떤형태로든필요하다. JSP 기술은동적으로컨텐츠를생성하기위해, 프로그래밍코드가담긴스크립트를포함할수있게하고또한 HTML 태그를통해어려운자바코딩없이도자바객체를사용할수있게하고있다. JSP는 Java Server Pages의약자로최신버전은 2.1이며자바기반스크립트언어이며또한

More information

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

<param-value> 파라미터의값 </param-value> </init-param> </servlet> <servlet-mapping> <url-pattern>/ 매핑문자열 </url-pattern> </servlet-mapping> - 위의예에서 ServletC 내장객체의정리 헷갈리는내장객체들정리하기 - 컨테이너안에서는수많은객체들이스스로의존재목적에따라서일을한다. - ServletContext, ServletConfig 객체는컨텍스트초기화와서블릿초기화정보를가지고있다. - 이외에도다음의객체들이서블릿과 JSP와 EL에서각각의역할을수행한다. 서블릿의객체 JspWriter HttpServletRequest HttpServletResponse

More information

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

1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout <<  양수입력 : ; cin >> *p; if (*p <= 0) cout <<  양수를입력해야합니다  << endl; return; 동적할 15 장기타주제들 auto_ptr 변환함수 cast 연산자에의한명시적형변환실행시간타입정보알아내기 (RTTI) C++ 프로그래밍입문 1. auto_ptr 다음프로그램의문제점은무엇인가? void func(void) int *p = new int; cout > *p; if (*p

More information

12-file.key

12-file.key 11 (String).. java.lang.stringbuffer. s String s = "abcd"; s = s + "e"; a b c d e a b c d e ,., "910359,, " "910359" " " " " (token) (token),, (delimiter). java.util.stringtokenizer String s = "910359,,

More information

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a 6 장복사생성자 객체의생성과대입객체의값에의한전달복사생성자디폴트복사생성자복사생성자의재정의객체의값에의한반환임시객체 C++ 프로그래밍입문 1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y;

More information

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

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

More information

C++ Programming

C++ Programming C++ Programming 예외처리 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 예외처리 2 예외처리 예외처리 C++ 의예외처리 예외클래스와객체 3 예외처리 예외를처리하지않는프로그램 int main() int a, b; cout > a >> b; cout

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 3 장함수와문자열 1. 함수의기본적인개념을이해한다. 2. 인수와매개변수의개념을이해한다. 3. 함수의인수전달방법 2가지를이해한다 4. 중복함수를이해한다. 5. 디폴트매개변수를이해한다. 6. 문자열의구성을이해한다. 7. string 클래스의사용법을익힌다. 이번장에서만들어볼프로그램 함수란? 함수선언 함수호출 예제 #include using

More information

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - 07\300\345.ppt [\310\243\310\257 \270\360\265\345]) 클래스의응용 클래스를자유자재로사용하자. 이장에서다룰내용 1 객체의치환 2 함수와클래스의상관관계 01_ 객체의치환 객체도변수와마찬가지로치환이가능하다. 기본예제 [7-1] 객체도일반변수와마찬가지로대입이가능하다. 기본예제 [7-2] 객체의치환시에는조심해야할점이있다. 복사생성자의필요성에대하여알아보자. [ 기본예제 7-1] 클래스의치환 01 #include

More information

쉽게 풀어쓴 C 프로그래밍

쉽게 풀어쓴 C 프로그래밍 제 11 장상속 1. 상속의개념을이해한다. 2. 상속을이용하여자식클래스를작성할수있다. 3. 상속과접근지정자와의관계를이해한다. 4. 상속시생성자와소멸자가호출되는순서를이해한다. 이번장에서만들어볼프로그램 class Circle { int x, y; int radius;... class Rect { int x, y; int width, height;... 중복 상속의개요

More information

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345]) 예외와예외클래스 예외처리 514760-1 2016 년가을학기 12/08/2016 박경신 오류의종류 에러 (Error) 하드웨어의잘못된동작또는고장으로인한오류 에러가발생되면 JVM실행에문제가있으므로프로그램종료 정상실행상태로돌아갈수없음 예외 (Exception) 사용자의잘못된조작또는개발자의잘못된코딩으로인한오류 예외가발생되면프로그램종료 예외처리 추가하면정상실행상태로돌아갈수있음

More information

Microsoft PowerPoint - chap10-함수의활용.pptx

Microsoft PowerPoint - chap10-함수의활용.pptx #include int main(void) { int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; } 1 학습목표 중 값에 의한 전달 방법과

More information

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

뇌를 자극하는 JSP & Servlet 슬라이드 JSP 의기초 JSP & Servlet 2/92 Contents 학습목표 JSP 기술에서는웹애플리케이션을 JSP 페이지형태로구현한다. JSP 페이지를작성하는데필요한여러가지기초지식을학습. 내용 JSP 페이지란? JSP의기초문법 JSP 페이지의내장변수 파일입출력 다른 JSP 페이지호출하기 3/92 1. JSP 페이지란? JSP 기술에서웹애플리케이션을구현할때작성하는코드

More information

어댑터뷰

어댑터뷰 04 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adapter View) 커스텀어댑터뷰 (Custom Adatper View) 란? u 어댑터뷰의항목하나는단순한문자열이나이미지뿐만아니라, 임의의뷰가될수 있음 이미지뷰 u 커스텀어댑터뷰설정절차 1 2 항목을위한 XML 레이아웃정의 어댑터정의 3 어댑터를생성하고어댑터뷰객체에연결

More information

5장.key

5장.key JAVA Programming 1 (inheritance) 2!,!! 4 3 4!!!! 5 public class Person {... public class Student extends Person { // Person Student... public class StudentWorker extends Student { // Student StudentWorker...!

More information

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1); void method() 2); void method1() public class Test 3); args) A 제 10 장상속 예제 1) ConstructorTest.java class Parent public Parent() super - default"); public Parent(int i) this("hello"); super(int) constructor" + i); public Parent(char c) this(); super(char) constructor

More information

JAVA PROGRAMMING 실습 09. 예외처리

JAVA PROGRAMMING 실습 09. 예외처리 2015 학년도 2 학기 예외? 프로그램실행중에발생하는예기치않은사건 예외가발생하는경우 정수를 0으로나누는경우 배열의크기보다큰인덱스로배열의원소를접근하는경우 파일의마지막부분에서데이터를읽으려고하는경우 예외처리 프로그램에문제를발생시키지않고프로그램을실행할수있게적절한조치를취하는것 자바는예외처리기를이용하여예외처리를할수있는기법제공 자바는예외를객체로취급!! 나뉨수를입력하시오

More information

2장 변수와 프로시저 작성하기

2장  변수와 프로시저 작성하기 Chapter. JSP 의스크립트기반구현 스크립트기반구현의개요주석문 (Comment) 지시문 (Directive) 표현문, 수행문, 선언문 Chapter.11 : JSP 의스크립트기반구현 1. 스크립트기반구현의개요모든기능을 JSP 안에 Java 소스코드를포함하여구현하는방식으로서프리젠테이션, 컨트롤, 비즈니스로직등이모두 JSP 페이지안에구현된다. 즉, JSP

More information

chap 5: Trees

chap 5: Trees 5. Threaded Binary Tree 기본개념 n 개의노드를갖는이진트리에는 2n 개의링크가존재 2n 개의링크중에 n + 1 개의링크값은 null Null 링크를다른노드에대한포인터로대체 Threads Thread 의이용 ptr left_child = NULL 일경우, ptr left_child 를 ptr 의 inorder predecessor 를가리키도록변경

More information

Data Provisioning Services for mobile clients

Data Provisioning Services for mobile clients 3 장. 웹어플리케이션과 JSP 및 Servlet 의이해 제 3 장 1. 웹어플리케이션개념및폴더구조 웹어플리케이션의개념 독립어플리케이션 (Stand-alone Application) 웹어플리케이션 (Web Application) 웹브라우저상에서수행되는어플리케이션 웹어플리케이션이 Tomcat 에서구현될때의규칙 임의의웹어플리케이션은 webapps 폴더하위에하나의폴더로구성

More information

C++ Programming

C++ Programming C++ Programming 연산자다중정의 Seo, Doo-okok clickseo@gmail.com http://www.clickseo.com 목 차 연산자다중정의 C++ 스타일의문자열 2 연산자다중정의 연산자다중정의 단항연산자다중정의 이항연산자다중정의 cin, cout 그리고 endl C++ 스타일의문자열 3 연산자다중정의 연산자다중정의 (Operator

More information

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES HTML 연동가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax Co

SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES HTML 연동가이드 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone Fax Co SOFTBASE XFRAME DEVELOPMENT GUIDE SERIES 2012.02.18 서울특별시구로구구로 3 동한신 IT 타워 1215 호 Phone 02-2108-8030 Fax 02-2108-8031 www.softbase.co.kr Copyright 2010 SOFTBase Inc. All rights reserved 목차 1 장 : HTML 연동개요...

More information

Microsoft PowerPoint - GUI _DB연동.ppt [호환 모드]

Microsoft PowerPoint - GUI _DB연동.ppt [호환 모드] GUI 설계 6 주차 DB 연동김문정 tops@yd.ac.kr 강의순서강의전환경 JDK 설치및환경설정톰캣설치및환경설정이클립스 (JEE) 설치및환경설정 MySQL( 드라이버 ) 설치및커넥터드라이브연결 DB 생성 - 계정생성이클립스에서 DB에연결서버생성 - 프로젝트생성 DB연결테이블생성및등록 2 MySQL 설치확인 mysql - u root -p MySQL 에데이터베이스추가

More information

Microsoft PowerPoint - chap04-연산자.pptx

Microsoft PowerPoint - chap04-연산자.pptx int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); } 1 학습목표 수식의 개념과 연산자, 피연산자에 대해서 알아본다. C의 를 알아본다. 연산자의 우선 순위와 결합 방향에

More information

Spring Boot

Spring Boot 스프링부트 (Spring Boot) 1. 스프링부트 (Spring Boot)... 2 1-1. Spring Boot 소개... 2 1-2. Spring Boot & Maven... 2 1-3. Spring Boot & Gradle... 3 1-4. Writing the code(spring Boot main)... 4 1-5. Writing the code(commandlinerunner)...

More information

C# Programming Guide - Types

C# Programming Guide - Types C# Programming Guide - Types 최도경 lifeisforu@wemade.com 이문서는 MSDN 의 Types 를요약하고보충한것입니다. http://msdn.microsoft.com/enus/library/ms173104(v=vs.100).aspx Types, Variables, and Values C# 은 type 에민감한언어이다. 모든

More information