일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- html
- url 치환
- jQuery
- 오라클
- 배열
- spring
- JSTL
- forEach
- 모바일게임
- 맛집
- table
- array
- 자바
- 스프링
- 자바스크립트
- 개발
- set
- 원펀맨
- 리액트
- Oracle
- JSX
- Java
- SQL
- JavaScript
- JS
- 이름 마스킹
- React
- 원펀맨: 최강의 남자
- 형변환
- url 변환
Archives
- Today
- Total
특별한 일상
[jsp/servlet] JSTL 사용법 : 코어 태그 <c: 본문
반응형
지난 시간에 이어 JSTL(표준 태그 라이브러리)의 코어 태그 라이브러리에 대한 사용법을 알아 보겠습니다.
코어 태그 라이브러리를 사용하려면 앞서서 상단 선언에 이와 같이 선언한다.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
※ 코어 태그 라이브러리
기능분류 | 태그 | 설명 |
변수 지원 | set | jsp에서 사용될 변수를 설정. |
remove | 설정한 변수를 제거. | |
흐름 제어 | if | 조건에 따라 내부 코드를 수행. |
choose | 다중 조건을 처리할 때 사용. | |
forEach | 콜렉션이나 Map의 각 항목을 처리할 때 사용. | |
forTokens | 구분자로 분리된 각각의 토큰을 처리할 때 사용. | |
URL 처리 | import | URL을 사용하여 다른 자원의 결과를 삽입. |
redirect | 지정한 경로로 리다이렉트 함. | |
url | URL을 재작성 함. | |
기타 태그 | catch | 익셉션 처리에 사용. |
out | JspWriter에 내용을 알맞게 처리한 후 출력 |
1. 변수 지원 태그
1-1. <c:set> 태그
/* EL 변수 생성 */
<c:set var="변수명" value="값" [scope="영역"] />
<c:set var="변수명" [scope="영역"]>값</c:set>
---ex>
<c:set var="phone" value="01012341234" />
<c:set var="phone" value="<%= map.getMiddleNum() %>" scope="request" />
<c:set var="phone" value="010 ${map.middleNum} ${map.lastNum}" />
/* 객체의 프로퍼티 값 설정 */
<c:set target="대상" property="프로퍼티이름" value="값" />
<c:set target="대상" property="프로퍼티이름">값</c:set>
---ex>
<% Phone phone = new Phone(); %>
<c:set target="<%= phone %>" property="phone" value="01012341234" />
<%= phone.getPhone %> <%-- 값 : 01012341234 출력 --%>
<c:set var="p" value="<%= phone %>" />
<c:set target="${p}" property="phone" value="01012341234" />
${p.phone} <%-- 값 : 01012341234 출력 --%>
<% Map<String, String> map = new HashMap<String, String>(); %>
<c:set target="<%= map %>" property="phone" value="01012341234" />
<%= map.get("phone") %> <%-- 값 : 01012341234 출력 --%>
/* ${expr} 형식의 Deferred Expression을 값으로 설정 */
<c:set var="이름" value="#{expr}" />
---ex>
<% Map<String, String> map = new HashMap<String, String>(); %>
<c:set var="map" value="<%= map %>" />
<c:set var="phone" value="#{map.num}" />
<c:set target="${map}" property="num" value="01012341234" />
${phone} <%-- 값 : 01012341234 출력 --%>
1-2. <c:remove> 태그
<c:remove var="변수명" [scope="영역"] />
---ex>
<c:set var="phone" value="01012341234" scope="request" />
<c:set var="phone" value="01012341234" scope="session" />
<c:remove var="phone" /> <%-- 이름이 같은 선언한 두 변수 삭제 --%>
2. 흐름 제어 태그
2-1. <c:if> 태그
/* true, false를 리턴하는 조건문 */
<c:if test="조건">
.
.
.
</c:if>
<%-- 조건 : true, false, "텍스트", "${expr}", "<%= expr %>" --%>
2-2. <c:choose> 태그( <c:when> <c:otherwise> )
/* java의 if-else 블록 및 switch 문 혼합 */
<c:choose>
<c:when test="조건1">
...
</c:when>
<c:when test="조건2">
...
</c:when>
<c:otherwise>
...
</c:otherwise>
</c:choose>
<%-- 조건1 true면 조건1의 내부 블록 수행,
조건1 false, 조건2 true면 조건2 내부 블록 수행,
조건1 false, 조건2 false면 otherwise 내부 블록 수행 --%>
2-3. <c:forEach> 태그
/* 컬렉션 또는 Map에 저장된 값 순차적 처리 */
/* java for, do-while 대신 사용 */
<c:forEach var="변수" items="아이템">
...
<tr>
<td><input type="text">${변수사용}</input></td>
</tr>
</c:forEach>
<%-- items 속성엔 Array 배열, 컬렉션, Map이 온다. --%>
/* for문 범위 지정 */
<c:forEach var="i" begin="1" end="10">
${i}
</c:forEach>
<%-- 값 1 2 3 4 5 6 7 8 9 10 --%>
/* step 속성 */
<c:forEach var="i" begin="1" end="10" step="2">
${i}
</c:forEach>
<%-- 값 1 3 5 7 9 --%>
/* 참조할 변수 갯수 제한 */
<c:forEach var="list" items="${resultMap}" begin="2" end="5">
[${list}]
</c:forEach>
/* 항목의 인덱스 값을 사용해야 할 경우 varStatus */
<c:forEach var="list" items="${resultMap}" varStatus="status">
${status.index + 1}번째 번호 : ${list.phone}
루프 실행 횟수 : ${status.count}
</c:forEach>
<%-- map의 경우 key, value를 전부 선언가능
${list.key} : ${list.value} --%>
2-4. <c:forTokens> 태그
/* java util.StringTokenizer 클래스와 같은 기능 */
<c:forTokens var="변수" items="문자열" delims="구분자">
${변수}
</c:forTokens>
---ex>
<c:forTokens var="color" items="red,orange,yellow" delims=",">
${color}
</c:forTokens>
<%-- 출력: red orange yellow --%>
3. URL 처리 태그
3-1. <c:import> 태그
<c:import url="URL" [var="변수명"] [scope="영역"] [charEncoding="캐릭터셋"]>
...
</c:import>
/* 캐릭터셋 */
<%-- URL 인코딩일 경우 --%>
<%@ page contentType="text/html; charset=utf-8" %>
<%-- 동일 어플리케이션 자원을 읽어오는 경우 --%>
<% request.setCharacterEncoding("euc-kr"); %>
---ex>
<%-- 절대 URL 경로 --%>
<c:import url="https://develop-sense.tistory.com/rss" var="rss" />
...
${rss}
<%-- 상대 URL 경로 --%>
<c:import url="https://develop-sense.tistory.com/" />
<%-- GET 방식 파라미터 --%>
<c:import url="https://search.naver.com/search.naver">
<c:param name="where" value="nexearch" />
<c:param name="sm" value="top_hty" />
...
</c:import>
3-2. <c:redirect> 태그
/* response.sendRedirect()처럼 지정페이지로 리다이렉트 */
<c:redirect url="URL" [context="컨텍스트경로"]>
<c:param name="이름" value="값" />
</c:redirect>
---ex>
<c:redirect url="test.jsp" />
<c:redirect url="test.jsp" context="/jsp" />
<c:redirect url="https://search.naver.com/search.naver">
<c:param name="where" value="nexearch" />
<c:param name="sm" value="top_hty" />
...
</c:redirect>
3-3. <c:url> 태그
<c:url value="URL" [var="변수"] [scope="영역"]>
<c:param name="이름" value="값" />
</c:url>
---ex>
<c:url value="https://search.naver.com/search.naver" var="naverSearch">
<c:param name="where" value="nexearch" />
<c:param name="sm" value="top_hty" />
...
</c:url>
${naverSearch}
<%-- 결과
https://search.naver.com/search.naver?where=nexearch&sm=top_hty...
--%>
4. 기타 코어 태그
4-1. <c:catch> 태그
/* exception을 EL태그에 저장 */
<c:catch var="익셉션변수">
...
익셉션 발생할 수 있는 코드
...
</c:catch>
...
${익셉션변수}
---ex>
<c:catch var="ex">
<%= request.getParameter("phone") %> <br>
<% if(request.getParameter("phone").equals('01011112222')) { %>
${param.phone}은 01011112222 입니다.
<% } %>
</c:catch>
<c:if test="${ex != null}">
익셉션 발생!!!<br>
${ex}
</c:if>
<%-- phone의 파라미터가 존재하지 않을경우
NullPointerException 발생
ex 변수에 저장된 값이 null이 아닐경우
익셉션 발생면 if문 실행
--%>
4-2. <c:out> 태그
<c:out value="값" [escapeXml="(true|flase)"] [default="디폴트값"] />
<c:out value="값" [escapeXml="(true|flase)"]>
디폴트값
</c:out>
<%-- escapeXml 속성이 true일 경우 변환되는 문자
< <
> >
& &
' '
" "
--%>
---ex>
<% String test = "<p>hello</p>";
request.setAttribute("test", test);
%>
<c:out value="${test}" escapeXml="false" />
<c:out value="${test}" escapeXml="true" />
<c:out value="${test}" />
<%-- 결과 : hello
<p>hello</p>
<p>hello</p>
--%>
그래서 오늘은 코어 태그 라이브러리에 사용법과 예시를 간략하게 적어봤다.
참고할 만한 소스가 되었으면 좋겠다.
'IT•개발 끄적 > Jsp&Servlet' 카테고리의 다른 글
[jsp/servlet] JSTL 사용법 : 국제화 태그 <fmt: (0) | 2021.05.03 |
---|---|
[jsp/servlet] JSTL 사용법 : XML 태그 <x: (0) | 2021.04.22 |
[jsp/servlet] JSTL 사용법 및 선언 (0) | 2021.04.21 |
Comments