본문 바로가기
Study/중앙정보처리학원과정

55일차. <JSTL>의 사용 방법

by 얏옹이 2023. 1. 9.
반응형

JSTL의 정식 명칭은 <Javaerver page Standand Tag Languege> 이다.

 

HTML 코드 내에 Java코드인 스크립트릿을 사용할때 <%= KIA >대신 ${KIA}로 표현 가능하며 HTML 태그 내에서 IF문과 IF ELSE, FOR Each 문도 사용 가능하게 해준다.

 

사용하기 위해서는 LIbrary를 추가해줘야한다.

 

먼저 라이브러리를 다운받기 위해 Maven Repository 사이트로 방문해줄것이다.

 

Maven Repository 새창 바로가기

 

검색창에 jstl이라고 검색하자

 

 

그럼 수많은 JSTL 라이브러리가 검색 되는데. Maven Repository에서 어떠한 라이브러리를 다운받을때 어떤걸 선택해야될지 모를때가 많다. 이럴때 가장 실패할 확률이 낮은 방법은 바로 "많이 사용된" 라이브러리를 다운받는것이다.

 

 

동일한 이름의 라이브러리가 많지만. 가장 많이 사용된것은 두번째 라이브러리다. 이걸 사용해주기로 하자. 클릭해준다.

 

 

그럼 이런식으로 해당 JSTL 라이브러리에 대한 버전별 정보가 나와있다. 어느시점에 무슨 버전이 나와있는지가 나와있다.

 

이것도 가장 많이 사용된 1.2 버전을 사용해주겠다. 1.2 버전을 클릭하자.

 

 

그럼 이렇게 1.2버전에 대한 다운로드를 지원한다. Files에서 우리는 jar 파일을 다운받자. 나중에 Spring을 배우게 된다면 

 

Spring에서는 하단에 Maven이라는 태그를 사용하여 간단하게 적용이 가능하다.

 

 

이 문구를 Spring에서 그냥 복사해서 붙여다놓으면 라이브러리 다운로드가 알아서 진행된다고 기억하고 있다. 이부분은 나중에 Spring때 다시 언급 하겠다.

 

반응형

 

Jar파일을 다운받았다면 해당 파일을 WEB-INF - lib 폴더 안에 넣어준다.

 

 

그리고 jsp 파일을 생성하고 지시자(<%@) 를 사용하여 Page에 대한 JSTL 정의를 내려줘야한다

 

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>

Page 가장 상단에 지시자를 사용하여 이렇게 정의를 내려준다. 이는 JSTL을 사용하겠다는 의미이며, 원래 JSTL을 사용할때 매번 URI의 전체경로를 다 지정해줘야하지만, 이를 Prefix="c"라는 설정으로, 

 

<http://java.sun.com/jsp/jstl.core:IF> 라고 작성해야하는걸 <c:if>로 줄여서 작성할수 있게 설정해주겠다 라는 뜻이다.

 

그럼 이제 기본적인 주요 Core태그에 대해서 알아보겠다.

태그 설명
<c:set> 변수에 값을 설정하는 태그
<c:remove> 변수에 설정된 값을 제거하는 태그
<c:if> 기본적인 if 조건문 태그
<c:choose> 여러 조건에 따라 처리를 나눠줄때 사용하는 태그(예:if else if)
<c:foreach> 반복문(예: java에서의 for문)
<c:forTokens> 구분자로 분리된 각각의 토큰을 처리할때 사용하는 태그
<c:import> 외부에서 자원을 사용하기 위해 url을 지정하여 import해주는 태그
<c:redirect> 지정한 경로로 이동하는 태그(예:response.sendRedirect와 같은 기능)
<c:out> 데이터를 출력할때 사용하는 태그, 표현식인 <%= >를 대체할수 있다.

 

가볍게 예시를 살펴보겠다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<c:set var="test1" value="변수를 생성하는 태그"></c:set>
	\${test1}=${test1}<br/>
</body>
</html>

 

 

이런식으로 사용이 가능하다. 

 

var는 변수 명을 의미하며, 그 변수안에 값을 문자열인 "변수를 생성하는 태그" 라고 설정해주고

 

출력을 의미하는 <%= > 스크립트릿 대신 ${변수명} 으로 대체해서 출력해주었다.

 

IF문도 사용이 가능하다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<c:set var="result" value="13"></c:set>
	<c:choose>
		<c:when test="${result==12}"><h2>result는 12입니다</h2></c:when>
		<c:when test="${result != 12}"><h2>result는 12가 아닙니다.</h2></c:when>
	</c:choose>
</body>
</html>

 

result라는 변수를 지정하고 값을 13을 넣어주었다.

 

조건이 하나일때는 <c:if>로 사용이 가능하지만 if else 같이 조건이 여러개일때는

 

<c:choose>로 묶어준후 <c:when>으로 각각의 조건을 설정해주면 if else와 같은 여러개의 조건을 설정해줄수 있다.

 

현재는 result가 12가 아니라서 12가 아니라고 나온다.

 

result를 12로 바꿔보고 다시 실행해보면

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<c:set var="result" value="12"></c:set>
	<c:choose>
		<c:when test="${result==12}"><h2>result는 12입니다</h2></c:when>
		<c:when test="${result != 12}"><h2>result는 12가 아닙니다.</h2></c:when>
	</c:choose>
</body>
</html>

 

 

정상적으로 조건에 의해 수행되는 결과가 달라지는것을 확인할수 있다.

반응형