일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 정보처리기사 필기
- Model
- SQL
- JVM Heap
- Where
- ModelAndView
- 정보처리기사 합격
- ModelMap
- 자바
- JQuery
- Class
- jqgrid 개념
- 개발자 이직
- implements
- extends
- View
- mysql
- HTML
- 트랜잭션
- HTTP
- ResponseBody
- MariaDB
- jqGrid
- spring
- 어노테이션
- java
- 스프링
- 정처기 합격
- Javascript
- 제이큐그리드
- Today
- Total
크리스의 개발일기
[JAVA] JSTL Core Tag란? 본문
JSTL란?
JSTL은 JSP 표준라이브러리(JSP Standard Tag Library)의 약어이다. 자주 사용될 수 있는 커스텀 태그들을 모아서 표준으로 모아놓은 태그 라이브러리다.
JSTL 설정
...
<dependencies>
...
<!-- taglibs -->
<dependency>
<groupId>taglibs</groupId>
<artifactId>datetime</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>string</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
</dependency>
</dependencies>
출처: https://hackersstudy.tistory.com/42 [공대인들이 직접쓰는 컴퓨터공부방]
JSTL 사용 (JSP파일에서의 사용 선언)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
JSTL 종류
태그 라이브러리 | 접두어 | 주요기능 | 선언문 |
Core | c | 변수 지원, 제어문, 페이지 관련 처리 | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> |
XML | x | XML관련 처리 | <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> |
I18N | fmt | 포맷 처리, 국제화 지원 | <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> |
Database | sql | DB관련 CRUD 처리 | <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> |
Functions | fn | collection 처리, String 처리 | <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> |
JSTL Core Tag의 종류
태그이름 |
설명 |
<c:set /> |
변수의 선언 및 제거 |
<c:remove /> |
|
<c:out /> |
변수의 출력 |
<c:catch /> |
예외 처리 |
<c:if /> |
조건문 (else는 없다) |
<c:choose /> |
Switch문과 비슷 |
<c:when /> |
|
<c:otherwise /> |
|
<c:forEach /> |
반복문 |
<c:forTokens /> |
구분자로 분할하여 반복문 |
<c:url /> |
URL 생성 |
<c:param /> |
파라미터 추가 |
<c:import /> |
페이지 첨부 |
<c:redirect /> |
URL 이동 |
Core Tag 설명
1. <c:set /> Tag
- JSP의 setAttribute()와 같은 역할
- <c:set var="변수명"
value="변수에 넣을 값"
property="자바빈 객체 or Map 객체 값을 설정할 프로퍼티 명"
scope="변수 공유 범위" />
<!-- scope 속성은 선택적이며 page로 기본 설정되어 있다. -->
<c:set var="변수명" value="할당된 값"
scope="변수의 유효 범위 page|request|session|application" />
<!-- 간단 사용 예 -->
<c:set var="country" value="Korea" scope="request" />
<c:set var="intArray" value="<%=new int[] {1,2,3,4,5} %>" />
2. <c:remove /> Tag
- JSP의 removeAttribute()와 같은 역할
- <c:remove var="변수명"
scope="변수 공유 범위" />
<c:remove var="country" scope="request" />
3. <c:out /> Tag
- '<%=...>'와 같다. JSP의 표현식을 대체
- <c:out var="변수명"
default="기본값"
escapeXML="true|false" />
<!-- Syntax -->
<c:out var="변수명" default="기본값" escapeXML="true|false" />
<!-- 간단 사용 예 -->
<p><c:out value="${country}" default="Korea" escapeXml="true"/></p>
<p>${country}</p><p>${intArray[0]}</p>
4. <c:catch /> Tag
- Body에서 실행되는 코드의 예외 처리
- <c:catch var="에러메시지가 포함될 변수명" />
<c:catch var="ex">
<%= 1/0 %>
</c:catch> <br/>
Error Msg: ${ex} <br/>
5. <c:if /> Tag
- 조건문
- <c:if test="조건 판별식"
var="변수명"
scope="변수 공유 범위" />
<!-- Syntax -->
<c:if test="expression" var="name" scope="scope">
body content
</c:if>
<!-- 간단 사용 예 -->
<c:set var="login" value="true" />
<c:if test="${!login}"> <p><a href="/login.ok">로그인</a></p></c:if>
<c:if test="${login}"> <p><a href="/logout.ok">로그아웃</a></p></c:if>
<!-- 아래 예제와 같이 null 비교를 하지 않고 empty 비교를 하면 null과 ""를 동시에 체크할 수 있다. -->
<c:if test="${!empty country}"><p><b>${country}</b></p></c:if>
6. <c:choose />, <c:when />, <c:otherwise />
- Switch문과 동일, 여러개의 when 태그와 하나의 otherwise 태그를 가진다
- <c:if /> 태그에 else가 없으므로 대체식으로도 많이 사용
- <c:choose>
<c:when test="조건 판별식"> .... </c:when>
<c:when test="조건 판별식"> .... </c:when>
<c:when test="조건 판별식"> .... </c:when>
</c:choose>
<!-- Syntax -->
<c:choose>
<c:when test="expression">
body content
</c:when>
...
<c:otherwise>
body content
</c:otherwise>
</c:choose>
<!-- 간단 사용 예 -->
<c:choose>
<c:when test="${login}">
<p><a href="/logout.ok">로그아웃</a></p>
</c:when>
<c:otherwise>
<p><a href="/login.ok">로그인</a></p>
</c:otherwise>
</c:choose>
7. <c:forEach /> Tag
- 객체 전체에 걸쳐 반복 실행에 사용
- <c:forEach var="현재 아이템의 변수명"
items="반복 데이터가 있는 아이템 Collection 명"
begin="시작 값, 기본값은 0"
end="종료 값"
step="증가 값"
varStatus="반복 상태 값을 지닌 변수" />
※ varStatus는 forEach의 상태를 알 수 있는 값이 들어 있다.
- $(변수.current} : 현재의 인덱스
- $(변수.index} : 0부터의 인덱스
- $(변수.count} : 1부터의 인덱스
- $(변수.first} : 현재 루프가 처음인지 확인
- $(변수.last} : 현재 루프가 마지막인지 확인
- $(변수.begin} : forEach문의 시작 값
- $(변수.end} : forEach문의 끝 값
- $(변수.step} : forEach문의 증가 값
<!-- 정수 범위내의 반복 Syntax -->
<c:forEach var="name" varStatus="name"
begin="expression" end="expression" step="expression">
body content
</c:forEach>
<!-- 컬렉션 범위내의 반복 Syntax -->
<c:forEach var="name" items="expression" varStatus="name"
begin="expression" end="expression " step="expression">
body content
</c:forEach>
<!-- forEach 정수 범위내의 반복 -->
<c:forEach var="i" begin="0" end="10" step="2" varStatus="x">
<p> i = ${i}, i*i = ${i * i} <c:if test="${x.last}">, last = ${i}</c:if> </p>
</c:forEach>
<!-- forEach 컬렉션 범위내의 반복 -->
<%
java.util.List list = new java.util.ArrayList();
java.util.Map map = new java.util.HashMap();
map.put("color","red");
list.add(map);
map = new java.util.HashMap();
map.put("color","blue");
list.add(map);
map = new java.util.HashMap();
map.put("color","green");
list.add(map);
request.setAttribute("list", list);
%>
<c:forEach var="map" items="${list}" varStatus="x">
<p> map(${x.index}) = ${map.color} </p>
</c:forEach>
8. <c:forTokens /> Tag
- 문자열을 구분자(delimiter)로 분할
- <c:forTokens var="현재 아이템의 변수 명"
items="반복 데이터가 있는 아이템 Collection 명"
delims="구분자, 여러개 지정 가능"
begin="시작 값, 기본 값은 0"
end="종료 값"
step="증가 값"
varStatus="반복 상태 값을 지닌 변수" />
<!-- Syntax -->
<c:forTokens var="name" items="expression"
delims="expression" varStatus="name"
begin="expression" end="expression" step="expression">
body content
</c:forTokens>
<!-- 간단 사용 예 -->
<b>
<c:forTokens var="color" items="빨|주|노|초|파|남|보" delims="|" varStatus="i" >
<c:if test="${i.first}">color : </c:if>
${color} <a href="<c:url value='/TEST.jsp' />">
View Test
</a>
<c:if test="${!i.last}">,</c:if>
</c:forTokens>
</b>
9. <c:url /> Tag
- URL의 생성
- <c:url var="생성한 URL이 저장될 변수 명"
value="생성할 URL"
scope="변수 공유 범위" />
<a href="<c:url value='/TEST.jsp' />">
View Test
</a>
10. <c:param /> Tag
- 파라미터 추가
- <c:param name="파라미터 명" value="값" />
<c:url value="TEST.jsp" var="paramTest">
<c:param name="data1" value="1000" />
<c:param name="data2" value="2000" />
</c:url>
<a href="${paramTest}"
View TEST with data1(1000), data2(2000)
</a>
11. <c:import /> Tag
- 페이지 첨부
- import 태그 내에 param 태그도 사용할 수 있다.
- <c:import url="첨부할 URL" />
<c:import url="/TEST1.jsp" />
<c:import url="/TEST2.jsp">
<c:param name="data1" value="1000" />
<c:param name="data2" value="2000" />
</c:import>
12. <c:redirect /> Tag
- sendRedirect()와 동일
- <c:redirect url="이동할 URL" />
<c:redirect url="http://hackersstudy.tistory.com/" />
출처 :
http://wiki.gurubee.net/pages/viewpage.action?pageId=26740270
http://bloodygale.tistory.com/82
https://hackersstudy.tistory.com/42
'JAVA' 카테고리의 다른 글
[JAVA] 추상클래스와 인터페이스의 차이 (0) | 2020.11.27 |
---|---|
[JAVA]자바메서드 (수정) (0) | 2020.11.24 |
[JAVA] 하이라키(Hierarchy) 구조란? (0) | 2020.11.17 |
[JAVA] static final과 final이란? (0) | 2020.11.17 |
[JAVA] LIST와 ArrayList란? (0) | 2020.11.17 |