Spring

[jsp]JSTL

sian han 2022. 5. 24. 09:36

※ 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 } &nbsp;&nbsp;</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 } &nbsp;&nbsp;</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