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 |