JSTL
- JSTL(Jsp Standard Tag Library) : JSP에서 자주 사용되거나 공통적으로 사용되는 Java 코드를 쉽고, 표기법을 간단히 할수 있도록 태그화(Tag Library)하여 표준으로 제공함 (if, for, scope 변수선언, 데이터 파싱 등)
- 라이브러리 등록 방법
1) https://tomcat.apache.org/download-taglibs.cgi 접속
2) jar files -> impl, EL, Spec 다운로드
3) WEB-INF/lib 폴더에 추가
JSTL 사용을 위한 선언 방법
- JSTL을 사용하고자 하는 JSP가 있을 경우 해당 JSP 최상단에 JSTL 라이브러리를 추가하는 지시자 taglib을 작성해야 한다.
- prefix : 접두사. 다른 태그와 구별할 수 있는 namespace (태그 앞에 붙는 태그명)
- url(Uniform Resource Locator) : 인터넷에서 특정 자원 위치 지정(주소)
- uri(Unifrom Resource Identifier) : 네트워크 상에서 자원을 구별하는 식별자 (자원을 구별하는 유일한주소)
-> uri에 작성하는 주소는 네트워크 상의 주소가 아닌 다운로드 받은 라이브러리 내부 구분 주소
변수 선언 (c : set)
- 변수를 선언하고 값을 초기화하는 태그(초기화는 무조건 수행)
- c:set 태그로 선언된 변수는 EL을 이용해서 출력할 수 있다.
- 특징
1) 변수 타입을 지정하지 않음
2) 변수의 범위(scope)를 지정할 수 있음
-> c:set은 내장객체에 속성을 추가하는 태그 (page, request, session, application)
- c:set 태그 속성
1) var : 변수명
2) value : 대입될 값
3) scope : 변수 범위(기본값 : page)
-> scope 미지정 시 좁은 범위부터 탐색(우선순위)
변수 삭제(c:remove)
- 지정한 변수( c:set / setAttribute( ) 추가된 변수) 삭제
- scope 선택 가능
- scope 미작성 시 모든 scope에서 일치하는 변수명 모두 제거
- c:remove 속성
1) var : 삭제할 변수명
2) scope : 삭제할 범위 (기본값 모든 범위)
조건문 if ( c:if 태그)
- 조건문을 작성할 수 있는 태그
- if문만 가능하고 else는 불가능 (c:else는 존재하지 않음)
- c:if 속성
test : 조건을 작성하는 속성. 단, EL로만 작성할 수 있다.
-> test 안에 조건식은 EL로 작성
조건문 - if ~ else if ~ else (c:choose, c:when, c:otherwise)
- c:choose 내부에 c:when( if / else if ) , c:otherwise (else) 태그를 작성하는 형태
c:forEach 태그
- Java의 for문 + 추가 기능을 가지고 있는 태그
- 속성
var : 현재 반복 횟수에 해당하는 변수 ( == int i )
begin : 반복 시작 값
end : 반복 종료 값
step : 반복 시 마다 증가할 값(증감식), 미작성 시 기본값 1
items : 반복 접근할 객체명(Collection 객체) // 향상된 for문
varStatus : 현재 반복에 해당되는 정보
- 제공되는 값
1)current : 현재 반복 횟수 또는 현재 접근중인 객체
2) index : 현재 객체가 몇번째 인덱스인지 반환(0부터 시작)
3) count : 현재 반복문이 몇바퀴 반복중인지 반환(1부터 시작)
4) first : 첫 번째 반복일 경우 true 반환
5) last : 마지막 반복일 경우 true 반환
-> == for(int i = 1; i<=6; i++)
** EL로 파라미터 얻어오는 방법 **
1) ${ param.name의 속성값 }
-> 단일 파라미터를 얻어와 출력하는 용도
-> 복수 파라미터에 사용하는 경우 맨 앞(0번 인덱스)값만 얻어옴
2) ${ paramValues.name의 속성값[인덱스] }
-> 복수 파라미터에 사용하며 뒤에 인덱스 번호를 붙여서 그 인덱스 값의 값을 가져옴
-> name 속성값이 lang인 값들이 item에 담겨져있고 향상된 for문과 같이 하나씩 하나씩 str변수에 담긴다
-> vs는 현재 반복에 해당되는 값을 뜻한다
-> name이 lang인 체크박스들이다
-> 이렇게 체크하고 제출을 누르면
-> items에 담겨지는 값들 : java, jdbc, html, javascript
-> ${str} == java / ${vs.index} == 0 / ${vs.count} == 1 / ${vs.current} == java
-> test 조건식에서 vs.first == 첫번째 반복일 경우 true반환
java가 첫번째 반복이므로 "첫 번째" 출력. last는 마지막 반복에 "마지막" 출력.