1. JSTL 엔진
- 항상 맨 위에 가져와야함
2. JSTL 문법 1 (out태그, set 태그)
1. JSTL만 단독으로 사용하는 경우는 없음. 주로 do에서 호출받아서 사용 (Model, ModelandView)
2. 조건문, 반복문 외에는 태그와 태그 사이에 값을 넣지 않는다.
3. out 태그
- out.print와 같은 형태의 출력 태그
4. set 태그
- setattribue와 동일한 형태의 태그
- jsp에 있는 갑을 jstl로 반환시 set을 이용하여 변환
- 속성 : scope : ① "session" => session을 생성 또는 로드, 초기화 (충돌날 수 있어 주로 초기화할때만 씀)
② "request" => value값을 var 변수에 값을 저장하는 형태 (굳이 쓰지는 않음)
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- jstl 엔진 --> <%@taglib prefix="cr" uri="http://java.sun.com/jsp/jstl/core"%> <!-- jstl 각종 함수 --> <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> <!-- jstl databse 관련 사항 --> <%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%> <!-- JSTL만 단독으로 사용하는 경우는 없음. 주로 do에서 호출받아서 사용 (Model, ModelandView)--> <% String user="홍길동"; HttpSession hs = request.getSession(); hs.setAttribute("ssdata", "15881004"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSTL 문법 사용1</title> </head> <body> </body> <!-- out 태그는 out.print와 같은 형태의 출력 태그 --> <cr:out value="값 출력"/> <!-- set 태그는 setattribue와 동일한 형태의 태그 --> <cr:set var="a" value="에이핑크"/>${a} <br><br> <!-- jsp에 있는 갑을 jstl로 반환시 set을 이용하여 변환 --> <cr:set var="b" value="<%=user %>"/>${b} <br><br> <!-- scope : session을 활성화 시 session을 생성 또는 로드도 활용할 수 있음 --> <cr:set var="c" value="jstl문법" scope="session"/>${c} 세션 초기화 전 데이터 : ${ssdata}<br> <!-- 기존 세션을 초기화 또는 삭제하고 싶을 경우 다음과 같이 사용가능 !! 세션 초기화 시 var 속성을 세션명과 동일하게 입력하면 됨 --> <cr:set var="ssdata" value="" scope="session"/> 세션 초기화 후 데이터 : ${ssdata}<br><br><br> <!-- scope : request value값을 var 변수에 값을 저장하는 형태--> <cr:set var="zz" value="aaa" scope="request"/> ${zz}<br><br> <% String aname="테스트"; %> <cr:set var="kk" scope="request"><%=aname %></cr:set> ${kk } </html>
3. JSTL 문법 2 (조건문)
1. if 문 기본
- test 에 if문의 조건식을 입력
- 조건이 맞으면 var에 true, 틀리면 false로 나타남
- 주로 set 과 함께 사용
<body> <!-- if문 선언 및 test가 조건식을 사용 var:true, false--> <cr:set var="no" value="20"/> <cr:if test="${no<100 }"> 해당 숫자는 100이하의 숫자 입니다 </cr:if> <cr:if test="${no>100 }"> 해당 숫자는 100이상의 숫자 입니다 </cr:if> <cr:if test="${no==100 }"> 해당 숫자는 100입니다. </cr:if> </body>
2. choose문을 활용한 when 조건식
- choose : 조건식의 그룹 태그<cr:set var="no2" value="C"/> <cr:choose> <cr:when test="${no2=='Y'}"> 약관에 동의 하셨습니다. </cr:when> <%--조건문2 --%> <cr:when test="${no2 eq'N'}"> 약관에 미동의 하셨습니다. </cr:when> <%--조건문3 --%> <cr:when test="${no2 ne'Y'||no2 ne 'N'}"> 약관 동의 없이 페이지 이동 </cr:when> <%--해당 조건 외에 실행 되는 태그 문법 --%> <cr:otherwise> 해당 값은 인식하지 못했습니다. </cr:otherwise> </cr:choose>
4. JSTL 문법 3 (반복문 - forEach)
1. forEach 문 - 원시배열, 클래스 배열
- items : 모든 배열값을 처리할 때 사용하는 속성값
- begin(시작값), end(종료값)
- jsp 안에 jstl 변수 절대 못씀 !!
<% //jstl에 반복문 처리 => 배열 형태로 출력(원시배열, 클래스배열) //jstl에서는 권고사항 주로 클래스 배열(ArrayList, LinkedList, Map) String data[] = new String []{"hong","kim","park","kang","jang"}; request.setAttribute("data", data); ArrayList<String> al = new ArrayList<String>(); al.add("데스트1"); al.add("데스트2"); al.add("데스트3"); al.add("데스트4"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSTL문법사용2(반복문-forEach)</title> </head> <body> <!-- items : 모든 배열값을 처리할 때 사용하는 속성값 --> <!-- jsp변수를 items 속성에서 받은 후 var로 출력 --> <!-- begin(시작값), end(종료값) --> <ol> <cr:forEach var="z" items="<%=data %>" begin="2" end="4"> <li>${z}</li> </cr:forEach> </ol> <!-- jsp Attribute로 생성된 이름을 items로 받은 후 var로 출력 --> <ol> <cr:forEach var="z" items="${data}"> <li>${z}</li> </cr:forEach> </ol> <ul> <cr:forEach var="z" items="<%=al%>"> <li>${z}</li> </cr:forEach> </ul> </body> </html>
2. 반복문 속성 값 출력
<%@page import="java.util.ArrayList"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="cr" uri="http://java.sun.com/jsp/jstl/core"%> <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> <%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%> <% ArrayList<String> al = new ArrayList<String>(); al.add("홍길동1"); al.add("홍길동2"); al.add("홍길동3"); al.add("홍길동4"); al.add("홍길동5"); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSTL문법사용3(반복문-forEach)</title> </head> <body> <!-- varStatus : 배열 번호, 순서, 갯수... 속성값 index : 배열 노드 번호 first : true(첫번째 데이터), false(그 외 데이터) last : true(마지막 데이터), false(그 외 데이터) count : 데이터 +1씩 카운팅 --> <cr:forEach var="z" items="<%=al %>" varStatus="n"> 첫번 쨰 데이터 : ${n.first} 번호 : ${n.index} 데이터 값 : ${z } 총 데이터 갯수 : ${n.count} <br> </cr:forEach> </body> </html>
5. JSTL 문법 4 (반복문 + 조건문)
-> data 배열 값 중 park 이라는 사용자만 출력
<% //jstl에 반복문 처리 => 배열 형태로 출력(원시배열, 클래스배열) //jstl에서는 권고사항 주로 클래스 배열(ArrayList, LinkedList, Map) String data[] = new String []{"hong","kim","park","kang","jang"}; request.setAttribute("data", data); %> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>JSTL문법사용2(반복문-forEach)</title> </head> <body> <!-- data 배열 값 중 park 이라는 사용자만 출력 --> <div> <cr:forEach var="z" items="${data}"> <cr:if test="${z=='park'}">${z}</cr:if> </cr:forEach> </div> </body> </html>
6. JSTL 문법 5 (2차배열~다차원배열)
1-0. 클래스 배열 출력방법 - 배열 값
<% ArrayList<ArrayList<String>> al2 = new ArrayList<ArrayList<String>>(); ArrayList<String> data = new ArrayList<String>(); data.add("김남준"); data.add("김석진"); data.add("민윤기"); data.add("정호석"); data.add("박지민"); data.add("김태형"); al2.add(data); ArrayList<String> data2 = new ArrayList<String>(); data2.add("A"); data2.add("B"); data2.add("O"); data2.add("A"); data2.add("AB"); data2.add("O"); al2.add(data2); %>
1-1. 2차 배열 데이터값 출력
<!-- 2차배열~다차원배열 --> <cr:forEach var="a" items="<%=al2 %>"> <cr:forEach var="b" items="${a }"> ${b }<br> </cr:forEach> </cr:forEach>
1-2. 2차배열 데이터를 출력하는 방식
- 출력 결과
- 문법
<cr:set var="bb" value="<%=al2.get(1) %>"/> <cr:forEach var="aa" items="<%=al2.get(0) %>" varStatus="no"> 고객명 : ${aa} / 혈액형 : ${bb.get(no.index)}<br> </cr:forEach><br>
1-3. 각각의 그룹 배열의 첫번 째 값만 출력하는 형태
<cr:forEach var="aa" items="<%=al2 %>"><!-- 2 --> ${aa.get(0) } <!-- get(배열 노드번호) --> </cr:forEach><br><br>
2-0. 원시2차배열 출력 방법 - 배열값2-1. 원시 2차 배열 출력<% String members[][]={ {"김남준","김석진","민윤기","정호석"}, {"A","B","AB","O"} }; %>
<!-- 원시 2차 배열 출력방식 --> <cr:set var="dd" value="<%=members[1] %>"/> <cr:forEach var="cc" items="<%=members[0] %>" varStatus="no"> 고객명 : ${cc} / 혈액형 : ${dd[no.index]}<br> </cr:forEach><br><br>
'Spring' 카테고리의 다른 글
JSTL 외부 페이지 로드, 변수값 전송 (0) | 2024.07.15 |
---|---|
JSTL Split을 이용하여 출력하기 (0) | 2024.07.15 |
Exception 예외처리 (0) | 2024.07.12 |
Spring - I/O + DB gallaryboard 제작 (0) | 2024.07.11 |
Spring - I/O 파일 업로드, 저장 (0) | 2024.07.11 |