* JSTL(JSP Standard Tag Library)
- JSP의 경우 HTML 태그와 같이 사용되어 전체적인 코드의 가독성이 떨어진다. , (<% 매번 블록 처리를 해줘야하는 문제)
- 그래서 이런 단점을 보완하고 만들어진 것이 JSTL이다.
- JSTL을 사용하면 자바의 제어문을 HTML태그화 시킬 수 있다.
- JSTL의 경우 우리가 사용하는 Tmocat 기본 컨테이너에 포함되어 있지 않으므로, 별도의 라이브러리를 설치하고 사용한다.
- 설치방법: http://jakarta.apache.org 접속
* JSTL Core Library
-Core 라이브러리는 기본적인 라이브러리로 출력, 제어문, 반복문 같은 기능이 포함되어 있다.
- 코어 라이브러리를 사용하기 위해서 반드시 JSP 파일 내의 지시자 태그로
<% @ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
1.출력 태그
<c:out value="출력값">
2. 변수 선언 태그
- 변수 태그는 JSTL이 지원하는 태그에서 사용할 수 있는 변수를 설정하기 위해 사용한다. EL변수를 생성합니다.
- <c:set var="변수명" value="설정값" scepe="범위">
- a. var: 값을 저장할 EL 변수의 이름을 지정함.
- b. value : 변수의 값을 지정함.표현식, EL, 텍스트를 사용하여 지정가능
- c scope: 변수를 저장할 영역을 지정함. page, request, session, application 중 하나를 지정해야 하며 지정하지 않을 경우 page를 기본 값으로 사용.
3. 변수 제거 태그
- <c:remove var="변수명" scope="범위">
- remove 태그를 사용할 때 주의점은 삭제할 변수의 scope을 지정하지 않으면 동일한 이름으로 저장된 모든 영역의 변수를 삭제한다.
4. 조건문(if) 태그
-if 태그는 자바 언어의 if블록과 비슷한 기능을 제공한다. 중첩된 if~else 문과 같은 효과를 낼 수는 없지만 단순한 if블록을 쉽게 대처할 수 있기 때문에 많이 사용한다.
-<c:if test="조건식" var="조건 처리 변수명">
5. 조건문(choose) 태그
-choose 태그는 자바의 swith 구문과 if~else 구문을 혼합한 형태로 다수의 조건문을 하나의 블록에서 수행할 때 사용한다.
-<c:choose>
<c:when test="조건식"> 처리 내용 </c:when>
<c:when test="조건식"> 처리 내용 </c:when>
<c:otherwise> 처리 내용 </c:otherwise>
</c:choose>
6. 반복문 태그
- <c:forEach item="객체명" begin="시작값" end="끝 값" step="증감값" var="변수명">
- forEach 태그는 배열, 컬렉션 또는 맵에 저장되어 있는 값들을 순차적으로 처리할때 사용한다.
- 배열의 경우는 객체의 배열뿐만 아니라 기본 데이터 타입의 배열도 알맞게 처리를 하며 기본 데이터 타입은 래퍼 클래스를 통해 처리한다.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() lib폴더 안에 jstl과 standard.jar를 넣어주자. |
실습.
1. 조건문(if) 태그
jstl_if.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%-- 페이지 안에서 JSTL태그를 사용하려면 디렉티브를통해 taglib선언을 해야한다. --%>
<%@ 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>
<c:if test="${param.name=='홍길동'}">
<p>name파라미터의 값은${param.name}입니다.
</c:if>
<c:if test="${param.name=='이순신'}">
<p>name파라미터의 값은${param.name}입니다.
</c:if>
<%-- 아래의 코드를 EL & JSTL을 이용해서 간략하게 변경해보자.
<%
String name = request.getParameter("name");
if(name.equals("홍길동")) {
%>
<p>name파라미터의 값은 홍길동입니다.</p>
<%
}
if(name.equals("이순신")) {
%>
<p>name파라미터의 값은 홍길동입니다.</p>
<% } %>
--%>
</body>
</html>
2.조건문(choose) 태그
if-else을 사용하기 위해선 이방법을 써야한다.
<%@ 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>
<c:choose>
<c:when test="${param.name == '김철수'}">
<p>당신의 이름은 김철수입니다.</p>
</c:when>
<c:when test="${param.age > 19}">
<p>당신은 성인입니다.</p>
</c:when>
<c:otherwise>
<p>당신의 이름은 김철수가 아니고 미성년자입니다.</p>
</c:otherwise>
</c:choose>
<%--
<%
String name = request.getParameter("name");
int age = Integer.parseInt(request.getParameter("age"));
if(name.equals("김철수")) {
%>
<p>당신의 이름은 김철수입니다.</p>
<%
} else if(age > 19) {
%>
<p>당신은 성인입니다.</p>
<%
} else {
%>
<p>당신의 이름은 김철수가 아니고 미성년자입니다.</p>
<%
}
%>
--%>
</body>
</html>
3. 조건문(choose) 태그(2)
jstl_choose_testform.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="jstl_choose_test.jsp">
# 점수를 입력하세요:
<input type="text" name="point" size="5"/>점
<input type="submit" value="확인" />
</form>
</body>
</html>
jstl_choose_test.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>Insert title here</title>
</head>
<body>
<%--
jstl choose태그와 EL을 활용하여 90점이 넘으면
"당신의 학점은 A입니다."를 출력,
80점 이상이면 B, 70점 이상이면 C,
60점 이상이면 D, 그 이외에는 F를 출력하세요.
--%>
<c:choose>
<c:when test="${param.point >= 90}">
<h4>당신의 학점은 A입니다.</h4>
</c:when>
<c:when test="${param.point >= 80}">
<h4>당신의 학점은 B입니다.</h4>
</c:when>
<c:when test="${param.point >= 70}">
<h4>당신의 학점은 C입니다.</h4>
</c:when>
<c:when test="${param.point >= 60}">
<h4>당신의 학점은 D입니다.</h4>
</c:when>
<c:otherwise>
<h4>당신의 학점은 F입니다.</h4>
</c:otherwise>
</c:choose>
</body>
</html>
4. 반복문 태그
jsti_foreach.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>Insert title here</title>
</head>
<body>
<%--
int sum = 0;
for(int n=1; n<=100; n++)
sum += n;
out.print("<h4>1부터 100까지 누적합: "+ sum +"</h4>");
--%>
<h4>1부터 100까지의 합</h4><hr/>
<%-- jstl변수 선언태그 c:set -> EL변수로 활용가능 --%>
<c:set var="sum" value="0" /> <%-- 변수 선언 --%>
<c:forEach var="n" begin="1" end="100" step="1">
<c:set var="sum" value="${sum + n}" />
</c:forEach>
<p>1~100까지의 누적합: ${sum}</p>
<h4>구구단 4단</h4> <hr/>
<c:forEach var="hang" begin="1" end="9">
4 x ${hang} = ${4*hang} <br/>
</c:forEach>
<%--
for(int dan=2; dan<=9; dan++) {
for(int hang=1; hang<=9; hang++) {
out.println(dan + "x"
+ hang + "=" + dan*hang + "<br/>");
}
}
--%>
<%-- 모든 구구단을 jstl태그로 출력하세요. --%>
<hr/>
<c:forEach var="dan" begin="2" end="9">
구구단 ${dan}단 <hr/>
<c:forEach var="hang" begin="1" end="9">
${dan} x ${hang} = ${dan*hang} <br/>
</c:forEach>
<hr/>
</c:forEach>
<h4>배열이나 컬렉션 내부값 출력</h4> <hr/>
<c:set var="arr" value="<%= new int[] {1,3,5,7,9} %>" />
<c:forEach var="i" items="${arr}">
${i}
</c:forEach>
<%--
int[] arr = new int[] {1,3,5,7,9};
for(int i : arr)
out.print(i + " ");
--%>
</body>
</html>
'IT' 카테고리의 다른 글
17.2 - JSP MVC Model 2 Architecture - FrontController란? (0) | 2022.11.02 |
---|---|
16. JSP - EL(Expression Language) (0) | 2022.10.31 |
9. JSP 자바빈 (JAVA Bean) (0) | 2022.10.22 |
12-1. jsp - JDBC프로그래밍 PreparedStatement (0) | 2022.10.12 |
11-1. JSP - JDBC 프로그래밍 select, delete (1) | 2022.10.11 |