Front-End/Jsp

JSTL 2장- Core태그

EverJunior Minjoo 2022. 9. 15. 13:16

Core 태그

core태그는 프로그래밍 언어에서 가장 기본이되는 변수선언, 조건문, 반복문을 대체하는 태그를 제공한다.

종류

set : el에서 사용할 변수를 설정한다. setAttribute()메소드와 동일한 기능이다.

remove : 설정한 변수를 제거한다. removeAttribute()메소드와 동일한기능

if: 단일 조건문을 주로 처리하는데 else문이 없다.

choose : 다중 조건을처리할때 사용하고 하위에 when ~ otherwise 태그가 있다.

forEach : 반복문을 처리할때 사용한다. 일반 for문과 향상된 for문 두개 형태로 사용할수있다.

forTockens : 구분자로 분리된 각각의 토큰을 처리할때 사용한다.StringTokenizer클래스와 동일한기능

import : 외부 페이지를 삽입할때 사용한다. 

redirect : 지정한 경로로 이동한다. sendRedirect()메소드와 동일한 기능이다.

url : 경로를 설정할때 사용한다.

out : 내용을 출력할때 사용한다.

catch 예외처리에 사용한다.


<c:set> 태그

<c:set>태그는 el에서 사용할 변수나 자바빈즈를 생성할때 사용한다. jsp에서 영역에 속성을 저장할 때 사용하는 setAttribute()메소드와 같은 역할이다. 일반적인 변수를 생성하는 형식은

<c:set var="변수명" value="값" scope="영역"/> 으로 생성한다.

c:set 태그에 사용하는 속성

var : 변수명 설정

value : 변수에 할당할 값

scope : 변수를 생성할 영역지정 (defalut : page)

target : 자바빈즈 설정

property : 자바빈즈속성(멤버변수의 값지정)

c:remove태그

c:remove태그는 c:set태그로 설정한 변수를 제거할때 사용한다. jsp에서 영역의 속성을 제거할때 사용하는 RemoveAtrtribute() 메소드와 같은 역할이다. 형식은 

<c:remove var="변수명' scope="영역"/> 으로사용한다.

var : 삭제할 변수명을 설정

scope : 삭제할 변수의 영역을 지정한다. 지정하지않으면 모든 영역의 변수가 삭제됨

c:if태그

c:if태그는 자바의 if와 동일하게 제어구문을 작성할때 사용한다. 하지만 else가 별도로 없어서 일련의 조건을 나열하는 형태로는 작성하기 어렵다.

<c:if test="조건" var="변수명" scope="영역">  조건이 true일때문장 </c:if>

test : if문에서 사용할 조건을 지정한다.

var : 조건의 결과를 저장할 변수명을 지정한다.

scope : 변수가 저장될 영역을 지정한다. 

test의 조건에 ${ } 구문이 들어갈수있다.

c:choose, c:when, c:otherwise태그

c:choose태그는 다중 조건을 통해 판단해야할때 사용한다. 하위태그로 c:when, c:otherwise태그를 함께 사용한다. 형식은

<c:choose>

    <c:when test="조건1"> 조건1을 만족하는 경우 </c:when>

    <c:when test="조건2"> 조건2를 만족하는 경우 </c:when>

    <c:otherwise> 아무조건도 만족하지 않는경우 </c:otherwise>

</c:choose>

 

c:forEach태그

c:forEach태그는 반복을 위해 사용한다. 자바는 두가지형태의 for문을 제공하는데 시작과 종료를 지정하는 일반for문과 배열이나 컬렉션을 순회할때 사용하는 향상된 for문이 있다. c:forEach도 두가지 형태로 사용할수있다.

일반for문 형태

<c:forEach var="변수명" begin="시작값" end="마지막값" step="증가값" />

                for( int     i             =        0;        i   <      100;         i+=      2)

향상된 for문 형태

<c:forEach var="변수명" items="컬렉션 혹은 배열" />

              for( int number     :         numbers)

var : 변수명을 지정한다.

items : 반복을 위한 객체를 지정한다. 배열, 컬렉션등을 지정가능하다

begin : 시작값을 지정한다.

end : 종료값을 지정한다.

step : 증가할 값을 지정한다.

varStatus : 루프의 현재 상태를 알려주는 변수의 이름을 지정한다.

varStatus를 지정하면 var속성과 별개로 c:forEach루프의 자세한 상태정보를 확인할수있다. 

varStatus를 지정하고 얻을수있는정보

current : 일반for문의 경우 var에지정한 현재 루프의 변숫값을 반환하고 향상된 for문의 경우 현재 루프의 실제 요소를 반환한다.

index : 일반 for문의 경우 var에 지정한 현재 루프의 변수값을 반환하고 향상된for문의 경우 현재 루프의 인덱스를 표시한다 인덱스는 0부터시작

count : 실제 반복횟수를 보여준다 (1부터),

first : 루프의 처음일때 true를 반환

last : 루프의 마지막일 때 true를 반환한다.

 

c:forTokens 태그

자바의 StringTokenizer클래스처럼 구분자를 기준으로 문자열을 나눠 토큰의 갯수만큼 반복해준다.

<c:forTokens items="문자열" delims="문자열 구분자" var="변수명"/> 의 형식으로 사용한다.

토큰이란 일반적으로 문법적으로 의미있는 최소 단위를 말한다. 여기선 문자열을 구분할 구분자로 분리되는 문자열의 구성요소를 의미한다.

 

c:import태그 

c:import태그는 jsp:include액션태그와 같이 외부 파일을 현재 위치에 삽입할때 사용한다. 같은웹애플리케이션에 속하지않은 외부 페이지도 삽입할수있다. 

<c:import url="페이지경로 혹은 url" scope="영역"/> 의 형식으로 사용한다.

이러면 현재위치에 외부 페이지를 삽입한다. 아님

<c:import url="페이지경로 혹은 url" var="변수명" scope="영역"/> ${변수명} 이렇게 var 속성을 사용하면 외부 페이지가 지정한 변수에 저장되고 나중에 이 변수명을 통해 원하는 위치에 삽입할수있다. 즉 선언과 삽입을 분리할수있다.아님

<c:import url="페이지경로 혹은 url?매개변수1=값1" >

      <c:param name="매개변수2" value="값2" />

</c:import>이렇게 매개변수로 전달할 값이 있다면 url에 쿼리스트링으로 직접 추가하거나, <c:param>태그를 사용하면된다.

 

c:redirect태그 

c:redirect태그는 response내장객체의 sendRedirect()와 동일하게 페이지 이동을 처리한다.

<c:redirect url="이동할 경로 및 url> 의 형식으로 사용하고 매개변수 전달하고싶으면 import태그와 동일하게 c:param태그를 사용하면된다 아님 request영역을 사용해도 되고

c:url태그

c:url태그는 지정한 경로와 매개변수를 이용해 컨텍스트 루트를 포함한URL을 생성한다. 생성된url은a태그의 href속성이나 form태그의 action속성에서 사용할수있다.

<c:url value ="설정한경로" scope="영역"> 의 형식으로 사용하고, 이렇게 하면 생성된URL이 즉시 출력된다 

var속성을 사용하면 미리 선언해둔 URL을 원하는 위치에 출력할수있다.

<c:url value="설정한 경로" scope="영역" var="변수명" />  ..... [생략된코드]

${ 변수명 } 이렇게 원하는 위치에 삽입함 ( 이렇게 삽입을 나중에 action이나 a태그href에 넣을수있다.

<a href="${ url }" > 이런식으로

 

c:out 태그

c:out태그는 jsp표현식처럼 변수를 출력할때 사용한다.

<c:out value="출력할 변수" default ="기본값" escapeXml="특수문자 처리유무" /> 의 형식으로 사용한다.

출력할 변수가 null일땐 default속성에 지정한 기본값이 출력하고, escapeXml속성을 true로 설정하면 HTML태그를 자유롭게 표현할수있다.

value : 출력할 변수를 지정한다.

escapeXml : 특수문자를 변환할지 여부를 결정한다. 기본값은 true로 특수기호를 그대로 출력한다.

default: value속성에 값을 지정하지않을경우출력할 값을 지정한다.

 

c:catch 태그

c:catch태그는 발생한 예외를 잡아 처리하는 역할을 한다. 예외가 발생하면 지정한 변수에 에러메시지가 저장되어 전달된다.

<c:catch var="변수명"> 실행코드 </c:catch>의 형식으로 사용된다.