※ JSTL(Java Server Pages Standard Tag Library)
- 자주 사용하는 커스텀 태그(Custom Tag)의 표준
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
▶ JSTL 환경설정
- javax.servlet-jsp.jstl-1.2.1.jar / javax.servlet.jsp.jstl-api-1.2.1.jar => 프로젝트 lib 에 넣기
- 태그 라이브러리 사용을 위해서는 JSP 페이지에 <%@ taglib> 디렉티브를 작성해야한다
<%@ taglib prefix=“?” uri=“http://java.sun.com/jsp/jstl/어쩌구” %>
- prefix 속성 : uri 속성에 명시된 값 대신에 해당 페이지에서 prefix 속성값으로 명시된 값을 사용하겠다는 것
[1] core
http://java.sun.com/jsp/jstl/core
- 가장 기본 라이브러리
- 변수 선언하는것
- if문 , for문, URL 처리 등에 사용한다
▷ choose when other
- ~라면 ( = 자바의 switch와 유사 )
- core 의 if 태그에서는 else 사용이 불가하다. 따라서 if else 대신에 choose when other 을 사용함
- 속성 : test - 조건 판별식이 들어감
<c:choose>
<c:when test=“조건”>body 의 내용</c:when> <!-- 조건 만족시-->
<c:otherwise> body의 내용</c:otherwise><!-- 조건 만족 못했을 때-->
</c:choose>
▷ <c:if>
- else 를 못씀
- 속성 : test - 조건 판별식이 들어감
var - 변수명을 갖는다. if문의 결과값이 var 속성 의 값으로 들어감
scope - var 속성에서 지정한 변수의 공유 범위를 나타내는 것으로 생략시 page가 기본값
예제 ) choose / if 사용
<h1> core-if, choose~when~otherwise </h1>
<c:set var="country" value ="canada" /> // ** 여기 value 에 따라 출력결과가 달라짐
<h2>if 이용</h2>
<c:if test="${!empty country}">
${country }에서 살아요
</c:if>
<c:if test="${empty country}">
변수에 값이 없어요 !
</c:if>
<h2>choose 이용</h2>
<c:choose>
<c:when test ="${country=='korea'} ">
<p>${country }(한국)에서 살아요</p>
</c:when>
<c:when test ="${country=='canada'} ">
<p>${country }(캐나다)에서 살아요</p>
</c:when>
<c:otherwise>
<p>그 외의 나라에서 살아요</p>
</c:otherwise>
</c:choose>
▷ <c:forEach>
- 반복문
- 객체 전체에 걸쳐 반복 실행할 때 사용
<c:forEach items=“condition” begin=“begin” end=“end” step=“step”
var=“varName” varStatus=“varStatus” />
- 속성 :
items : 속성값에는 반복할 객체명이 들어감
var : 속성값으로 변수명을 갖는다
begin : 시작 값
end : 마지막 값
step : 증가값
varStatus : 별도의 변수를 줄 때 사용
예제 ) forEach - list 에서 값을 꺼내서 VO 에 넣고 출력하기
자바 for 문 /확장 for문 사용
<%for(int i=0;i<alist.size();i++){
PdVO vo = alist.get(i);%>
가격 : <%=vo.getPrice()%>
<%}%>
<%for(PdVO vo : alist){%>
가격: <%=vo.getPrice()%>
<%}%>
forEach 사용
<c:forEach var="vo" items="alist">
가격 : ${vo.price}
</c:forEach>
예제 ) forEach 를 사용해서 header로부터 파라미터명과 값을 출력
!! ▽ 이렇게만 쓰면 value 에 value 주소값이 나옴 이렇게 쓰지말고 !!
<c:forEach var="head" items ="${headerValues }">
<p>header key : ${head.key }</p>
<p>header value : ${head.value }</p>
</c:forEach>
▽ for 안에 중첩 for 를 써야 value 값이 나옴
<h2>확장 for</h2>
<c:forEach var="head" items ="${headerValues }">
<p>header key : ${head.key }</p>
<p>header value :
<c:forEach var ="val" items ="${head.value }">
${val }
</c:forEach>
</p>
<br><br>
</c:forEach>
예제 ) forEach 1~100까지 짝수의 합 구하기
<c:set var="sum" value="0"/>
<c:forEach var="i" begin="1" end="100">
<c:if test="${i%2==0}">
<span>${i } </span>
<c:set var="sum" value="${sum+i }"/> // **
</c:if>
</c:forEach>
//결과처리
<p>1~100까지 짝수의 합 : ${sum }</p>
ㄴ += 연산자가 없어서 sum+i 사용 (sum+=i)
예제 ) forEach 1~100까지 짝수 구하기
step 이용 ( step=2 : 2씩증가 )
<c:forEach var="i" begin="2" end="100" step="2">
<span>${i } </span>
</c:forEach>
확장 for 이용
<c:forEach var="head" items ="${headerValues }">
<p>header key : ${head.key }</p>
<p>header value :
<c:forEach var ="val" items ="${head.value }">
${val }
</c:forEach>
</p>
<br><br>
</c:forEach>
▷ <c:import>
- include 액션태그와 유사한 기능
- 웹 어플리케이션 내부의 자원과 http, ftp와 같은 외부에 있는 자원을 가져옴.
- 속성 : url - 읽어올 URL이 들어감
var - 읽어올 데이터를 저장할 변수명
varReader : 리소스의 내용을 Reader 객체로 읽어올 때 사용
charEncoding : 읽어온 데이터의 캐릭터셋을 지정
▷ <c:set>
- JSP의 setAttribute()와 같은 역할
<c:set var=“name” value=“hong” /> // var = 변수명 value =값
- value 에 값을 변수로 넣고싶다면 ?
=> value =%{hong}
이렇게 EL표현식으로 넣어주면 됨
- <c:set> 의 추가 속성
target : 속성값으로 자바빈 객체명이나 Map 객체명이 온다.
property : target 속성은 속성값으로 자바빈 객체나 Map 객 체의 값을 설정할 프로퍼티 명이 옴
scope : 변수(속성)의 공유 범위(유효기간)로 page, request, session, application 속성값 중 하나가 온다.
생략시 기본값으로 page가 설정됨
▷ url
- url 을 사용하는 모든곳에서 사용가능
- 뷰에서는 location 등에 contextpath 못쓰는데, url 태그를 쓰면 자동으로 추가된다.
- 반드시 /로 시작해야함
<c:url var=“varName” value=“value” scope=“{page|request|session|application}” />
- 속성 : var - 생성한 URL이 저장될 변수명을 기술함
value - 생성할 URL이 들어
▷ <c:remove>
- var 에다가 변수를 넣으면 그 변수의 값을 제거해버림
- 변수를 제거할 때 scope이 맞지 않으면 제거되지 않음
<c:remove var=“tel” />
ㄴ scope이 page인 tel 변수의 값을 제거
※ JSTL functions
replace 앞에거를 뒤에거로
split 쪼개라~
substring 잘라라 ~
${pageVo.totalRecord } 토탈레코드 수
<c:if test ="${empty list}">
이때 변수 list 는 페이지 내에서 선언된 변수가 아니라 이전 페이지에서 보낸 파라미터의 이름이다
'Spring' 카테고리의 다른 글
[Spring] 스프링 MVC를 이용한 웹 요청 처리 (0) | 2022.05.26 |
---|---|
[Spring] 스프링 프레임워크 (0) | 2022.05.24 |
[jsp] 표현언어 (0) | 2022.05.22 |
[jsp] 모델2 기반의 MVC 패턴 게시판의 흐름 (0) | 2022.05.22 |
회원가입 (0) | 2022.05.19 |