본문으로 바로가기

JSTL(Java server page Standard Tag Library)란?

category WEB/Servlet,JSP 2020. 6. 12. 01:58

JSTL은 태그를 이용하여 JSP 코드를 관리하고 개발을 쉽게 해주는
태그 라이브러리입니다.
라이브러리이기 때문에 추가로 다운로드 받아서 사용합니다
그리고 JSP 페이지에서 아래의 세줄을 선언해줘야 합니다.

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

태그의 종류에는 core, format, function, xml, sql이 있습니다.
각 태그의 속성들은 양이 방대하기 때문에 공식문서로 대체하고
자주 사용되는 예제들만 추려보겠습니다.

<c:set>
  • 변수를 선언하는 태그입니다.
  • <c:set var="변수이름" value="값"/>
  • 이렇게 선언하면 ${ 변수이름 }으로 사용할 수 있습니다.
  • 기본 scope는 pageScope입니다.
<c:remove>
  • 변수를 제거하는 태그입니다.
  • <c:remove var="변수이름"/>
  • 특정 영역의 변수만 제거하고 싶다면
  • <c:remove var="변수이름" scope="request"/>

사용예제

<%@ 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 (JSP Standard Tag Library) : Java 언어를 태그로 사용하여 쓸 수 있다.
         CORE, XML, FMT, SQL, Function과 같은 기능들이 있다.
         JSTL은 위에 taglib을 선언해줘야 사용할 수 있다.
         싱글톤이다.
     --%>
     <h3> 변수 선언</h3>
     <c:set var="su" value="10"/>
     <c:set var="imsi" value=" ${20}"/>
     <h3>${ su } / ${ imsi }</h3>
     <c:set var="msg" value="${'Hi'}" scope="page"/> 
    <%-- scope를 명시해서 데이터가 살아있는 범위를 정할 수 있다 
            page(기본값), request, session, application--%>
     <c:set var="age" value="23"/>
     <div>
         메시지 : ${ msg } <br>
         나이 : ${ age }
     </div>
     <br><br>
     <%-- Member 객체를 c:set을 이용하여 각 속성값을 setter 해줘서 
           데이터를 삽입해준다. --%>
     <jsp:useBean id="member" class="com.java.el.MemberInfo"/>
     <c:set target="${member}" property="name" value="홍길동"/> <%--value = ${param.name} --%>
     <c:set target="${member}" property="id" value="abc123"/>
     <c:set target="${member}" property="pwd" value="1234"/>

     <h3>${member.name}</h3>
     <h3>${member.id}</h3>
     <c:set var="id" value="${member.id}" scope="session"/> <%-- 세션스코프로 등록하여 세션으로 이용가능 --%>
     <h3>${member.pwd}</h3>

     <h3>${sessionScope.id}</h3>
     <br><br>

     <h3>변수제거</h3>
     <c:remove var="age"/> <%-- remove는 기본값으로 이페이지에서만 데이터를 지운다 --%>
     <c:remove var="id" scope="session"/> <%-- 세션스코프를 지정해주면 세션을 지운다 --%>

     <div>${age}, ${id}</div>

</body>
</html>