System.out.println("Hello, World");

JSTL(JSP Standard Tag Library)

-custom tag library로 JSP 스펙에는 포함되지 않았지만 자바 진영에서 진행하는 태그 라이브러리

-커스텀 태그 : JSP에서 스크립트릿으로 작성해야할 동적 로직을 태그로 처리

-jstl.java.net에서 api를 다운로드 후 web application의 lib 폴더에 넣어 사용한다.

-JSP에서 커스텀 태그를 사용하기 위해서는 taglib 지시자 태그 설정 필요

 <%@ taglib prefix="접두어" uri="태그 라이브러리 구분자"%>


○ JSTL 종류

-core : Program의 기본적인 내용들을 지원. 변수, 제어문, 출력 등

     uri : http://java.sun.com/jsp/jstl/core


-xml : XML 관련 처리

     uri : http://java.sun.com/jsp/jstl/xml


-국제화 : ResourceBundle을 이용한 국제화 처리

uri : http://java.sun.com/jsp/jstl/fmt


-데이터베이스 : JSP에서 DB 접근하기 위한 로직 지원

uri : http://java.sun.com/jsp/jstl/sql



○ 주요 코어 라이브러리

-변수지원

-set : JSP에서 Attribute로 binding된 객체 처리

-set 태그

1. 4개 속성영역에 값(Attribute)를 binding

                 - 속성

var : binding할 객체 이름

scope : binding할 속성영역. 값 : page, request, session, application

value : binding할 속성 객체

ex)<c:set var="name" scope="request" value="홍길동"/>

<c:set var="errorMessage" scope="request" value="치명적인 오류"/> 

이것을 get할때는 똑같이 ${requestScope.errorMessage}하면 된다.


2. binding된 Attribute의 property에 값을 설정

- 속성

target : property를 설정한 attribute

value : property에 설정할 값

property : 값을 설정할 property

ex) <c:set target="${requestScope.cto}" property="id" value="aaa"/>


-remove 태그

-remove : binding된 attribute 제거

-4개 속성영역에 binding된 attribute 객체를 제거하는 태그

-속성

var : 제거할 속성의 이름

scope : 제거할 속성이 binding된 영역(page, request, session, application)

ex) <c:remove scope="request" var="cto"/>


-제어문 지원

-if : if문

-if 태그

-단일 조건 조건문 처리 -if문과 동일

-다중 조건 처리에는 사용할 수 없다.(if-else)

-속성

-test : 조건 설정 true/false

-구문

<c:if test="조건">조건 만족시 실행할 내용</c:if>

<c:if test="<%=x<10">조건 만족시 실행할 내용</c:if>


-choose : 다중 조건 처리

- 다중 조건을 처리하는 태그 - if else, switch case

- choose 태그는 조건들을 묶어주는 역할

- 하위 태그

when 태그

-선택할 조건을 표기하기 위한 태그

-속성 : test - 조건 설정

-otherwise 

-else의 역할(switch case의 default)의 역할

구문

<c:choose>

<c:when test="조건1">

조건1이 true일 경우 실행할 내용

  </c:when>

<c:otherwise>

when의 모든 조건이 만족하지 않을 경우 실행할 내용

</c:otherwise>

</c:choose>


-forEach : 반복문 처리

> 컬렉션이나 배열을 반복해서 element들을 조회

> 속성

-items : 반복할 컬렉션이나 배열 설정

-var : 반복시 조회할 element를 참조할 변수 선언

ex)<c:forEach var="var" items="배열">

${var.id}

    </c:forEach>


> 특정 횟수만큼 반복을 처리

-begin : 시작 값

-end : 종료 값

-step : 증감 값

-var : 변화되는 값을 저장할 변수 선언

ex)<c:forEach begin="1" end="10" step="1" var="i">

${ i } - 안녕

</c:forEach>



ex) if문 적용하기


-출력지원

-out 태그

-태그형태의 문자열을 그대로 출력되도록 처리할 수 있다.

-속성

-value : 출력할 내용

-escapeXml : 태그 출력 여부 처리

-true : 태그를 해석하지 않고 그대로 출력

-false : 태그를 해석해서 출력

-default : value의 값이 null일 경우 출력할 기본 값

ex) 그냥 출력하기


ex) EL과 연동


ex) 출력할때 태그 연동하기


ex) null값 출력 및 기본 값 


위 그림처럼 requestScope에 아무것도 없으면 null값이 출력된다. 또한 default="값"에다가 값을 넣으면 기본값이 출력된다.



또한 default에 안넣는다고 해도 <c:out> 값 </c:out>에 값을 넣어도 기본값으로 나온다.


Posted by 김마농