서블릿(JSTL)

  • JSTL(JSP 표준 태그 라이브러리)

Apache Tomcat® – Apache Taglibs 다운로드


3개의 JAR 파일을 다운로드합니다.

lib에 넣어봅시다.

.jsp를 빌드한 후 추가!! 넣어

<%@ taglib 접두어="c" 우리="http://java.sun.com/jsp/jstl/core“%>

<%@ page language="java" contentType="text/html; cherset=UTF-8"
    pageEncoding ="UTF-8" %>            <!-- jsp -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>    <!-- JSTL -->
    
    <!-- 
    	prefix : 접두사
    	uri (Uniform Recource Indentifier) : 자원 구분 식별자 (주소형태)
     -->

  • JSTL이란 무엇입니까?

— JSP에서 일반적이거나 일반적으로 사용되는 Java 코드 표기법

단순히 레이블이 지정되고 기본적으로 제공되는 것입니다.

예: if, for, 배열/컬렉션 길이, 문자열 대체, 숫자 데이터 형식 변경, 데이터 구문 분석, 범위 변수 선언 등

  • JSTL 라이브러리 등록 방법

Apache Tomcat® – Apache Taglibs 다운로드 연결하다

–> Jar 파일 -> Impl, Spec, EL 다운로드.

–> webapp/Web-INF/lib 폴더에 추가.

  • JSTL을 사용하기 위한 선언 방식

— 추가하려는 JSTL taglib를 JSP 파일의 시작 부분에 추가합니다.

<%@ taglib 접두어="c" 우리="http://java.sun.com/jsp/jstl/core“%>

1. 변수 선언( c:태그 설정 )

— 변수를 선언하고 값을 초기화하는 태그

(원하는 영역의 빌트인 오브젝트에 값을 설정)

씨:세트 재산

— var: 변수 이름(setAttribute의 키 값)

— value : 할당할 값

— 범위 : 내장 개체 범위(기본값: 페이지)

2. 변수 삭제( 씨: 제거 )

— c:set / setAttribute()로 추가된 값 제거

씨: 제거 재산

— var: 삭제할 변수 이름(key)

— 범위: 삭제할 내장 개체의 범위(기본값: 모든 범위)

<body>
    <h3> JSTL 사용을 위한 선언방법</h3>
    
    <!-- scriptlet 작성법 -->
    <% pageContext.setAttribute("num1", 10); %>     <!-- num1 에 10 선언 -->
    
    <!-- JSTL 작성법 -->
    <c:set var="num2" value="20"/>                  <!-- num2 에 20 선언 -->   
    ${num1} / ${num2}                                 <!-- 10  /  20 -->  
    
    <c:set var="num2" value="300" scope="request"/>  <!-- request scope에 num2 , 300세팅 -->
    
    <h4>${num2}</h4>                            <!-- 20 -->
    <h4>${requestScope.num2}</h4>               <!--request scope num2 =  300 -->
    
    <c:set var="temp" value="임시값" scope="session"/>    <!-- temp 에 "임시값" 선언 -->
    <h4> temp : ${temp}</h4>                          <!-- "임시값" -->
    
    <c:remove var="temp"/>                             <!-- temp 삭제 .  -->
    temp : ${temp}  <br>
    
    <c:set var="test" value="page" scope="page"/>
    <c:set var="test" value="request" scope="request"/>
    <c:set var="test" value="session" scope="session"/>
    <c:set var="test" value="application" scope="application"/>
    
    <c:remove var="test" scope="request"/>         <!-- requestScope test변수 삭제. -->
    
    ${pageScope.test}  /  ${requestScope.test}     <!-- page /   / session / application   -->
    / ${sessionScope.test }  /  ${applicationScope.test}
    
</body>

3. 조건문 – if ( c:만약 징후 )

— 단일 if 문(다른 것은 없음)

— 주의

1) 테스트 속성 값은 EL 구문으로 작성해야 합니다.

2) 테스트 속성 값 ” “에는 공백이 허용되지 않습니다.

    <!-- Scriplet 작성법 -->
    <% if ( 1 == 1 ) { %>
         출력합니다.
    <%  }  %>
    
    <!-- JSTL 작성법 -->
    <c:if test="${1==1}">
         JSTL작성법
    </c:if>

4. 조건문 – if ~ else if ~ else ( c:choose , c:when , c:otherwise )

— c: 선택 : 쉬는 날과 그렇지 않은 날

(현재 태그에 if ~ else if ~ else를 씁니다.)

— c:언제 : if/else if를 나타내는 태그.

속성은 test 만입니다. (조건부 속성)

— c:그렇지 않으면 : 다른 날

속성이 없습니다.

    <c:set var="temp2" value="150"/>
    <c:choose>
    	<c:when test="${ temp2 > 100 }">
    	   100보다 크다
    	</c:when>
    	 <c:when test="${ temp2 < 100 }">
    	   100보다 작다
    	</c:when>
    	<c:otherwise>
    	   100과 같다
    	</c:otherwise>
    </c:choose>

5번째 루프( c:forEach 태그 )

— 일반 + 추가 기능

— 재산

하나) 바르 : 현재 반복 횟수에 해당하는 변수(내부 나)

2) 시작 : 반복할 때 바르 씨앗

3) end: 반복의 끝 바르

4) 단계: 각 반복 바르증분 값(기본값 1)

5) 항목: 반복적으로 액세스되는 객체(배열, 컬렉션 객체)

6) varStatus: 현재 반복 상태에 대한 정보를 제공하는 변수 선언

varStatus=”변수 이름”

-> c:forEach 문 내에서 “변수 이름”을 통해 원하는 값을 얻을 수 있습니다.

*** varStatus에서 제공하는 값

— current : 현재 반복 횟수(현재 바르 값)

또는 반복되는 객체(컬렉션/배열 요소)

— index : 현재 인덱스 값을 반환합니다(0부터 시작).

— count: 현재 라운드 횟수의 반복 횟수를 반환합니다(1부터 시작).

— first : 첫 번째 반복이면 true, 그렇지 않으면 false

— last : 마지막 반복에서 true, 그렇지 않으면 false

<h3> 일반 for문 형식사용 </h3>
    <c:forEach var="i" begin="1" end="6" step="1">
        <h${i}> 현재 i값 : ${i} </h${i}> 
    </c:forEach>
    
    <h3> 일반 for문 + varStatus</h3>
    <table border="1">
    	<c:forEach var="n" begin="1" end="10" varStatus="vs">
  
    		<c:choose>
	    		<%-- 첫번째 반복일 경우 --%>
	    		<c:when test="${vs.first}">
	    			<tr>
	    				<th class="first">${n}</th>
	    				<td class="first">${n}번 게시글입니다.</td>
	    			</tr>
	    		</c:when>
	    		 <%-- 마지막 반복일 경우 --%>
	    		<c:when test="${vs.last}">
	    			<tr>
	    				<th class="last">${n}</th>
	    				<td class="last">${n}번 게시글입니다.</td>
	    			</tr>
	    		</c:when>		
	    		<c:otherwise>
	    			 <tr>
	    				<th>${n}</th>
	    				<td>${n}번 게시글입니다.</td>
	    			</tr>
	    		</c:otherwise>
    		</c:choose>
    	</c:forEach>   
    </table>


6. for문 개선( c:forEach 확장 for 문 )

–param.lang : 매개변수 아래의 lang 값을 가져와서 출력합니다.

그러나 lang이라는 매개변수가 여러 개 있는 경우 첫 번째 매개변수만 검색됩니다.

–paramValues.lang : lang이라는 모든 매개변수를 검색하여 배열로 반환합니다.