본문 바로가기

Spring

JSTL 사용법

0. JSTL 기초 지식

⑴ JSTL => JSP 변수 이관 불가능
    JSP => JSTL 변수 이관 가능
⑵ JSTL 썼을 때는 j-query 사용하지 않음 => ' $ ' 가 충돌함

 

1. JSTL 라이브러리 세팅

● pom.xml 에 jstl 라이브러리 세팅 (maven repository 에서 다운)

 

2. JSTL core 로드

- 코드 예시)
          ⑴ JSTL (core): JSTL 엔진 - 필수 , JSTL (functions) : JSTL 함수 모음 - 필요에 따라 사용
          ⑵ prefix 는 본인이 원하는 대로 설정 ex: prefix="aaa" , prefix="abc"
    <%@ 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="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>JSTL 사용법</title>​

 

3. JSTL 사용법 

3-1. 변수, 배열 출력

① JSTL 은 forEach를 이용하여 반복문을 사용함 ( var :값 , begin :시작값, end:종료값 )
          - forEach 의 기본은 int로 활용해야하며 String으로는 안됨 : begin값과 end값은 int여야함

          - 코드 예시)
    <%@ 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="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>JSTL 사용법</title>
    </head>
    <body>
    <c:forEach var="no" begin="1" end="5">
    ${no }
    </c:forEach>
    </body>
    </html>​
출력 결과

② set 을 이용하여 JSP에 있는 변수를 JSTL 변수값으로 변환 
          - 코드 예시 ) jsp변수 -> jstl변수

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        <%@ taglib prefix="abc" uri="http://java.sun.com/jsp/jstl/core" %>
        <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
         <%
         //JSP 문법
            String data[] = {"a1","a2","a3"};
            int ea = data.length;
         %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>JSTL 사용법</title>
    </head>
    <body>
    <abc:set var="jstl_ea" value="<%=ea %>"></abc:set>
    데이터의 총 갯수 ${jstl_ea}<br><br>
    </body>
    </html>​

③ 배열 출력 
          - 배열 출력 시  begin , end 사용금지
          - string 배열을 사용하고 싶을 경우 클래스 배열을 활용하여 출력 또는 setAttribute를 이용해서
            출력
          - 배열 데이터 전용 속성 : items

          - 코드 예시 1 ) JSP에 있는 변수를 JSTL items로 담아서 처리 - 권장
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
        <%@ taglib prefix="abc" uri="http://java.sun.com/jsp/jstl/core" %>
        <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
         <%
         //JSP 문법
            String data[] = {"a1","a2","a3"};
            int ea = data.length;
         %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>JSTL 사용법</title>
    </head>
    <body>
    <ol>
    <abc:forEach var="arr" items="<%=data%>">
    <li>${arr}</li>
    </abc:forEach>
    </ol>
    </body>
    </html>​
       
          - 코드 예시 2 ) JSP에 setAttribute를 이용하여 JSTL 로 items에 값을 담아서 처리
         <%
         //JSP 문법
            String data[] = {"a1","a2","a3"};
            request.setAttribute("data_arr", data);
            int ea = data.length;
         %>
    <body>
    <ol>
    <abc:forEach var="arr" items="${data_arr}">
    <li>${arr}</li>
    </abc:forEach>
    </ol>
    </body>
    </html>

       

 

3-2. split 사용 ( 배열 데이터에 담긴 이미지 출력 시 )

1. split을 사용하기 위해서는 functions 엔진을 로드해야함
2. split(데이터 값,'분리할 문자'); => 원시배열로 구성함
3. 클래스 배열에 fn:split을 사용할 경우 원시배열로 바뀜 : get을 못쓰고 []로 출력해야함
4. 사용자가 업로드한 파일명도 유지하면서 개발자가 변경한 파일명으로 출력을 할 경우 forEach에 items사용불가
<cp:set var="imgs" value="${fn:split(one_list.get(4),',')}"></cp:set>
<cp:set var="imgs2" value="${fn:split(one_list.get(5),',')}"></cp:set>
<cp:set var="ea" value="${fn:length(imgs) }"></cp:set><!-- 원시배열크기, 굳이 필요는 없음 -->
<cp:forEach var="no" begin="0" end="${ea-1}">
<!-- target="_blank" : 새로운 창으로 띄움 -->
첨부파일 :<a href="./upload/${imgs2[no]}" target="_blank">${imgs[no]}</a><br> <!-- 작성자가 올린 파일명 -->
</cp:forEach>

 

 

'Spring' 카테고리의 다른 글

legacy project 생성  (0) 2024.07.09
Database 연결 (Spring)  (0) 2024.07.09
Spring 의 Controller  (0) 2024.07.09
웹 경로에서 프로젝트 명 빼기  (0) 2024.07.08
Spring 기초  (0) 2024.07.08