관리 메뉴

클라이언트/ 서버/ 엔지니어 "게임 개발자"를 향한 매일의 공부일지

표현 언어와 JSTL 10 - JSTL core 태그 5 : <c:import>, <c:redirect>, <c:url>태그와 <c:out>과 <c:catch> 태그 사용하기 본문

웹 · 앱 개발/JSP & Servlet

표현 언어와 JSTL 10 - JSTL core 태그 5 : <c:import>, <c:redirect>, <c:url>태그와 <c:out>과 <c:catch> 태그 사용하기

huenuri 2024. 11. 30. 09:20

JSTL core 태그가 얼마 남지 않았다. 마지막이 될지 어떨지 모르겠지만 여기까지 해서 새벽 공부를 마칠 것이다.


 

 

 

 

<c:import>, <c:redirect>, <c:url>태그 사용하기

이번에는 다른 페이지의 내용을 포함하거나 이동하는 등을 할 때 사용하는 태그를 살펴볼 것이다.


 

 

 

1. <c:import>

<jsp:include> 태그는 4장에서 액션 태그를 학습하면서 다른 페이지의 내용을 동적으로 포함하기 위해 시용하는 기능이라고 공부한 바 있다. <jsp:include> 태그처럼 이 태그 역시 다른 페이지의 내용을 포함하기 위해 사용한다.

차이점은 <jsp:include> 태그는 단순히 페이지를 포함하지만 <c:import> 태그는 다른 페이지의 내용을 변수에 저장할 수 있다. 기본 형식은 다음과 같다.

<c:import url="URL" [var="변수 이름"] [scope="영역"] [charEncoding="charEncoding"]>
</c:import>

 

<c:import>는 url 속성에 지정한 서버에 접속해서 데이터를 읽어와 var 속성에 지정한 변수에 저장한다. scope에는 변수가 효력을 발휘할 수 있는 영역을 설정한다. var 속성을 생략하면 현재 위치에 URL로부터 읽어온 결과를 출력한다.


 

 

 

 

[직접 해보기] <c:import> 사용하기

 

 

이 실습에서 진행했던 URL을 가져다가 사용해야 한다. 책에 있는 URL을 사용하면 500 오류가 발생한다.

 

 

 

 

 

이렇게 URL을 수정했음에도 안 되서 무슨 일인지 고민해보았다. 근데 나중에 보니 JAR 파일이 엉뚱한 데 있었다. 파일을 잘못 저장해서 옮길 때가 있었는데 그때 딸려온 것 같았다.

 

 

 

이제 URL을 잘 가져와서 이전에 작성한 프로젝트를 실행할 수 있다. 이 페이지에 있는 내용을 가져와 var 속성값인 data 변수에 저장했다. 그리고 변수에 저장된 값을 출력했다.


 

 

 

 

 

2. <c:url>

이 태그는 이후에 여러 번 반복되어 사용할 주소가 있다면 변수에 저장하기 위해서 사용한다. 형식은 다음과 같다.

<c:url value="URL"" [var="변수 이름"] [scope="영역"]>
</c:url>

 

 

 

 

[직접 해보기] <c:url> 사용하기

 

 

 

코드 실행 결과 이미지가 출력되지 않았다. 이 코드를 실행하기 위해서는 이미지 폴더를 하나 만들고 그 안에 이미지를 넣어야 한다.

 

 

 

 

이렇게 images 안에 pic.jpg라는 이미지를 넣었다. 이제 실행해보자. 사진이 작은 것 같아 크기를 키워주었다.


 

 

 

 

 

하지만 이 사진은 가로로 길기에 가로 세로를 똑같이 설정하면 안될 것 같다.


 

 

 

 

 

이제 예쁜 팽귄이 출력되어었다. 


 

 

 

 

3. <redirct>

이 태그는 response.sendRedirect() 메서드와 동일한 기능을 제공한다. 코드를 보다 간결하게 기술하여 지정한 페이지로 이동하기 위해 사용한다. 형식은 다음과 같다.

<c:redirect url="URL" [context="경로명"]>

 

 

[직접 해보기] <c:redirect> 사용하기

 

 

앞서와 같은 이미지가 잘 출력되었다.


 

 

 

 

 

<c:out>과 <c:catch> 태그 사용하기

이번 절에서는 JSTL 설치가 제대로 되었는지 살펴보기 위해 이미 사용한 <c:out>을 보다 자세히 살펴보기로 하자. <c:out>은 출력을 위한 태그이다. <c:out>과 함께 예외 처리를 위한 <c:catch> 태그의 사용 방법과 역할도 알아볼 것이다.


 

 

1. <c:out>

이 태그는 value 속성에 지정한 문자열 혹은 변수의 내용을 출력할 때 사용하는 태그로서 JSP의 표현식이나 표현 언어와 동일한 역할을 한다. 다음과 핱은 형식을 갖고 있다. 주로 출력을 위해서는 ${ }를 사용하지만, JSTL에서도 출력을 위한 태그가 제공되기에 이를 사용할 수도 있다. ${ }보다는 자주 사용되지 않는다.

 


 

 

 

 

2. <c:catch>

자바 코드에서는 예외 처리를 위해 try-catch로 기술한다면 이를 JSTL에서는 <c:catch>를 사용한다. <c:catch> 몸체 부분에 예외가 발생할 가능성이 있는 코드를 기술하여 예외가 발생하면 이를 잡아내는 역할을 담당한다. 기본 형식은 다음과 같다.


 

 

 

[직접 해보기] 출력과 예외 처리를 지원하는 태그 사용하기

 

 

page 영역에 변수 age를 선언하되 30을 저장했다. 변수 값을 <c:out> 태그로 출렸했고, <c:remove> 태그로 page 영역의 age 변수를 제거했다.

age 변수를 제거한 후에 변수 값을 출력하면 default 값인 10이 출력된다. <c:catch> 태그는 몸체를 실행하는 중에 <%= 1/0 %>에서 예외가 발생한다. 예외의 원인은 변수 errmsg에 저장된다. 그리고 <c:out> 태그로 에러 메시지를 출력한다.


 

 

 

 

학습을 마치고

이번 단원에서는 JSTL 라이브러리들 중에서 가장 기본이 되는 코어 태그를 살펴보았다. JSTL 공부도 해보니 정말 재미있다. 이제 JSP 감도 완전히 돌아왔고 공부하는데 어려움이 없다. 역시 내 생각이 맞았다. 뭔가를 알기 위해 혼자서 고분고투하는 시간이 정말 값지다는 것을 말이다.

아침시간이 조금 지났지만 오늘 새벽 2시 반에 일어나 6시간 반이 넘도록 공부에 열중했다. 7시간에 가까운 시간을 하나의 과목에 집중하며 이 시간이 얼마나 기쁜지 모른다.

 

이제 몸과 마음의 에너지를 보충하고 다시 학습을 이어가려고 한다. 새벽 시간에 아직 마무리하지 못한 내용을 아침식사 후에 덧붙여서 추가 정리했다.