Web-JSTL

2 minute read

JSTL(JSP Standard Tag Library)

JSP 표준 태그 라이브러리이다.
라이브러리(library): 여러 프로그램이 공통으로 사용하는 코드를 모아 놓은 코드의 집합이다.
JSTL API에서 다운 받은 library를 WEB-INF/lib에 추가 후 불러와서 사용하면 된다.

JSTL 기본

  • 선언
    < %@ taglib prefix=”사용할 변수명” uri=”http://java.sun.com/jsp/jstl/core”%>

  • 입력
    < c:set var=”변수명” value=”값” scope=”범위” />

  • 출력
    < c:out value=”${변수명}” />
  • 조건문
    1)범위 < c:choose>
    2) if: < c:when test=”조건”>
    3) else: < c:otherwise>

  • 반복문
    < c:forEach var=”변수명” begin=”시작값” end=”끝값” step=”증가값”>
  • 문자열 분할
    < c:forTokens var=”변수명” items=”분할할 변수명” delims=”문자 구분 기준” begin=”시작 배열의 Index” end=”끝 배열의 Index” step=”Index 증가값”>
  • Try-Catch
    < c:catch var=”변수명”> 실행할 내용 </ c:catch>


예시 코드

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<%@page import="java.util.Date"%>
<%@page import="javax.xml.crypto.Data"%>
<%@page import="java.util.HashMap"%>
<%@ 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>Insert title here</title>
</head>
<body>
	JSPL Test
	<br> **변수**
	<br>
	<c:set var="irum" value="홍길동" scope="page" />
	<c:out value="${irum}" />
	<br>

	<c:set var="bb" value="star" />
	<c:if test="${bb=='star' }">
		<c:out value="${bb }" />
	</c:if>

	<hr>
	<c:choose>
		<c:when test="${bb=='star'}">
			<c:out value="${bb }" />
		</c:when>
		<c:when test="${bb=='moon'}">
			<c:out value="${bb }" />
		</c:when>
		<c:otherwise>
			<c:out value="${bb }" />
		</c:otherwise>
	</c:choose>

	<c:forEach var="cc" begin="1" end="10" step="2">
		<c:out value="${cc*3}" />&nasp;
	</c:forEach>
	<hr>
	<c:forEach var="cc" begin="1" end="9" step="1">
		3*${cc}=${3*cc}<br>
	</c:forEach>
	<hr>
	<br>
	<%
		HashMap map = new HashMap();
		map.put("name", "신기해");
		map.put("today", new Date());
	%>
	<c:set var="arr" value="<%=new int[] { 1, 2, 3, 4, 5 }%>" />
	<c:set var="m" value="<%=map%>" />

	<c:forEach var="a" items="${arr}">
	${a}&nbsp;
	</c:forEach>

	<c:forEach var="a" items="${arr}" begin="2" end="4">
	${a}&nbsp;
	</c:forEach>

	<c:forEach var="a" items="${m}">
	${a.key}&nbsp;${a.value}
	</c:forEach>
	
	<hr>
	**문자열 분할**<br>
	<c:forTokens var="animal" items="horse,cat,dog,lion" delims="," begin="0" end="3">
	${animal}
	</c:forTokens>
	<hr>
	<c:forTokens var="animal" items="horse/cat/dog/lion" delims="/" begin="0" end="3" step="1" varStatus="index">
	${index.begin}:${index.end} 
	</c:forTokens>
</body>
</html>


결과


JSTL SQL 연결

JSTL로 DB와 쉽게 연결할 수 있다.
아래 예시는 ds라는 변수에 연결하려는 DB의 정보를 담아서 Query문을 사용하는 예시이다.

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	JSTL로 상품자료 읽기
	<br>

	<c:catch var="err">
		<sql:setDataSource var="ds" url="jdbc:mysql://localhost:3306/test"
			driver="org.mariadb.jdbc.Driver" user="root" password="123" />
	</c:catch>

	<sql:query var="rs" dataSource="${ds}">
	select * from sangdata where code>=? and code <=?
	<sql:param value="2"/>
	<sql:param value="5"/>
	</sql:query>

	<table border="1">
		<tr>
			<th>코드</th>
			<th>상품명</th>
			<th>수량</th>
			<th>단가</th>
		</tr>
		<c:forEach var="s" items="${rs.rows }">
			<tr>
				<td>${s.code}</td>
				<td>${s.sang}</td>
				<td>${s.su}</td>
				<td>${s.dan}</td>
			</tr>
		</c:forEach>
	</table>
	<c:if test="${err!=null}">
Error: ${err.message }
</c:if>


</body>
</html>


결과 - JSTL 사진


DB - 실제 자료



내용 참조: mkil 블로그
참조: 원본코드
코드에 문제가 있거나 궁금한 점이 있으면 wjddyd66@naver.com으로 Mail을 남겨주세요.

Categories:

Updated:

Leave a comment