JSP 표준 태그 라이브러리 (JSTL)
- 3대 지시자 중 태그 라이브러리를 이용할 수 있음.
- 보통 core, formatting만 사용
- get 값으로 http://127.0.0.1:8080/jstl/ifTag.jsp?name=bk
이렇게 넘어 들어오면 JSTL에서는
${param.name}
으로 받을수 있다.
param 은 파라미터값으로 넘어온 데이터를 뜻하고
name 은 그 데이터중 name이라는 이름을 갖는 데이터의 값을 가져오겠다는 뜻
${param.name} 는
request.getParameter("name") 과 같다.
<라이브러리 다운로드>
1. jstl 라이브러리 다운로드, lib에 추가
2. jsp에서 jstl 사용하기 위한 taglib 지시어 추가
*prefix="c" -> jstl 사용 시 태그 앞에 붙일 접두어. <c:태그명/ > 형태로 사용
<코어(Core) 태그>
- 변수선언, 조건문, 반복문 등
- Core 태그 taglib
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<c:set>
EL에서 사용할 변수나 자바빈즈 생성
JSP의 setAttribute() 메서드와 같은 역할
기본 페이지 영역에 저장 된다
<c:set var="directVar" value="100" />
연산가능
<c:set var="elVar" value="${ directVar mod 5}" />
표현식으로 사용 가능
<c:set var="expVar" value="<%= new Date() %>" />
<출력>
directVar : ${ pageScope.directVar } <br>
expVar : ${ directVar } <br>
betweenVar : ${ expVar } <br>
betweenVar : ${ betweenVar } <br>
<저장 영역 설정>
<scope : 기본은 page 영역, 원하는 영역으로 설정 가능>
<c:set var="personVar1" value='<%= new Person("홍길동",10) %>' scope="request" />
${requestScope.personVar1.name }<br>
${personVar1.age }<br> <!-- 지금은 requst객체에만 있으니까 굳이 영역 특정 없이도 나와 -->
<c:remove>
변수삭제
c:remove 변수명
scope 미설정 시 모든 영역의 해당 변수가 삭제됨
<c:remove var="personVar1" scope="request" />
${requestScope.personVar1.name }<br>
${personVar1.age }<br>
<c:if>
java와 if 와 동일하나 else가 별도로 없어 조건 나열형태 작성 불가
var 속성에 저장된 결과 값으로 else비슷하게는 가능
<h4>문자열 비교와 else구문 흉내내기</h4>
<c:if test="${ string eq 'Java' }" var="result2">
문자열은 Java입니다. <br />
</c:if>
<c:if test="${not result2}">
'Java'가 아닙니다. <br />
</c:if>
-속성
test: if 문에서 사용할 조건 지정
var : 조건의 결과를 저장할 변수명
scope : 변수가 저장될 영역
<c:set var="number" value="100" />
<c:set var="string" value="JSP" />
예1) 짝수/홀수 판단하기
<c:if test="${number mod 2 eq 0 }" var="result">
${number }는 짝수입니다. <br />
</c:if>
result : ${result } <br/>
<주의>
- EL이 아닌 정수를 저장하면 false
<c:if test="100" var="result3">
EL이 아닌 정수를 지정하면 false
</c:if>
result3 : ${result3 } <br />
- EL양쪽에 빈 공백이 있는 경우 false
<c:if test=" ${ true } " var="result5">
EL양쪽에 빈 공백이 있는 경우 false <br />
</c:if>
- 대소문자 구분 없이 "tRuE"인 경우 true
<c:if test="tRue" var="result4">
대소문자 구분 없이 "tRuE"인 경우 true <br />
</c:if>
<c:choose>,<c:when>,<c:otherwise>
다중조건 판단
when은 여러번, otherwise는 한번만 사용할 수 있다
하위 태그 함께 사용 :
- 조건 1, 2, ... : <c:when>
- 모든 조건을 만족하지 않을때 : <c:otherwise>
예) choose 태그로 홀짝 판단
<c:choose>
<c:when test="${number mod 2 eq 0}">
${number}는 짝수입니다.
</c:when>
<c:otherwise>
${number}는 홀수 입니다.
</c:otherwise>
</c:choose>
예2) 평균 점수 출력 (암기)
<h4>국, 영, 수 점수를 입력하면 평균을 내어 학점 출력</h4>
<form> <!-- 점수 입력 폼 method="get" action= "현재 주소창의 url값" -->
국어 : <input type="text" name="kor" /> <br/>
영어 : <input type="text" name="eng" /> <br/>
수학 : <input type="text" name="math" /> <br/>
<input type="submit" value="학점 구하기" /> <br/>
</form>
<c:if test="${not (empty param.kor or empty param.eng or empty param.math) }"> <!-- 비어있지 않다면 (세개 값중 하나라도 비어있다면) -->
<c:set var="avg" value="${(param.kor +param.eng + param.math) /3 }" />
<c:choose>
<c:when test="${avg >= 90}"> A학점</c:when>
<c:when test="${avg >= 80}"> B학점</c:when>
<c:when test="${avg ge 70}"> C학점</c:when>
<c:when test="${avg ge 60}"> D학점</c:when>
<c:otherwise>F학점</c:otherwise>
</c:choose>
입니다
</c:if>
<c:forEach>
반복 태그
1) 시작과 종료를 지정하는 일반 for
2) 배열이나 컬렉션을 순회하는 향상된 for
속성
- var : 변수명 지정
- items : 반복위한 객체 지정. 배열, 컬렉션 등
- begin : 시작값 지정
- end : 종료갑 지정
- step : 증가값 지정
- varStatus : 루프의 현재 상태 알려주는 변수 이름 지정
1) 일반 for 문 예시
<h4>일반 for문 형태의 forEach 태그</h4>
<c:forEach begin="1" end="3" step="1" var="i">
<p>반복 ${i} 입니다</p>
</c:forEach>
결과)
'jsp' 카테고리의 다른 글
파일 업로드/ 다운로드 (0) | 2022.12.05 |
---|---|
jsp_model1 게시판 (0) | 2022.12.03 |
표현언어(EL:Express Language) (0) | 2022.12.02 |
페이징 (0) | 2022.12.01 |
한글 깨짐 방지 필터 설정 (0) | 2022.11.29 |