I.JSTL 주요 태그 사용법
- <%@ taglib uri="사용할 태그의 라이브러리 URI" prefix="접두사" %>
JSTL 확장 태그를 사용하려면 태그 라이브러리를 사용해야한다. 위는 JSTL 태그 라이브러리다. <%@ taglib%>는 JSP의 지시자 태그다. uri 속성은 태그 라이브러리의 네임스페이스 이름이다. 네임스페이스 이름은 URI로 되어있다. prefix 속성은 JSTL 태그를 사용할 때 태그 이름 앞에 붙일 접두사다.
1.태그 라이브러리와 URI, 접두사
태그 라이브러리 | 접두사 | 네임스페이스의 URI 식별자 |
Core | c | http://java.sun.com/jsp/jstl/core |
XML | x | http://java.sun.com/jsp/jstl/xml |
I18N | fmt | http://java.sun.com/jsp/jstl/fmt |
Database | sql | http://java.sun.com/jsp/jstl/sql |
Function | fn | http://java.sun.com/jsp/jstl/functions |
II.JSTL 주요 태그
JSTL은 <c:out>, <c:set>, <c:remove>, <c:choose>, <c:forEach> 등 다양한 태그를 제공한다.
2-1 <c:out> 태그
:출력문을 만드는 태그다.
문법
- <c:out value="출력할 값" default="기본값"/>
- <c:out value="출력할 값">기본값</c:out>
예제
- <c:out value="안녕하세요!"/><br>
- <c:out value="${null}">반갑습니다.</c:out><br>
- <c:out value="안녕하세요!">반갑습니다.</c:out><br>
- <c:out value="${null}"/><br>
실행결과
- 안녕하세요!
- 반갑습니다.
- 안녕하세요!
2-2 <c:set> 태그
: 변수를 생성하거나 기존 변수의 값을 덮어쓸 때 사용한다.
문법
- <c:set var="변수명" value="값" scope="page|request|session|application"/> // value 속성을 사용하여 값 설정
- <c:set var="변수명" scope="page|request|session|application"/>값</c:set> // 태그 콘텐츠를 사용하여 값 설정
2-3 <c:remove> 태그
: <c:remove> 태그는 보관소에 저장된 값을 제거하는 태그다.
문법
- <c:remove var="변수명" scope="page | request | session | application"/>
예제
<h3> 보관소에 저장된 값 제거</h3>
<% pageContext.setAttribute("username1", "홍길동"); %>
① ${username1}<br>
<c:remove var="username1"/>
② ${username1}<br>
실행결과
보관소에 저장된 값 제거
①홍길동
②
2-4 <c:if> 태그
: test 속성값이 참이면, 콘텐츠가 실행된다.
문법
- <c:if test="조건" var="변수명" scope=" page | request | session | application"> 콘텐츠 </c:if>
예제
<c:if test="$(10 > 20)" var="result1">
①10은 20보다 크다.<br>
</c:if>
②${result1}<br>
<c:if test="${10 < 20}" var="result2">
③10은 20보다 크다.<br>
</c:if>
④${result2}<br>
실행결과
② false
③ 10은 20보다 크다.
④ true
2-5 <c:choose> 태그
:자바의 switch, case 등과 같은 기능을 수행한다. 여러가지 조건에 따라 다른 작업을 해야 할 필요가 있을 때 사용한다.
문법
<c:choose>
<c:when test="참거짓 값"></c:when>
<c:when test="참거짓 값"></c:when>
...
<c:otherwise></otherwise>
</c:choose>
예제
<c:set var="userid" value="admin'/>
<c:choose>
<c:when test="${userid == 'hong'}">
홍길동님 반갑습니다.
</c:when>
<c:when test="${userid == 'leem'}">
임꺽정님 반갑습니다.
</c:when>
<c:when test="${userid == 'admin'}">
관리자 전용 페이지입니다.
</c:when>
<c:otherwise>
등록되지 않은 사용자입니다.
</c:otherwise>
</c:choose>
실행결과
관리자 전용 페이지입니다.
2-6 <c:forEach> 태그
:는 반복적인 작업을 정의할 때 사용한다.
문법
- <c:forEach var="변수명" items="목록데이터" begin="시작인덱스" end="종료인덱스"> 콘텐츠 </c:forEach>
item 속성값으로 오는 값들
- 배열
- java.util.Collection 구현체.
- java.util.Iterator 구현체
- java.util.Enumeration 구현체
- java.util.Map 구현체
- 콤마(,) 구분자로 나열된 문자열.
var 속성은 반복문을 돌면서 items에서 꺼낸 항목 값을 가리키는 참조변수.
<c:forEach var="board" items="${list}">
<tr>
<td>${board.bno}</td>
예제
<% pageContext.setAttribute("nameList", new String[]{"홍길동", "임꺽정", "일지매"}); %>
<ul>
<c:forEach var="name" items="${nameList}>
<li>${name}</li>
</c:forEach>
</ul>
실행결과
- 홍길동
- 임꺽정
- 일지매
예제
<% pageContext.setAttribute("nameList2", new String[] {"홍길동", "임꺽정", "일지매", "주먹대장", "똘이장군"}); %>
<ul>
<c:forEach var="name" items="${nameList2}" begin="2" end="3">
<li>${name}</li>
</c:forEach>
</ul>
실행결과
- 일지매
- 주먹대장
2-7 <c:url> 태그
:URL을 생성해주는 기능을 한다. URL을 생성하면서 contextPath를 자동으로 생성한다. 그래서 contextPath가 달라져도 URL을 수정할 필요가 없다.
contextPath 자동 생성의 의미
○url의 주소가 처음에는 </변경전/board/list?bno=~~이하 생략~~>이였다. c:url을 사용하지 않으면 contextPath가 변경이될 떄 모든 주소를 매번 수정해줘야 했다. 하지만 context 뒤의 정보들을 고정함으로써 이러한 수고를 없앴다.
문법
●<c:url var="변수이름" value="url경로" var="변수명" scope="영역"/>
예시
●<c:url value='/board/list?bno=${board.bno}&page=${board.page}%pageSize=${board.pageSize}'/>
※ <c:url 태그를 쓰는 이유>
- context path를 자동으로 포함시키므로 서버 소스를 수정함에 따른 변화를 자동으로 적용해준다.
- 클라이언트의 브라우져가 쿠키사용을 금지하면 로그인 유지가 힘들어진다. 이 때 세션을 유지하기위해 링크 뒤에 특정값(sessionId)을 부여해줘서 로그인을 유지해준다.
출처:MVC아키틱처, 마이바티스, 스프링으로 만드는 실무형 개발자 로드맵 자바 웹 개발 워크북(저자: 엄진영, 출판사:프리렉)
'Servlet & JSP' 카테고리의 다른 글
[Servlet & JSP] 서블릿과 JSP정리 (0) | 2022.12.15 |
---|---|
[JSP] EL (0) | 2022.02.19 |