headfisrt servlet&jsp chapter 9

18
Servlets & JSP 9장

Upload: j-b

Post on 17-Jul-2015

45 views

Category:

Software


4 download

TRANSCRIPT

Page 1: HeadFisrt Servlet&JSP Chapter 9

Servlets amp JSP

9장

What is JSTLA 표준액션은 부족해요

세션이 없다 == 안면인식 장애

핵심은 클라이언트에 맞는 세션을 어떻게 찾아주는가

일종의 맵이라고 생각하면 됩니다

for 문

COUNTltc forEach var = ldquomovierdquo items = ldquo$movieListrdquo varStatus = ldquoLoopCountrdquogt

ltc forEach var = ldquomovierdquo items = ldquo$movieList(배열 컬렉션hellip)rdquogt

ltc forEachgt

movie 는 for문의 i와 같아요 movieList에 있는 각각의 요소를 하나씩 가져옵니다 이 안에서 outprintln(movie) 이렇게 하면 됩니다

이중 for문도 가능해요

if 문ltc if test = ldquo$userType eq lsquomemberrsquordquogt

ltc ifgt

test = $hellip는 if 문의 조건과 같아요 test = $hellip -gt (userType == ldquomemberrdquo)

이 안에서 true일때의 로직을 넣으면 됩니다

else if문choose -gt else if 문을 쓰겠음 when -gt if 두번째부터 else if otherwise-gt else

참 쉽죠

ltc choosegt ltc when test = ldquo$helliprdquogt ltc whengt ltc when test = ldquo$helliprdquogt ltc whengt ltc otherwisegt ltcotherwisegt ltcchoosegt

변수(속성) 만들기

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo value=ldquocowrdquogt

var -gt 변수명 scope -gt 어디에 변수를 만들지 value -gt 변수에 할당할 값

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo gt cow cowgirl cowboy ltcsetgt

변수(속성) 만들기

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo value=ldquocowrdquogt

빈이나 맵일 경우hellip target -gt 객체

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo gt cow cowgirl cowboy ltcsetgt

변수(속성) 지우기ltc remove var=ldquouserStatusrdquo scope=ldquorequestrdquogt

userStatus라는 속성은 지워집니다

includeinclude 하는 방법 추가 url을 가져오기에 외부 자원도 포함됨

ltc import url=ldquohttphelliphelliprdquogt

ltc import url=ldquohttpHeaderjsprdquogt ltc param name=ldquosubTitlerdquo value=ldquoddddddrdquogt ltcimportgt

표준액션과 마찬가지로 param을 매개변수 처럼 사용할 수 있습니다

URL 재작성responseencodeURL(ldquohelliprdquo)이것도 할 수 있어요

ltc url value=lsquoinputCommentsjsprsquogt

lsquovalue로 들어가는 경로 뒤에 세션아이디 붙여줘rsquo 라는 말입니다

URL 인코딩URL로 못들어가는 애들은 ltcparamgt을 거쳐야해요

ltc url value = ldquoinputCommentsjsprdquo var = ldquoinputURLgt ltc param name=ldquofirstNamerdquo value=ldquo$firstrdquogt ltcurlgt

오류페이지 만들기lt page isErrorPage=ldquotruerdquogt

lt page errorPage=ldquoerrorPagejsprdquogt

페이지 지시자로 이 페이지는 에러 페이지입니다 라고 말해줍니다

이 페이지의 에러페이지는 쟤에요 문제 있으면 쟤한테 가세요 만약에 이게 없으면 어떻게 될까요

디폴트 에러페이지 설정없으면 컨테이너가 DD를 찾아봐요

lterror-pagegt ltexception-typegt javalangThrowableltexception-typegt ltlocationgterrorPagejspltlocationgt lterror-pagegt

를 바꾸면 특정 오류페이지에 대해 처리할 수 있고 응답 상태코드에 따라 처리할 수도 있어욧 lterror-codegt404lterror-codegt exception 내장 객체를 사용할 수도 있어요

String getMessage() -gt 발생된 예외의 메시지를 리턴한다

String toString() -gt 발생된 예외 클래스명과 메시지를 리턴한다

String pritnStackTrace() -gt 발생된 예외를 역추적하기 위해 표준 예외 스트림을 출력한다 예외 발생시 예외가 발생한 곳을 알아낼 때 주로 사용

된다

try catch 대용trycatch랑 좀 달라요 catch하면 바로 catch블록의 끝으로 가요

ltc catchgt 오류 ltccatchgt 오류 있으면 실행

ltc catch var=ldquomyExceptionrdquogt 예외가 있을때 exception 객체를 쓰고 싶으면 이렇게 합니다

what is TLDA 커스텀 태그를 쓰기위해 필요한 일종의 DD라고 생각하면 됩니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt ltattributegt ltnamegtuserltnamegt ltattributegt lttaggt

lt taglib prefix=ldquomyrdquo uri = ldquorandomrdquogt ltmy advice user = ldquo$userNamerdquogt

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

태그를 사용하면 AdvisorTagHandler클래스에 있는 doTag()가 실행됩니다

false라면 속성은 문자열만 가능합니다 true라면 el표현식 스크립팅 표현식 표준액션이 가능합니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltbody-contentgtemptyltbody-contentgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

scriptless-gt스크립팅 불가능 tagdependent-gt텍스트로 JSP-gtjsp안이라면 무엇이든

TLD 파일은 있어야할 자리가 정해져 있어서 컨테이너가 알아서 매핑해줍니다

Page 2: HeadFisrt Servlet&JSP Chapter 9

What is JSTLA 표준액션은 부족해요

세션이 없다 == 안면인식 장애

핵심은 클라이언트에 맞는 세션을 어떻게 찾아주는가

일종의 맵이라고 생각하면 됩니다

for 문

COUNTltc forEach var = ldquomovierdquo items = ldquo$movieListrdquo varStatus = ldquoLoopCountrdquogt

ltc forEach var = ldquomovierdquo items = ldquo$movieList(배열 컬렉션hellip)rdquogt

ltc forEachgt

movie 는 for문의 i와 같아요 movieList에 있는 각각의 요소를 하나씩 가져옵니다 이 안에서 outprintln(movie) 이렇게 하면 됩니다

이중 for문도 가능해요

if 문ltc if test = ldquo$userType eq lsquomemberrsquordquogt

ltc ifgt

test = $hellip는 if 문의 조건과 같아요 test = $hellip -gt (userType == ldquomemberrdquo)

이 안에서 true일때의 로직을 넣으면 됩니다

else if문choose -gt else if 문을 쓰겠음 when -gt if 두번째부터 else if otherwise-gt else

참 쉽죠

ltc choosegt ltc when test = ldquo$helliprdquogt ltc whengt ltc when test = ldquo$helliprdquogt ltc whengt ltc otherwisegt ltcotherwisegt ltcchoosegt

변수(속성) 만들기

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo value=ldquocowrdquogt

var -gt 변수명 scope -gt 어디에 변수를 만들지 value -gt 변수에 할당할 값

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo gt cow cowgirl cowboy ltcsetgt

변수(속성) 만들기

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo value=ldquocowrdquogt

빈이나 맵일 경우hellip target -gt 객체

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo gt cow cowgirl cowboy ltcsetgt

변수(속성) 지우기ltc remove var=ldquouserStatusrdquo scope=ldquorequestrdquogt

userStatus라는 속성은 지워집니다

includeinclude 하는 방법 추가 url을 가져오기에 외부 자원도 포함됨

ltc import url=ldquohttphelliphelliprdquogt

ltc import url=ldquohttpHeaderjsprdquogt ltc param name=ldquosubTitlerdquo value=ldquoddddddrdquogt ltcimportgt

표준액션과 마찬가지로 param을 매개변수 처럼 사용할 수 있습니다

URL 재작성responseencodeURL(ldquohelliprdquo)이것도 할 수 있어요

ltc url value=lsquoinputCommentsjsprsquogt

lsquovalue로 들어가는 경로 뒤에 세션아이디 붙여줘rsquo 라는 말입니다

URL 인코딩URL로 못들어가는 애들은 ltcparamgt을 거쳐야해요

ltc url value = ldquoinputCommentsjsprdquo var = ldquoinputURLgt ltc param name=ldquofirstNamerdquo value=ldquo$firstrdquogt ltcurlgt

오류페이지 만들기lt page isErrorPage=ldquotruerdquogt

lt page errorPage=ldquoerrorPagejsprdquogt

페이지 지시자로 이 페이지는 에러 페이지입니다 라고 말해줍니다

이 페이지의 에러페이지는 쟤에요 문제 있으면 쟤한테 가세요 만약에 이게 없으면 어떻게 될까요

디폴트 에러페이지 설정없으면 컨테이너가 DD를 찾아봐요

lterror-pagegt ltexception-typegt javalangThrowableltexception-typegt ltlocationgterrorPagejspltlocationgt lterror-pagegt

를 바꾸면 특정 오류페이지에 대해 처리할 수 있고 응답 상태코드에 따라 처리할 수도 있어욧 lterror-codegt404lterror-codegt exception 내장 객체를 사용할 수도 있어요

String getMessage() -gt 발생된 예외의 메시지를 리턴한다

String toString() -gt 발생된 예외 클래스명과 메시지를 리턴한다

String pritnStackTrace() -gt 발생된 예외를 역추적하기 위해 표준 예외 스트림을 출력한다 예외 발생시 예외가 발생한 곳을 알아낼 때 주로 사용

된다

try catch 대용trycatch랑 좀 달라요 catch하면 바로 catch블록의 끝으로 가요

ltc catchgt 오류 ltccatchgt 오류 있으면 실행

ltc catch var=ldquomyExceptionrdquogt 예외가 있을때 exception 객체를 쓰고 싶으면 이렇게 합니다

what is TLDA 커스텀 태그를 쓰기위해 필요한 일종의 DD라고 생각하면 됩니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt ltattributegt ltnamegtuserltnamegt ltattributegt lttaggt

lt taglib prefix=ldquomyrdquo uri = ldquorandomrdquogt ltmy advice user = ldquo$userNamerdquogt

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

태그를 사용하면 AdvisorTagHandler클래스에 있는 doTag()가 실행됩니다

false라면 속성은 문자열만 가능합니다 true라면 el표현식 스크립팅 표현식 표준액션이 가능합니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltbody-contentgtemptyltbody-contentgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

scriptless-gt스크립팅 불가능 tagdependent-gt텍스트로 JSP-gtjsp안이라면 무엇이든

TLD 파일은 있어야할 자리가 정해져 있어서 컨테이너가 알아서 매핑해줍니다

Page 3: HeadFisrt Servlet&JSP Chapter 9

for 문

COUNTltc forEach var = ldquomovierdquo items = ldquo$movieListrdquo varStatus = ldquoLoopCountrdquogt

ltc forEach var = ldquomovierdquo items = ldquo$movieList(배열 컬렉션hellip)rdquogt

ltc forEachgt

movie 는 for문의 i와 같아요 movieList에 있는 각각의 요소를 하나씩 가져옵니다 이 안에서 outprintln(movie) 이렇게 하면 됩니다

이중 for문도 가능해요

if 문ltc if test = ldquo$userType eq lsquomemberrsquordquogt

ltc ifgt

test = $hellip는 if 문의 조건과 같아요 test = $hellip -gt (userType == ldquomemberrdquo)

이 안에서 true일때의 로직을 넣으면 됩니다

else if문choose -gt else if 문을 쓰겠음 when -gt if 두번째부터 else if otherwise-gt else

참 쉽죠

ltc choosegt ltc when test = ldquo$helliprdquogt ltc whengt ltc when test = ldquo$helliprdquogt ltc whengt ltc otherwisegt ltcotherwisegt ltcchoosegt

변수(속성) 만들기

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo value=ldquocowrdquogt

var -gt 변수명 scope -gt 어디에 변수를 만들지 value -gt 변수에 할당할 값

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo gt cow cowgirl cowboy ltcsetgt

변수(속성) 만들기

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo value=ldquocowrdquogt

빈이나 맵일 경우hellip target -gt 객체

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo gt cow cowgirl cowboy ltcsetgt

변수(속성) 지우기ltc remove var=ldquouserStatusrdquo scope=ldquorequestrdquogt

userStatus라는 속성은 지워집니다

includeinclude 하는 방법 추가 url을 가져오기에 외부 자원도 포함됨

ltc import url=ldquohttphelliphelliprdquogt

ltc import url=ldquohttpHeaderjsprdquogt ltc param name=ldquosubTitlerdquo value=ldquoddddddrdquogt ltcimportgt

표준액션과 마찬가지로 param을 매개변수 처럼 사용할 수 있습니다

URL 재작성responseencodeURL(ldquohelliprdquo)이것도 할 수 있어요

ltc url value=lsquoinputCommentsjsprsquogt

lsquovalue로 들어가는 경로 뒤에 세션아이디 붙여줘rsquo 라는 말입니다

URL 인코딩URL로 못들어가는 애들은 ltcparamgt을 거쳐야해요

ltc url value = ldquoinputCommentsjsprdquo var = ldquoinputURLgt ltc param name=ldquofirstNamerdquo value=ldquo$firstrdquogt ltcurlgt

오류페이지 만들기lt page isErrorPage=ldquotruerdquogt

lt page errorPage=ldquoerrorPagejsprdquogt

페이지 지시자로 이 페이지는 에러 페이지입니다 라고 말해줍니다

이 페이지의 에러페이지는 쟤에요 문제 있으면 쟤한테 가세요 만약에 이게 없으면 어떻게 될까요

디폴트 에러페이지 설정없으면 컨테이너가 DD를 찾아봐요

lterror-pagegt ltexception-typegt javalangThrowableltexception-typegt ltlocationgterrorPagejspltlocationgt lterror-pagegt

를 바꾸면 특정 오류페이지에 대해 처리할 수 있고 응답 상태코드에 따라 처리할 수도 있어욧 lterror-codegt404lterror-codegt exception 내장 객체를 사용할 수도 있어요

String getMessage() -gt 발생된 예외의 메시지를 리턴한다

String toString() -gt 발생된 예외 클래스명과 메시지를 리턴한다

String pritnStackTrace() -gt 발생된 예외를 역추적하기 위해 표준 예외 스트림을 출력한다 예외 발생시 예외가 발생한 곳을 알아낼 때 주로 사용

된다

try catch 대용trycatch랑 좀 달라요 catch하면 바로 catch블록의 끝으로 가요

ltc catchgt 오류 ltccatchgt 오류 있으면 실행

ltc catch var=ldquomyExceptionrdquogt 예외가 있을때 exception 객체를 쓰고 싶으면 이렇게 합니다

what is TLDA 커스텀 태그를 쓰기위해 필요한 일종의 DD라고 생각하면 됩니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt ltattributegt ltnamegtuserltnamegt ltattributegt lttaggt

lt taglib prefix=ldquomyrdquo uri = ldquorandomrdquogt ltmy advice user = ldquo$userNamerdquogt

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

태그를 사용하면 AdvisorTagHandler클래스에 있는 doTag()가 실행됩니다

false라면 속성은 문자열만 가능합니다 true라면 el표현식 스크립팅 표현식 표준액션이 가능합니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltbody-contentgtemptyltbody-contentgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

scriptless-gt스크립팅 불가능 tagdependent-gt텍스트로 JSP-gtjsp안이라면 무엇이든

TLD 파일은 있어야할 자리가 정해져 있어서 컨테이너가 알아서 매핑해줍니다

Page 4: HeadFisrt Servlet&JSP Chapter 9

if 문ltc if test = ldquo$userType eq lsquomemberrsquordquogt

ltc ifgt

test = $hellip는 if 문의 조건과 같아요 test = $hellip -gt (userType == ldquomemberrdquo)

이 안에서 true일때의 로직을 넣으면 됩니다

else if문choose -gt else if 문을 쓰겠음 when -gt if 두번째부터 else if otherwise-gt else

참 쉽죠

ltc choosegt ltc when test = ldquo$helliprdquogt ltc whengt ltc when test = ldquo$helliprdquogt ltc whengt ltc otherwisegt ltcotherwisegt ltcchoosegt

변수(속성) 만들기

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo value=ldquocowrdquogt

var -gt 변수명 scope -gt 어디에 변수를 만들지 value -gt 변수에 할당할 값

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo gt cow cowgirl cowboy ltcsetgt

변수(속성) 만들기

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo value=ldquocowrdquogt

빈이나 맵일 경우hellip target -gt 객체

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo gt cow cowgirl cowboy ltcsetgt

변수(속성) 지우기ltc remove var=ldquouserStatusrdquo scope=ldquorequestrdquogt

userStatus라는 속성은 지워집니다

includeinclude 하는 방법 추가 url을 가져오기에 외부 자원도 포함됨

ltc import url=ldquohttphelliphelliprdquogt

ltc import url=ldquohttpHeaderjsprdquogt ltc param name=ldquosubTitlerdquo value=ldquoddddddrdquogt ltcimportgt

표준액션과 마찬가지로 param을 매개변수 처럼 사용할 수 있습니다

URL 재작성responseencodeURL(ldquohelliprdquo)이것도 할 수 있어요

ltc url value=lsquoinputCommentsjsprsquogt

lsquovalue로 들어가는 경로 뒤에 세션아이디 붙여줘rsquo 라는 말입니다

URL 인코딩URL로 못들어가는 애들은 ltcparamgt을 거쳐야해요

ltc url value = ldquoinputCommentsjsprdquo var = ldquoinputURLgt ltc param name=ldquofirstNamerdquo value=ldquo$firstrdquogt ltcurlgt

오류페이지 만들기lt page isErrorPage=ldquotruerdquogt

lt page errorPage=ldquoerrorPagejsprdquogt

페이지 지시자로 이 페이지는 에러 페이지입니다 라고 말해줍니다

이 페이지의 에러페이지는 쟤에요 문제 있으면 쟤한테 가세요 만약에 이게 없으면 어떻게 될까요

디폴트 에러페이지 설정없으면 컨테이너가 DD를 찾아봐요

lterror-pagegt ltexception-typegt javalangThrowableltexception-typegt ltlocationgterrorPagejspltlocationgt lterror-pagegt

를 바꾸면 특정 오류페이지에 대해 처리할 수 있고 응답 상태코드에 따라 처리할 수도 있어욧 lterror-codegt404lterror-codegt exception 내장 객체를 사용할 수도 있어요

String getMessage() -gt 발생된 예외의 메시지를 리턴한다

String toString() -gt 발생된 예외 클래스명과 메시지를 리턴한다

String pritnStackTrace() -gt 발생된 예외를 역추적하기 위해 표준 예외 스트림을 출력한다 예외 발생시 예외가 발생한 곳을 알아낼 때 주로 사용

된다

try catch 대용trycatch랑 좀 달라요 catch하면 바로 catch블록의 끝으로 가요

ltc catchgt 오류 ltccatchgt 오류 있으면 실행

ltc catch var=ldquomyExceptionrdquogt 예외가 있을때 exception 객체를 쓰고 싶으면 이렇게 합니다

what is TLDA 커스텀 태그를 쓰기위해 필요한 일종의 DD라고 생각하면 됩니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt ltattributegt ltnamegtuserltnamegt ltattributegt lttaggt

lt taglib prefix=ldquomyrdquo uri = ldquorandomrdquogt ltmy advice user = ldquo$userNamerdquogt

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

태그를 사용하면 AdvisorTagHandler클래스에 있는 doTag()가 실행됩니다

false라면 속성은 문자열만 가능합니다 true라면 el표현식 스크립팅 표현식 표준액션이 가능합니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltbody-contentgtemptyltbody-contentgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

scriptless-gt스크립팅 불가능 tagdependent-gt텍스트로 JSP-gtjsp안이라면 무엇이든

TLD 파일은 있어야할 자리가 정해져 있어서 컨테이너가 알아서 매핑해줍니다

Page 5: HeadFisrt Servlet&JSP Chapter 9

else if문choose -gt else if 문을 쓰겠음 when -gt if 두번째부터 else if otherwise-gt else

참 쉽죠

ltc choosegt ltc when test = ldquo$helliprdquogt ltc whengt ltc when test = ldquo$helliprdquogt ltc whengt ltc otherwisegt ltcotherwisegt ltcchoosegt

변수(속성) 만들기

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo value=ldquocowrdquogt

var -gt 변수명 scope -gt 어디에 변수를 만들지 value -gt 변수에 할당할 값

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo gt cow cowgirl cowboy ltcsetgt

변수(속성) 만들기

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo value=ldquocowrdquogt

빈이나 맵일 경우hellip target -gt 객체

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo gt cow cowgirl cowboy ltcsetgt

변수(속성) 지우기ltc remove var=ldquouserStatusrdquo scope=ldquorequestrdquogt

userStatus라는 속성은 지워집니다

includeinclude 하는 방법 추가 url을 가져오기에 외부 자원도 포함됨

ltc import url=ldquohttphelliphelliprdquogt

ltc import url=ldquohttpHeaderjsprdquogt ltc param name=ldquosubTitlerdquo value=ldquoddddddrdquogt ltcimportgt

표준액션과 마찬가지로 param을 매개변수 처럼 사용할 수 있습니다

URL 재작성responseencodeURL(ldquohelliprdquo)이것도 할 수 있어요

ltc url value=lsquoinputCommentsjsprsquogt

lsquovalue로 들어가는 경로 뒤에 세션아이디 붙여줘rsquo 라는 말입니다

URL 인코딩URL로 못들어가는 애들은 ltcparamgt을 거쳐야해요

ltc url value = ldquoinputCommentsjsprdquo var = ldquoinputURLgt ltc param name=ldquofirstNamerdquo value=ldquo$firstrdquogt ltcurlgt

오류페이지 만들기lt page isErrorPage=ldquotruerdquogt

lt page errorPage=ldquoerrorPagejsprdquogt

페이지 지시자로 이 페이지는 에러 페이지입니다 라고 말해줍니다

이 페이지의 에러페이지는 쟤에요 문제 있으면 쟤한테 가세요 만약에 이게 없으면 어떻게 될까요

디폴트 에러페이지 설정없으면 컨테이너가 DD를 찾아봐요

lterror-pagegt ltexception-typegt javalangThrowableltexception-typegt ltlocationgterrorPagejspltlocationgt lterror-pagegt

를 바꾸면 특정 오류페이지에 대해 처리할 수 있고 응답 상태코드에 따라 처리할 수도 있어욧 lterror-codegt404lterror-codegt exception 내장 객체를 사용할 수도 있어요

String getMessage() -gt 발생된 예외의 메시지를 리턴한다

String toString() -gt 발생된 예외 클래스명과 메시지를 리턴한다

String pritnStackTrace() -gt 발생된 예외를 역추적하기 위해 표준 예외 스트림을 출력한다 예외 발생시 예외가 발생한 곳을 알아낼 때 주로 사용

된다

try catch 대용trycatch랑 좀 달라요 catch하면 바로 catch블록의 끝으로 가요

ltc catchgt 오류 ltccatchgt 오류 있으면 실행

ltc catch var=ldquomyExceptionrdquogt 예외가 있을때 exception 객체를 쓰고 싶으면 이렇게 합니다

what is TLDA 커스텀 태그를 쓰기위해 필요한 일종의 DD라고 생각하면 됩니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt ltattributegt ltnamegtuserltnamegt ltattributegt lttaggt

lt taglib prefix=ldquomyrdquo uri = ldquorandomrdquogt ltmy advice user = ldquo$userNamerdquogt

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

태그를 사용하면 AdvisorTagHandler클래스에 있는 doTag()가 실행됩니다

false라면 속성은 문자열만 가능합니다 true라면 el표현식 스크립팅 표현식 표준액션이 가능합니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltbody-contentgtemptyltbody-contentgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

scriptless-gt스크립팅 불가능 tagdependent-gt텍스트로 JSP-gtjsp안이라면 무엇이든

TLD 파일은 있어야할 자리가 정해져 있어서 컨테이너가 알아서 매핑해줍니다

Page 6: HeadFisrt Servlet&JSP Chapter 9

변수(속성) 만들기

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo value=ldquocowrdquogt

var -gt 변수명 scope -gt 어디에 변수를 만들지 value -gt 변수에 할당할 값

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo gt cow cowgirl cowboy ltcsetgt

변수(속성) 만들기

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo value=ldquocowrdquogt

빈이나 맵일 경우hellip target -gt 객체

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo gt cow cowgirl cowboy ltcsetgt

변수(속성) 지우기ltc remove var=ldquouserStatusrdquo scope=ldquorequestrdquogt

userStatus라는 속성은 지워집니다

includeinclude 하는 방법 추가 url을 가져오기에 외부 자원도 포함됨

ltc import url=ldquohttphelliphelliprdquogt

ltc import url=ldquohttpHeaderjsprdquogt ltc param name=ldquosubTitlerdquo value=ldquoddddddrdquogt ltcimportgt

표준액션과 마찬가지로 param을 매개변수 처럼 사용할 수 있습니다

URL 재작성responseencodeURL(ldquohelliprdquo)이것도 할 수 있어요

ltc url value=lsquoinputCommentsjsprsquogt

lsquovalue로 들어가는 경로 뒤에 세션아이디 붙여줘rsquo 라는 말입니다

URL 인코딩URL로 못들어가는 애들은 ltcparamgt을 거쳐야해요

ltc url value = ldquoinputCommentsjsprdquo var = ldquoinputURLgt ltc param name=ldquofirstNamerdquo value=ldquo$firstrdquogt ltcurlgt

오류페이지 만들기lt page isErrorPage=ldquotruerdquogt

lt page errorPage=ldquoerrorPagejsprdquogt

페이지 지시자로 이 페이지는 에러 페이지입니다 라고 말해줍니다

이 페이지의 에러페이지는 쟤에요 문제 있으면 쟤한테 가세요 만약에 이게 없으면 어떻게 될까요

디폴트 에러페이지 설정없으면 컨테이너가 DD를 찾아봐요

lterror-pagegt ltexception-typegt javalangThrowableltexception-typegt ltlocationgterrorPagejspltlocationgt lterror-pagegt

를 바꾸면 특정 오류페이지에 대해 처리할 수 있고 응답 상태코드에 따라 처리할 수도 있어욧 lterror-codegt404lterror-codegt exception 내장 객체를 사용할 수도 있어요

String getMessage() -gt 발생된 예외의 메시지를 리턴한다

String toString() -gt 발생된 예외 클래스명과 메시지를 리턴한다

String pritnStackTrace() -gt 발생된 예외를 역추적하기 위해 표준 예외 스트림을 출력한다 예외 발생시 예외가 발생한 곳을 알아낼 때 주로 사용

된다

try catch 대용trycatch랑 좀 달라요 catch하면 바로 catch블록의 끝으로 가요

ltc catchgt 오류 ltccatchgt 오류 있으면 실행

ltc catch var=ldquomyExceptionrdquogt 예외가 있을때 exception 객체를 쓰고 싶으면 이렇게 합니다

what is TLDA 커스텀 태그를 쓰기위해 필요한 일종의 DD라고 생각하면 됩니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt ltattributegt ltnamegtuserltnamegt ltattributegt lttaggt

lt taglib prefix=ldquomyrdquo uri = ldquorandomrdquogt ltmy advice user = ldquo$userNamerdquogt

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

태그를 사용하면 AdvisorTagHandler클래스에 있는 doTag()가 실행됩니다

false라면 속성은 문자열만 가능합니다 true라면 el표현식 스크립팅 표현식 표준액션이 가능합니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltbody-contentgtemptyltbody-contentgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

scriptless-gt스크립팅 불가능 tagdependent-gt텍스트로 JSP-gtjsp안이라면 무엇이든

TLD 파일은 있어야할 자리가 정해져 있어서 컨테이너가 알아서 매핑해줍니다

Page 7: HeadFisrt Servlet&JSP Chapter 9

변수(속성) 만들기

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo value=ldquocowrdquogt

빈이나 맵일 경우hellip target -gt 객체

ltc set var = ldquouserLevelrdquo scope=ldquosessionrdquo gt cow cowgirl cowboy ltcsetgt

변수(속성) 지우기ltc remove var=ldquouserStatusrdquo scope=ldquorequestrdquogt

userStatus라는 속성은 지워집니다

includeinclude 하는 방법 추가 url을 가져오기에 외부 자원도 포함됨

ltc import url=ldquohttphelliphelliprdquogt

ltc import url=ldquohttpHeaderjsprdquogt ltc param name=ldquosubTitlerdquo value=ldquoddddddrdquogt ltcimportgt

표준액션과 마찬가지로 param을 매개변수 처럼 사용할 수 있습니다

URL 재작성responseencodeURL(ldquohelliprdquo)이것도 할 수 있어요

ltc url value=lsquoinputCommentsjsprsquogt

lsquovalue로 들어가는 경로 뒤에 세션아이디 붙여줘rsquo 라는 말입니다

URL 인코딩URL로 못들어가는 애들은 ltcparamgt을 거쳐야해요

ltc url value = ldquoinputCommentsjsprdquo var = ldquoinputURLgt ltc param name=ldquofirstNamerdquo value=ldquo$firstrdquogt ltcurlgt

오류페이지 만들기lt page isErrorPage=ldquotruerdquogt

lt page errorPage=ldquoerrorPagejsprdquogt

페이지 지시자로 이 페이지는 에러 페이지입니다 라고 말해줍니다

이 페이지의 에러페이지는 쟤에요 문제 있으면 쟤한테 가세요 만약에 이게 없으면 어떻게 될까요

디폴트 에러페이지 설정없으면 컨테이너가 DD를 찾아봐요

lterror-pagegt ltexception-typegt javalangThrowableltexception-typegt ltlocationgterrorPagejspltlocationgt lterror-pagegt

를 바꾸면 특정 오류페이지에 대해 처리할 수 있고 응답 상태코드에 따라 처리할 수도 있어욧 lterror-codegt404lterror-codegt exception 내장 객체를 사용할 수도 있어요

String getMessage() -gt 발생된 예외의 메시지를 리턴한다

String toString() -gt 발생된 예외 클래스명과 메시지를 리턴한다

String pritnStackTrace() -gt 발생된 예외를 역추적하기 위해 표준 예외 스트림을 출력한다 예외 발생시 예외가 발생한 곳을 알아낼 때 주로 사용

된다

try catch 대용trycatch랑 좀 달라요 catch하면 바로 catch블록의 끝으로 가요

ltc catchgt 오류 ltccatchgt 오류 있으면 실행

ltc catch var=ldquomyExceptionrdquogt 예외가 있을때 exception 객체를 쓰고 싶으면 이렇게 합니다

what is TLDA 커스텀 태그를 쓰기위해 필요한 일종의 DD라고 생각하면 됩니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt ltattributegt ltnamegtuserltnamegt ltattributegt lttaggt

lt taglib prefix=ldquomyrdquo uri = ldquorandomrdquogt ltmy advice user = ldquo$userNamerdquogt

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

태그를 사용하면 AdvisorTagHandler클래스에 있는 doTag()가 실행됩니다

false라면 속성은 문자열만 가능합니다 true라면 el표현식 스크립팅 표현식 표준액션이 가능합니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltbody-contentgtemptyltbody-contentgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

scriptless-gt스크립팅 불가능 tagdependent-gt텍스트로 JSP-gtjsp안이라면 무엇이든

TLD 파일은 있어야할 자리가 정해져 있어서 컨테이너가 알아서 매핑해줍니다

Page 8: HeadFisrt Servlet&JSP Chapter 9

변수(속성) 지우기ltc remove var=ldquouserStatusrdquo scope=ldquorequestrdquogt

userStatus라는 속성은 지워집니다

includeinclude 하는 방법 추가 url을 가져오기에 외부 자원도 포함됨

ltc import url=ldquohttphelliphelliprdquogt

ltc import url=ldquohttpHeaderjsprdquogt ltc param name=ldquosubTitlerdquo value=ldquoddddddrdquogt ltcimportgt

표준액션과 마찬가지로 param을 매개변수 처럼 사용할 수 있습니다

URL 재작성responseencodeURL(ldquohelliprdquo)이것도 할 수 있어요

ltc url value=lsquoinputCommentsjsprsquogt

lsquovalue로 들어가는 경로 뒤에 세션아이디 붙여줘rsquo 라는 말입니다

URL 인코딩URL로 못들어가는 애들은 ltcparamgt을 거쳐야해요

ltc url value = ldquoinputCommentsjsprdquo var = ldquoinputURLgt ltc param name=ldquofirstNamerdquo value=ldquo$firstrdquogt ltcurlgt

오류페이지 만들기lt page isErrorPage=ldquotruerdquogt

lt page errorPage=ldquoerrorPagejsprdquogt

페이지 지시자로 이 페이지는 에러 페이지입니다 라고 말해줍니다

이 페이지의 에러페이지는 쟤에요 문제 있으면 쟤한테 가세요 만약에 이게 없으면 어떻게 될까요

디폴트 에러페이지 설정없으면 컨테이너가 DD를 찾아봐요

lterror-pagegt ltexception-typegt javalangThrowableltexception-typegt ltlocationgterrorPagejspltlocationgt lterror-pagegt

를 바꾸면 특정 오류페이지에 대해 처리할 수 있고 응답 상태코드에 따라 처리할 수도 있어욧 lterror-codegt404lterror-codegt exception 내장 객체를 사용할 수도 있어요

String getMessage() -gt 발생된 예외의 메시지를 리턴한다

String toString() -gt 발생된 예외 클래스명과 메시지를 리턴한다

String pritnStackTrace() -gt 발생된 예외를 역추적하기 위해 표준 예외 스트림을 출력한다 예외 발생시 예외가 발생한 곳을 알아낼 때 주로 사용

된다

try catch 대용trycatch랑 좀 달라요 catch하면 바로 catch블록의 끝으로 가요

ltc catchgt 오류 ltccatchgt 오류 있으면 실행

ltc catch var=ldquomyExceptionrdquogt 예외가 있을때 exception 객체를 쓰고 싶으면 이렇게 합니다

what is TLDA 커스텀 태그를 쓰기위해 필요한 일종의 DD라고 생각하면 됩니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt ltattributegt ltnamegtuserltnamegt ltattributegt lttaggt

lt taglib prefix=ldquomyrdquo uri = ldquorandomrdquogt ltmy advice user = ldquo$userNamerdquogt

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

태그를 사용하면 AdvisorTagHandler클래스에 있는 doTag()가 실행됩니다

false라면 속성은 문자열만 가능합니다 true라면 el표현식 스크립팅 표현식 표준액션이 가능합니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltbody-contentgtemptyltbody-contentgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

scriptless-gt스크립팅 불가능 tagdependent-gt텍스트로 JSP-gtjsp안이라면 무엇이든

TLD 파일은 있어야할 자리가 정해져 있어서 컨테이너가 알아서 매핑해줍니다

Page 9: HeadFisrt Servlet&JSP Chapter 9

includeinclude 하는 방법 추가 url을 가져오기에 외부 자원도 포함됨

ltc import url=ldquohttphelliphelliprdquogt

ltc import url=ldquohttpHeaderjsprdquogt ltc param name=ldquosubTitlerdquo value=ldquoddddddrdquogt ltcimportgt

표준액션과 마찬가지로 param을 매개변수 처럼 사용할 수 있습니다

URL 재작성responseencodeURL(ldquohelliprdquo)이것도 할 수 있어요

ltc url value=lsquoinputCommentsjsprsquogt

lsquovalue로 들어가는 경로 뒤에 세션아이디 붙여줘rsquo 라는 말입니다

URL 인코딩URL로 못들어가는 애들은 ltcparamgt을 거쳐야해요

ltc url value = ldquoinputCommentsjsprdquo var = ldquoinputURLgt ltc param name=ldquofirstNamerdquo value=ldquo$firstrdquogt ltcurlgt

오류페이지 만들기lt page isErrorPage=ldquotruerdquogt

lt page errorPage=ldquoerrorPagejsprdquogt

페이지 지시자로 이 페이지는 에러 페이지입니다 라고 말해줍니다

이 페이지의 에러페이지는 쟤에요 문제 있으면 쟤한테 가세요 만약에 이게 없으면 어떻게 될까요

디폴트 에러페이지 설정없으면 컨테이너가 DD를 찾아봐요

lterror-pagegt ltexception-typegt javalangThrowableltexception-typegt ltlocationgterrorPagejspltlocationgt lterror-pagegt

를 바꾸면 특정 오류페이지에 대해 처리할 수 있고 응답 상태코드에 따라 처리할 수도 있어욧 lterror-codegt404lterror-codegt exception 내장 객체를 사용할 수도 있어요

String getMessage() -gt 발생된 예외의 메시지를 리턴한다

String toString() -gt 발생된 예외 클래스명과 메시지를 리턴한다

String pritnStackTrace() -gt 발생된 예외를 역추적하기 위해 표준 예외 스트림을 출력한다 예외 발생시 예외가 발생한 곳을 알아낼 때 주로 사용

된다

try catch 대용trycatch랑 좀 달라요 catch하면 바로 catch블록의 끝으로 가요

ltc catchgt 오류 ltccatchgt 오류 있으면 실행

ltc catch var=ldquomyExceptionrdquogt 예외가 있을때 exception 객체를 쓰고 싶으면 이렇게 합니다

what is TLDA 커스텀 태그를 쓰기위해 필요한 일종의 DD라고 생각하면 됩니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt ltattributegt ltnamegtuserltnamegt ltattributegt lttaggt

lt taglib prefix=ldquomyrdquo uri = ldquorandomrdquogt ltmy advice user = ldquo$userNamerdquogt

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

태그를 사용하면 AdvisorTagHandler클래스에 있는 doTag()가 실행됩니다

false라면 속성은 문자열만 가능합니다 true라면 el표현식 스크립팅 표현식 표준액션이 가능합니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltbody-contentgtemptyltbody-contentgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

scriptless-gt스크립팅 불가능 tagdependent-gt텍스트로 JSP-gtjsp안이라면 무엇이든

TLD 파일은 있어야할 자리가 정해져 있어서 컨테이너가 알아서 매핑해줍니다

Page 10: HeadFisrt Servlet&JSP Chapter 9

URL 재작성responseencodeURL(ldquohelliprdquo)이것도 할 수 있어요

ltc url value=lsquoinputCommentsjsprsquogt

lsquovalue로 들어가는 경로 뒤에 세션아이디 붙여줘rsquo 라는 말입니다

URL 인코딩URL로 못들어가는 애들은 ltcparamgt을 거쳐야해요

ltc url value = ldquoinputCommentsjsprdquo var = ldquoinputURLgt ltc param name=ldquofirstNamerdquo value=ldquo$firstrdquogt ltcurlgt

오류페이지 만들기lt page isErrorPage=ldquotruerdquogt

lt page errorPage=ldquoerrorPagejsprdquogt

페이지 지시자로 이 페이지는 에러 페이지입니다 라고 말해줍니다

이 페이지의 에러페이지는 쟤에요 문제 있으면 쟤한테 가세요 만약에 이게 없으면 어떻게 될까요

디폴트 에러페이지 설정없으면 컨테이너가 DD를 찾아봐요

lterror-pagegt ltexception-typegt javalangThrowableltexception-typegt ltlocationgterrorPagejspltlocationgt lterror-pagegt

를 바꾸면 특정 오류페이지에 대해 처리할 수 있고 응답 상태코드에 따라 처리할 수도 있어욧 lterror-codegt404lterror-codegt exception 내장 객체를 사용할 수도 있어요

String getMessage() -gt 발생된 예외의 메시지를 리턴한다

String toString() -gt 발생된 예외 클래스명과 메시지를 리턴한다

String pritnStackTrace() -gt 발생된 예외를 역추적하기 위해 표준 예외 스트림을 출력한다 예외 발생시 예외가 발생한 곳을 알아낼 때 주로 사용

된다

try catch 대용trycatch랑 좀 달라요 catch하면 바로 catch블록의 끝으로 가요

ltc catchgt 오류 ltccatchgt 오류 있으면 실행

ltc catch var=ldquomyExceptionrdquogt 예외가 있을때 exception 객체를 쓰고 싶으면 이렇게 합니다

what is TLDA 커스텀 태그를 쓰기위해 필요한 일종의 DD라고 생각하면 됩니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt ltattributegt ltnamegtuserltnamegt ltattributegt lttaggt

lt taglib prefix=ldquomyrdquo uri = ldquorandomrdquogt ltmy advice user = ldquo$userNamerdquogt

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

태그를 사용하면 AdvisorTagHandler클래스에 있는 doTag()가 실행됩니다

false라면 속성은 문자열만 가능합니다 true라면 el표현식 스크립팅 표현식 표준액션이 가능합니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltbody-contentgtemptyltbody-contentgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

scriptless-gt스크립팅 불가능 tagdependent-gt텍스트로 JSP-gtjsp안이라면 무엇이든

TLD 파일은 있어야할 자리가 정해져 있어서 컨테이너가 알아서 매핑해줍니다

Page 11: HeadFisrt Servlet&JSP Chapter 9

URL 인코딩URL로 못들어가는 애들은 ltcparamgt을 거쳐야해요

ltc url value = ldquoinputCommentsjsprdquo var = ldquoinputURLgt ltc param name=ldquofirstNamerdquo value=ldquo$firstrdquogt ltcurlgt

오류페이지 만들기lt page isErrorPage=ldquotruerdquogt

lt page errorPage=ldquoerrorPagejsprdquogt

페이지 지시자로 이 페이지는 에러 페이지입니다 라고 말해줍니다

이 페이지의 에러페이지는 쟤에요 문제 있으면 쟤한테 가세요 만약에 이게 없으면 어떻게 될까요

디폴트 에러페이지 설정없으면 컨테이너가 DD를 찾아봐요

lterror-pagegt ltexception-typegt javalangThrowableltexception-typegt ltlocationgterrorPagejspltlocationgt lterror-pagegt

를 바꾸면 특정 오류페이지에 대해 처리할 수 있고 응답 상태코드에 따라 처리할 수도 있어욧 lterror-codegt404lterror-codegt exception 내장 객체를 사용할 수도 있어요

String getMessage() -gt 발생된 예외의 메시지를 리턴한다

String toString() -gt 발생된 예외 클래스명과 메시지를 리턴한다

String pritnStackTrace() -gt 발생된 예외를 역추적하기 위해 표준 예외 스트림을 출력한다 예외 발생시 예외가 발생한 곳을 알아낼 때 주로 사용

된다

try catch 대용trycatch랑 좀 달라요 catch하면 바로 catch블록의 끝으로 가요

ltc catchgt 오류 ltccatchgt 오류 있으면 실행

ltc catch var=ldquomyExceptionrdquogt 예외가 있을때 exception 객체를 쓰고 싶으면 이렇게 합니다

what is TLDA 커스텀 태그를 쓰기위해 필요한 일종의 DD라고 생각하면 됩니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt ltattributegt ltnamegtuserltnamegt ltattributegt lttaggt

lt taglib prefix=ldquomyrdquo uri = ldquorandomrdquogt ltmy advice user = ldquo$userNamerdquogt

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

태그를 사용하면 AdvisorTagHandler클래스에 있는 doTag()가 실행됩니다

false라면 속성은 문자열만 가능합니다 true라면 el표현식 스크립팅 표현식 표준액션이 가능합니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltbody-contentgtemptyltbody-contentgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

scriptless-gt스크립팅 불가능 tagdependent-gt텍스트로 JSP-gtjsp안이라면 무엇이든

TLD 파일은 있어야할 자리가 정해져 있어서 컨테이너가 알아서 매핑해줍니다

Page 12: HeadFisrt Servlet&JSP Chapter 9

오류페이지 만들기lt page isErrorPage=ldquotruerdquogt

lt page errorPage=ldquoerrorPagejsprdquogt

페이지 지시자로 이 페이지는 에러 페이지입니다 라고 말해줍니다

이 페이지의 에러페이지는 쟤에요 문제 있으면 쟤한테 가세요 만약에 이게 없으면 어떻게 될까요

디폴트 에러페이지 설정없으면 컨테이너가 DD를 찾아봐요

lterror-pagegt ltexception-typegt javalangThrowableltexception-typegt ltlocationgterrorPagejspltlocationgt lterror-pagegt

를 바꾸면 특정 오류페이지에 대해 처리할 수 있고 응답 상태코드에 따라 처리할 수도 있어욧 lterror-codegt404lterror-codegt exception 내장 객체를 사용할 수도 있어요

String getMessage() -gt 발생된 예외의 메시지를 리턴한다

String toString() -gt 발생된 예외 클래스명과 메시지를 리턴한다

String pritnStackTrace() -gt 발생된 예외를 역추적하기 위해 표준 예외 스트림을 출력한다 예외 발생시 예외가 발생한 곳을 알아낼 때 주로 사용

된다

try catch 대용trycatch랑 좀 달라요 catch하면 바로 catch블록의 끝으로 가요

ltc catchgt 오류 ltccatchgt 오류 있으면 실행

ltc catch var=ldquomyExceptionrdquogt 예외가 있을때 exception 객체를 쓰고 싶으면 이렇게 합니다

what is TLDA 커스텀 태그를 쓰기위해 필요한 일종의 DD라고 생각하면 됩니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt ltattributegt ltnamegtuserltnamegt ltattributegt lttaggt

lt taglib prefix=ldquomyrdquo uri = ldquorandomrdquogt ltmy advice user = ldquo$userNamerdquogt

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

태그를 사용하면 AdvisorTagHandler클래스에 있는 doTag()가 실행됩니다

false라면 속성은 문자열만 가능합니다 true라면 el표현식 스크립팅 표현식 표준액션이 가능합니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltbody-contentgtemptyltbody-contentgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

scriptless-gt스크립팅 불가능 tagdependent-gt텍스트로 JSP-gtjsp안이라면 무엇이든

TLD 파일은 있어야할 자리가 정해져 있어서 컨테이너가 알아서 매핑해줍니다

Page 13: HeadFisrt Servlet&JSP Chapter 9

디폴트 에러페이지 설정없으면 컨테이너가 DD를 찾아봐요

lterror-pagegt ltexception-typegt javalangThrowableltexception-typegt ltlocationgterrorPagejspltlocationgt lterror-pagegt

를 바꾸면 특정 오류페이지에 대해 처리할 수 있고 응답 상태코드에 따라 처리할 수도 있어욧 lterror-codegt404lterror-codegt exception 내장 객체를 사용할 수도 있어요

String getMessage() -gt 발생된 예외의 메시지를 리턴한다

String toString() -gt 발생된 예외 클래스명과 메시지를 리턴한다

String pritnStackTrace() -gt 발생된 예외를 역추적하기 위해 표준 예외 스트림을 출력한다 예외 발생시 예외가 발생한 곳을 알아낼 때 주로 사용

된다

try catch 대용trycatch랑 좀 달라요 catch하면 바로 catch블록의 끝으로 가요

ltc catchgt 오류 ltccatchgt 오류 있으면 실행

ltc catch var=ldquomyExceptionrdquogt 예외가 있을때 exception 객체를 쓰고 싶으면 이렇게 합니다

what is TLDA 커스텀 태그를 쓰기위해 필요한 일종의 DD라고 생각하면 됩니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt ltattributegt ltnamegtuserltnamegt ltattributegt lttaggt

lt taglib prefix=ldquomyrdquo uri = ldquorandomrdquogt ltmy advice user = ldquo$userNamerdquogt

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

태그를 사용하면 AdvisorTagHandler클래스에 있는 doTag()가 실행됩니다

false라면 속성은 문자열만 가능합니다 true라면 el표현식 스크립팅 표현식 표준액션이 가능합니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltbody-contentgtemptyltbody-contentgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

scriptless-gt스크립팅 불가능 tagdependent-gt텍스트로 JSP-gtjsp안이라면 무엇이든

TLD 파일은 있어야할 자리가 정해져 있어서 컨테이너가 알아서 매핑해줍니다

Page 14: HeadFisrt Servlet&JSP Chapter 9

String getMessage() -gt 발생된 예외의 메시지를 리턴한다

String toString() -gt 발생된 예외 클래스명과 메시지를 리턴한다

String pritnStackTrace() -gt 발생된 예외를 역추적하기 위해 표준 예외 스트림을 출력한다 예외 발생시 예외가 발생한 곳을 알아낼 때 주로 사용

된다

try catch 대용trycatch랑 좀 달라요 catch하면 바로 catch블록의 끝으로 가요

ltc catchgt 오류 ltccatchgt 오류 있으면 실행

ltc catch var=ldquomyExceptionrdquogt 예외가 있을때 exception 객체를 쓰고 싶으면 이렇게 합니다

what is TLDA 커스텀 태그를 쓰기위해 필요한 일종의 DD라고 생각하면 됩니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt ltattributegt ltnamegtuserltnamegt ltattributegt lttaggt

lt taglib prefix=ldquomyrdquo uri = ldquorandomrdquogt ltmy advice user = ldquo$userNamerdquogt

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

태그를 사용하면 AdvisorTagHandler클래스에 있는 doTag()가 실행됩니다

false라면 속성은 문자열만 가능합니다 true라면 el표현식 스크립팅 표현식 표준액션이 가능합니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltbody-contentgtemptyltbody-contentgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

scriptless-gt스크립팅 불가능 tagdependent-gt텍스트로 JSP-gtjsp안이라면 무엇이든

TLD 파일은 있어야할 자리가 정해져 있어서 컨테이너가 알아서 매핑해줍니다

Page 15: HeadFisrt Servlet&JSP Chapter 9

try catch 대용trycatch랑 좀 달라요 catch하면 바로 catch블록의 끝으로 가요

ltc catchgt 오류 ltccatchgt 오류 있으면 실행

ltc catch var=ldquomyExceptionrdquogt 예외가 있을때 exception 객체를 쓰고 싶으면 이렇게 합니다

what is TLDA 커스텀 태그를 쓰기위해 필요한 일종의 DD라고 생각하면 됩니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt ltattributegt ltnamegtuserltnamegt ltattributegt lttaggt

lt taglib prefix=ldquomyrdquo uri = ldquorandomrdquogt ltmy advice user = ldquo$userNamerdquogt

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

태그를 사용하면 AdvisorTagHandler클래스에 있는 doTag()가 실행됩니다

false라면 속성은 문자열만 가능합니다 true라면 el표현식 스크립팅 표현식 표준액션이 가능합니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltbody-contentgtemptyltbody-contentgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

scriptless-gt스크립팅 불가능 tagdependent-gt텍스트로 JSP-gtjsp안이라면 무엇이든

TLD 파일은 있어야할 자리가 정해져 있어서 컨테이너가 알아서 매핑해줍니다

Page 16: HeadFisrt Servlet&JSP Chapter 9

what is TLDA 커스텀 태그를 쓰기위해 필요한 일종의 DD라고 생각하면 됩니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt ltattributegt ltnamegtuserltnamegt ltattributegt lttaggt

lt taglib prefix=ldquomyrdquo uri = ldquorandomrdquogt ltmy advice user = ldquo$userNamerdquogt

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

태그를 사용하면 AdvisorTagHandler클래스에 있는 doTag()가 실행됩니다

false라면 속성은 문자열만 가능합니다 true라면 el표현식 스크립팅 표현식 표준액션이 가능합니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltbody-contentgtemptyltbody-contentgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

scriptless-gt스크립팅 불가능 tagdependent-gt텍스트로 JSP-gtjsp안이라면 무엇이든

TLD 파일은 있어야할 자리가 정해져 있어서 컨테이너가 알아서 매핑해줍니다

Page 17: HeadFisrt Servlet&JSP Chapter 9

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

태그를 사용하면 AdvisorTagHandler클래스에 있는 doTag()가 실행됩니다

false라면 속성은 문자열만 가능합니다 true라면 el표현식 스크립팅 표현식 표준액션이 가능합니다

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltbody-contentgtemptyltbody-contentgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

scriptless-gt스크립팅 불가능 tagdependent-gt텍스트로 JSP-gtjsp안이라면 무엇이든

TLD 파일은 있어야할 자리가 정해져 있어서 컨테이너가 알아서 매핑해줍니다

Page 18: HeadFisrt Servlet&JSP Chapter 9

lturlgtrandomlturigt lttaggt ltnamegtadviceltnamegt lttag-classgtfooAdvisorTagHandlerltTag-classgt ltbody-contentgtemptyltbody-contentgt ltattributegt ltnamegtuserltnamegt ltrtexprevaluegtfalseltrtexprevaluegt ltattributegt lttaggt

scriptless-gt스크립팅 불가능 tagdependent-gt텍스트로 JSP-gtjsp안이라면 무엇이든

TLD 파일은 있어야할 자리가 정해져 있어서 컨테이너가 알아서 매핑해줍니다