Back/JSTL

JSTL 문법 - 1

2023. 4. 14. 11:54
목차
  1. JSTL을 가지고 할 수 있는 일
  2. 문자열을 처리하는 함수 호출을 제외한 나머지 기능들은 모두 커스텀 액션 형태로 제공된다.
  3. JSTL을 구성하는 작은 라이브러리들
  4. <c:set> 커스텀 액션의 사용 방법
  5. <c:set> 커스텀 액션의 사용 방법
  6. forward 예시
  7. ProductInfoView.jsp
  8. <c:remove> 커스텀 액션 사용 방법
  9. <c:if> 커스텀 액션의 사용 방법
  10. if 예제
  11. <c:choose> 커스텀 액션의 사용 방법
  12. <c:forEach> 커스텀 액션 사용 방법
  13. forEach 예시
  14. forEach 추가
  15. forEach배열 예시
  16. LaunchMenuView.jsp

JSTL 이란

  • JSP 표준 태그 라이브러리의 약자(JSP Standard Tag Library)이다.
  • JSP 페이지를 작성할 때 유용하게 사용할 수 있는 여러 가지 커스텀 액션과 함수가 포함되어 있는 라이브러리이다.

JSTL을 가지고 할 수 있는 일

  • 간단한 프로그램 로직의 구사(자바의 for, if, 변수 선언 등의 로직)
  • 다른 JSP 페이지 호출(<c:redirect>, <c:import>)
  • 날짜, 시간, 숫자의 포맷
  • JSP 페이지 하나를 가지고 여러 가지 언어의 웹 페이지 생성
  • 데이터베이스로의 입력, 수정, 삭제, 조회
  • XML 문서의 처리
  • 문자열을 처리하는 함수 호출

문자열을 처리하는 함수 호출을 제외한 나머지 기능들은 모두 커스텀 액션 형태로 제공된다.

JSTL을 구성하는 작은 라이브러리들

코어 라이브러리 사용하기

<c:set> 커스텀 액션의 사용 방법

  • <c:set>은 변수를 선언하고 초기값을 대입하는 커스텀 액션이다.
  • 자바 프로그램에서 변수를 선언할 때는 기본적으로 변수의 타입과 이름을 기술하고, 선택적으로 초기값을 기술한다.
  • <c:set> 커스텀 액션을 이용해서 변수를 선언할 때는 변수의 타입을 쓰지 않는다.
int num = 100;
->
<c:set var = "num" value = "100" /> 
  • value attribute 값 위치에 EL 식을 쓸 수도 있다.
<c:set var = "sum" value = "${num1 + num2}" /> 

<c:set> 커스텀 액션의 사용 방법

<%@ page contentType="text/html; charset=euc-kr" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="num1" value="7" />
<c:set var="num2" value="9" />
<c:set var="result" value="${num1*num2}" />
<html>
    <head><title>곱셈 프로그램</title></head>
    <body>
        ${num1}과 ${num2}의 곱은? ${result}
    </body>
</html>

  • <c:set> 액션을 이용해서 선언한 변수는 page 데이터 영역의 attribute가 된다.
  • <c:set> 태그에 scope 속성을 추가하고 page, request, session, application 중 한 값을 지정하면 선언된 변수가 page, request, session, application 데이터 영역의 attribute가 되도록 지정하는 것도 가능하다.
<c:set var = "PRICE" value = "1500" scope = "request/>
  • scope 속성에 request라는 값을 지정하고 나서 forward 메서드를 통해 다른 JSP 페이지를 호출하면 그 JSP 페이지 안에서도 선언된 변수를 사용할 수 있다.

forward 예시

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var = "CODE" value = "80012" scope = "request" />
 <c:set var = "NAME" value = "온도습계" scope = "request" />
 <c:set var = "PRICE" value = "1500" scope = "request" />
 <jsp:forward page = "ProductInfoView.jsp" />

ProductInfoView.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>상품 정보</title>
</head>
<body>
     <h3>상품 정보</h3>
     상품 코드 : ${CODE} <BR>
     상품명 : ${NAME} <BR>
     단가 : ${PRICE} <BR>
</body>
</html>
  • Test2.jsp 파일을 불렀는데 ProductInfo 파일이 불려 오는 것을 볼 수 있다.

<c:remove> 커스텀 액션 사용 방법

  • c:set 액션을 이용해서 선언한 변수는 page, request, session, application 데이터 영역의 어트리뷰트로 저장되므로, 자바 변수와 달리 인위적으로 삭제해야 할 필요가 있다.
  • c:remove 커스텀 액션은 이런 어트리뷰트를 삭제하는 기능을 한다.

<c:if> 커스텀 액션의 사용 방법

  • 자바의 if와 비슷한 역할을 하고, 사용법이 조금 다르다
if(num1> num2){
    System.out.println("num1이 더 크다.")
}
// ------>
<c:if test = "${num1 > num2}">
    num1이 더 크다.
</c:if>

if 예제

<%@ 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>최대값 구하기</title>
</head>
<body>
    최대값:
    <c:if test="${param.NUM1 - param.NUM2 >= 0}">
        ${param.NUM1}
    </c:if>
    <c:if test="${param.NUM1 - param.NUM2 < 0}">
        ${param.NUM2}
    </c:if>
</body>
</html>

<c:choose> 커스텀 액션의 사용 방법

  • 자바의 switch 문과 비슷한 역할을 한다.
  • <c:when> , <c:otherwise> 라는 커스텀 액션과 함께 사용되며, 두 커스텀 액션은 각각 switch문의 case default절과 비슷한 역할을 한다.
switch(num){
case 0 :
    System.out.println("처음 뵙겠습니다.")
    break
case 1 :
    System.out.println("반갑습니다.")
    break
default :
    System.out.println("안녕하세요")
    break
}
// ------>
<c:choose>
    <c:when test = "${num == 0}">
        처음 뵙겠습니다. <br>
    <c/:when>
    <c:when test = "${num == 1}">
        반갑습니다. <br>
    <c/:when>
    <c:otherwise>
        안녕하세요 <br>
    <c/:otherwise>
<c/:choose>

<c:forEach> 커스텀 액션 사용 방법

  • 자바의 for문에 해당
  • 특정 HTML코드를 지정된 횟수만큼 반복해서 출력 가능
for(int cnt = 0 ; cnt < 10 ; cnt++){
    System.out.println("야호.")
    break
}
//-------->
<c:forEach begin="1" end="10">
    야호 <br>
</c:forEach>
  • 반복 출력할 코드 안에서 카운터 변수의 값을 사용해야 할 경우에는 <c:forEach> 태그 안에 var라는 어트리뷰트를 쓰고, 그 값으로 카운터 변수의 이름을 지정하면 된다.
<c:forEach var = "cnt" begin="1" end="10">
    ${cnt} <br>
</c:forEach>
  • 카운터 변수의 값은 기본적으로 1씩 증가하지만, 그 값을 바꾸고 싶다면 step 어트리뷰트를 추가하여 증가치 지정이 가능하다.
<c:forEach var = "cnt" begin="1" end="10" step = "2">
    ${cnt} <br>
</c:forEach>

forEach 예시

<%@ 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>메아리</title>
</head>
<body>
    <c:forEach var="cnt" begin="1" end="5">
        <FONT size=${cnt}>야~호~</FONT><br>
    </c:forEach>
</body>
</html>

forEach 추가

  • <c:forEach> 커스텀 액션의 items 어트리뷰트를 이용하면 여러 개의 항목으로 구성된 데이터를 순서대로 출력하는 일도 할 수 있다.
<c:forEach var = "str" items = "${arr}"> 
//arr= 배열의 이름, str = 배열의 각 항목을 저장할 변수
    ${str} <br>
</c:forEach>
  • items 어트리뷰트를 이용해서 처리할 수 있는 데이터
  • 배열
  • java.util.Collection 객체
  • java.util.Iterator 객체
  • java.util.Enumeration 객체
  • java.util.Map 객체
  • 콤마(,)로 구분된 항목들을 포함한 문자열

forEach배열 예시

<%@ page contentType="test/html; charset=euc-kr" %>
<%
    String arr[] = {"불고기 백반", "오므라이스", "콩국수"};
    request.setAttribute("MENU", arr);
%>
<jsp:forward page="LunchMenuView.jsp" />

LaunchMenuView.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>구내 식당</title>
</head>
<body>
    <h3>오늘의 점심 메뉴입니다.</h3>
    <ul>
        <c:forEach var="dish" items="${MENU}">
            <li>${dish}</li>
        </c:forEach>
    </ul>
</body>
</html>

'Back > JSTL' 카테고리의 다른 글

JSTL 문법 - 2  (0) 2023.04.14
  1. JSTL을 가지고 할 수 있는 일
  2. 문자열을 처리하는 함수 호출을 제외한 나머지 기능들은 모두 커스텀 액션 형태로 제공된다.
  3. JSTL을 구성하는 작은 라이브러리들
  4. <c:set> 커스텀 액션의 사용 방법
  5. <c:set> 커스텀 액션의 사용 방법
  6. forward 예시
  7. ProductInfoView.jsp
  8. <c:remove> 커스텀 액션 사용 방법
  9. <c:if> 커스텀 액션의 사용 방법
  10. if 예제
  11. <c:choose> 커스텀 액션의 사용 방법
  12. <c:forEach> 커스텀 액션 사용 방법
  13. forEach 예시
  14. forEach 추가
  15. forEach배열 예시
  16. LaunchMenuView.jsp
'Back/JSTL' 카테고리의 다른 글
  • JSTL 문법 - 2
잘잔디
잘잔디
4학년이 되고 취업 준비를 위해 2023-01-01부터 공부한 내용을 정리한 블로그입니다.
잘잔디
MBCS 공부일지
잘잔디
전체
오늘
어제
  • 분류 전체보기 (217)
    • 파이썬 (28)
      • 파이썬 이론 (8)
      • NumPy (3)
      • Pandas (6)
      • 파이썬 시각화 (8)
      • 응용 (2)
    • Java (3)
    • Back (38)
      • DataBase이론 (12)
      • MySQL (2)
      • JSP (8)
      • JSTL (2)
      • Spring (0)
      • Django (8)
      • MongoDB (6)
      • FastAPI (0)
    • Front (8)
      • HTML (3)
      • CSS (2)
      • JS (1)
    • 회고록 (10)
    • 알고리즘 문제 풀이 (95)
      • 알고리즘 이론 공부 (14)
      • 프로그래머스 (69)
      • 백준 (12)
    • 머신러닝 (0)
    • 딥러닝 (0)
    • Git (3)
    • R 프로그래밍 (3)
    • 빅데이터 관리 (16)
      • 리눅스 (4)
      • Hadoop (12)
    • AWS (2)
    • 일상 (10)
      • 책 리뷰 (5)
      • TOEIC (2)
      • 자잘하게 공부한 것들 (2)
    • 사이버보안 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • backend
  • 즐거웠다
  • db
  • JS
  • Encore
  • playdata
  • 독산역
  • HTML
  • 골드
  • 객체지향
  • web
  • OOP
  • Database
  • 백준
  • JavaScript
  • 이중우선순위 큐
  • Java
  • CSS
  • git

최근 댓글

최근 글

hELLO · Designed By 정상우.
잘잔디
JSTL 문법 - 1
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.