📌JSTL
: JSP에서 자주 사용되거나 공통적으로 사용되는 java코드를 쉽고,
표기법을 간단히 할 수 있도록 태그화 하여 표준으로 제공함
✅ JSTL 라이브러리 등록 방법
- https://tomcat.apache.org/download-taglibs.cgi 접속
- jar files -> impl, EL, Spec 다운로드
- WEB-INF/lib 폴더에 추가
* webapp 폴더에 넣는 이유는 인터넷 상에 배포되는 폴더로 인터넷상에 수행되어야하는 코드, 파일은 webapp에 작성
✅ JSP에서 JTSL 사용하려면 무조건 라이브러리 등록 후 최상단에 taglib작성
prefix : 접두사. 태그 앞에 붙는 태그명
uri : 네트워크 상의 주소가 아닌 다운로드 받은 라이브러리 내부 구분 주소
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
➰ 변수 선언 ( c:set )
- 변수를 선언하고 값을 초기화하는 태그(초기화는 무조건 수행)
- c:set 태그로 선언된 변수는 EL을 이용해서 출력할 수 있다.
- 변수 타입을 지정하지 않는다.
- 변수 범위(scope) 지정 할 수 있다.
✳ c:set 태그 속성
- var : 변수명
- value : 대입될값
- scope : 변수 범위(기본값:page)
1. page 변수 선언 및 초기화
<c:set var="num" value="100" />
2. request 변수 선언 및 초기화
<c:set vat="num" value="200" scope = "request"/>
${num}+${requestScope.num } = ${num1+requestScope.num }
100 + 200 =300
➰ 변수 삭제 ( c:remove )
- 지정한 변수(c:set/setAttribute()추가된 변수) 삭제
- scope 미 작성 시 모든 scope에서 일치하는 변수명 모두 제거
✳ c:remove 속성
- var : 삭제할 변수명
- scope : 삭제할 범위(기본값 모든 범위)
1. 변수 선언
<c:set var="num" value="100" />
<c:set var="num" value="200" scope="request" />
<c:set var = "num" value ="300" scope = "session"/>
page : ${pageScope.num } // 100
request : ${requestScope.num } //200
session : ${sessionScope.num } //300
2. request 범위의 num 변수 삭제
<c:remove var="num" scope="request"/>
page : ${pageScope.num } //100
request : ${requestScope.num } // (삭제됨)
session : ${sessionScope.num } //300
3.모든 범위 num 변수 삭제
<c:remove var="num" />
➰ 조건문 - if(c:if태그)
- 조건문만 작성할 수 있는 태그
- if문만 작성 가능하고 c:else는 존재하지 않음
✳ c:if 속성
- test : 조건을 작성하는 속성( 단, EL로만 작성할 수 있다.)
1. 변수 선언
<c:set var="temp" value="10" />
2. if문 작성
<c:if test="${temp>20}">
<!-- test에 작성된 조건이 만족(true)할때만 화면에 출력됨 -->
temp는 20보다 크다
</c:if>
<!-- else 구문이 없어 반대되는 조건을 별도 작성 -->
<c:if test="${temp<=20 }">
temp는 20보다 작거나 같다.
</c:if>
➰ 조건문 - if ~ else if ~ else(c:choose,c:when,c:otherwise)
- choose 내부에
- when (if / else if)
- otherwise(else) 태그를 작성하는 형태
1.변수선언
<c:set var ="temp2" value="10"/>
2. if ~ else if ~ else 작성
<c: choose>
<c:when test"${temp2>10 }">
10보다 크다
</c:when>
<c:when test="${temp2<10 }">
10보다 작다
</c:when>
<c:otherwise>
10과 같다
</c:otherwise>
</c:choose>
➰ c:forEach 태그
Java의 for문 + 추가 기능을 가지고 있는 태그
📂 속성
var : 현재 반복 횟수에 해당하는 변수 (== int i)
begin : 반복 시작 값
end : 반복 종료 값
step : 반복 시마다 증가할 값 (증감식), 미작성 시 기본값 1
items : 반복 접근할 객체명(Collection 객체) // 향상된 for문
varStatus : 현재 반복에 해당되는 상태 정보
📂 제공되는 값
current : 현재 반복 횟수 또는 현재 접근 중인 객체
index : 현재 객체가 몇 번째 인덱스인지 반환 (0부터 시작)
count : 현재 반복문이 몇 바퀴 반복 중인지 반환 (1부터 시작)
first : 첫 번째 반복일 경우 true 반환
last : 마지막 반복일 경우 true 반환
📕 jstl_2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JSTL_2</title>
</head>
<body>
<h3>일반 for문 형식으로 사용</h3>
<c:forEach var="i" begin="1" end="6" step="1">
<h${i}> ${i}번째 반복 중입니다.. </h${i}>
</c:forEach>
<table border=1>
<c:forEach var="i" begin="1" end="10" step="1">
<tr>
<th>${i}</th>
<td>${i}번째 게시글입니다.</td>
</tr>
</c:forEach>
</table>
<hr>
<h3>향상된 for문 형식으로 사용</h3>
<form action="forResult.jsp" method="get">
<input type="checkbox" name="lang" value="java"> java <br>
<input type="checkbox" name="lang" value="sql"> sql <br>
<input type="checkbox" name="lang" value="jdbc"> jdbc <br>
<input type="checkbox" name="lang" value="html"> html <br>
<input type="checkbox" name="lang" value="css"> css <br>
<input type="checkbox" name="lang" value="javascript"> javascript <br>
<input type="checkbox" name="lang" value="jQuery"> jQuery <br>
<input type="checkbox" name="lang" value="servlet"> servlet <br>
<input type="checkbox" name="lang" value="jsp"> jsp <br>
<button>제출</button>
</form>
</body>
</html>
🖥 출력화면
📕 forResult.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>c:forEach 향상된 for문처럼 사용하기</title>
</head>
<body>
<h3>EL로 파라미터 얻어오는 방법</h3>
1. \${ param.name속성값 }
-> 단일 파라미터를 얻어와 출력하는 용도
-> 복수 파라미터에 사용하는 경우 맨 앞(0번 인덱스) 값만 얻어옴 <br><br>
${ param.lang }
<br><br>
2. \${ paramValues.lang[인덱스] } <br><br>
${ paramValues.lang[0] } <br>
${ paramValues.lang[1] } <br>
${ paramValues.lang[2] } <br>
<hr>
<h3>향상된 for문 사용</h3>
<ul>
<c:forEach var="str" items="${paramValues.lang}" varStatus="vs">
<li>
${str} / ${vs.index} / ${vs.count} / ${vs.current} <br>
<c:if test="${vs.first}">
<!-- 첫 번째 반복인 경우 -->
<span style="color:red;">첫 번째</span>
</c:if>
<c:if test="${vs.last}">
<!-- 마지막 반복인 경우 -->
<span style="color:blue;">마지막</span>
</c:if>
</li>
</c:forEach>
</ul>
</body>
</html>
🖥 출력화면
'ON > Servlet' 카테고리의 다른 글
servlet 공부하기 (0) | 2023.07.05 |
---|---|
통합연결 실습하기 (0) | 2023.07.05 |
[Servlet] Serlvet/JSP 내장 객체와 범위 (0) | 2023.07.04 |
[Servlet] EL방식 및 작성법(JSP와 차이) (0) | 2023.07.03 |
[Servlet] 아파치 톰캣 / JSP 이용하기 (0) | 2023.06.29 |