* JSTL
: 커스텀 태그를 표준으로 만든 태그 라이브러리 -> XML 처럼 사용자가 태그를 정의해서 사용 가능
: <접두어:태그> 형식, 사용 시 태그 라이브러리 정의 필수 <%@ taglib prefix="접두어" uri="uri값" %>
0. JSTL 태그 종류
라이브러리 | 하위기능 | 접두어 | uri 값 |
코어 ★★★ | 변수 지원 흐름 제어 URL 처리 |
c | http://java.sun.com/jsp/jstl/core |
xml | XML 코어 흐름 제어 XML 변환 |
x | http://java.sun.com/jsp/jstl/xml |
국제화 ★ | 지역 메시지 형식 숫자 및 날짜 형식 |
fmt | http://java.sun.com/jsp/jstl/fmt |
데이터베이스 | SQL | sql | http://java.sun.com/jsp/jstl/sql |
함수 | 콜렉션 처리 String 처리 |
fn | http://java.sun.com/jsp/jstl/functions |
1. 코어 : 접두어 c (<c:set> <c:remove>)
: 태그 라이브러리 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
01. 변수 지원
★ - set: 변수 설정 ---> EL 변수 값 설정 (생성, 변경)
<c:set var="변수명" value="값" [scope="영역"]/>
<c:set var="변수명" [scope="영역"]> 값 </c:set>
- remove: 변수 삭제
<c:remove var="변수명" [scope="영역"/>
※ scope 영역을 지정하지 않을 경우, 모든 영역의 "변수명"이 삭제되므로 주의할 것.
ex. 표현언어로 출력되는 변수
<% String str="JSP변수"; request.setAttribute("st",str); %> 변수 str1= ${str} <br> //리퀘스트 객체의 set 태그로 정의된 변수가 아니므로 출력되지 않음 변수 str2= ${st} <br> //set 태그로 정의되었기 때문에 출력됨 |
02. 흐름 제어
★★ - if: 조건이 true일 경우 바디의 내용을 실행
<c:if test="조건">
true일 경우 실행될 내용
</c:if>
※ if는 특정 조건이 참일 경우에만 실행 ---> else가 없으므로, if를 여러번 쓰거나 choose 사용
☆ - choose - when - otherwise : 다중 조건 처리 ---> switch - case - default와 동일한 형식
<c:choose>
<c:when test="${member.level=='trial'}">
실행될 내용1
</c:when>
<c:when test="${member.level=='regular'}">
실행될 내용2
</c:when>
<c:otherwise>
실행될 내용3
</c:otherwise>
</c:choose>
★★ - forEach: 콜렉션, Map의 각 항목을 처리
01. 집합이나 콜렉션 데이터 사용 ★
<c:forEach var="변수" items="아이템"> --> items의 자료구조 값을 var에 넣어 차례대로 출력
... ${변수 사용} ...
</c:forEach>
02. 특정 범위값만큼 반복 ★
<c:forEach var="변수" begin="변수 시작값" end="변수 끝값" [step="값"]>
${변수 사용}
</c:forEach>
03. varStatus 속성
<c:forEach var="item" items="<%=someItemList %>" varStatus="status">
${status.index+1} 번째 항목 : ${item.name}
</c:forEach>
- forTokens: 구분자로 분리한 각각의 토큰을 처리 ---> 구분자는 여러 개 사용 가능!
<c:forTokens var="alphabet" items="a,b.c,d;e,f/g,h.i,j;k,l/m,n" delims=",/.;">
<b>${alphabet}</b>
</c:forTokens>
+) index: 루프 실행에서 현재 인덱스 count: 루프 실행 횟수 current: 콜렉션 중 현재 루프에서 사용할 객체
items: 순차적인 자료구조 (배열, list, map) -> 단, request로 공유된 name만 가능!
begin: 변수 시작값 end: 변수 종료 값 step: 변수 증가치 ( begin:1 end:10 step:2 -> 1,3,5,7,9 )
03. URL 처리
☆ - import: url을 사용해 다른 자원(내/외부 페이지)의 결과를 삽입
: 상대 url을 import 시 <jap:include>와 동일한 동작
<c:import url="URL" [var="변수명"] [scope="영역"] [charEncoding="인코딩세팅"]>
<c:param name="파라미터명" value="값"/>
...
</c:import>
- redirect: 지정한 경로로 이동 (새로 페이지를 불러오는 방식)
<c:redirect url="URL" [context="콘텍스트 경로"]>
<c:param name="이름" value="값" />
</c:redirect>
- url: url 재작성 (절대경로, 상대경로를 알맞게 생성)
: 웹 컨텍스트 내에서 절대경로 사용 시 컨텍스트 경로 자동 추가
<c:url value="URL" [var="변수명"] [scope="영역"]>
<c:param name="이름" value="값" />
</c:url>
04. 기타 태그
★ - out: jspWriter의 내용을 처리 후 출력 (보통 EL 쓰는데 병행함)
- catch: 예외 처리
<c:catch var="err">
<%=10/0%>
</c:catch>
<h3>오류 : <c:out value="${err}"/></h3>
2. 국제화 : 접두어 fmt (<c:set> <c:remove>)
: 태그 라이브러리 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
01. 숫자 및 날짜
- formatNumber: 숫자 포맷
★ - formatDate: Date 객체를 포맷 ---> SimpleDataFormat 과 동일한 효과
속성 | 표현식/EL | 타입 | 설명 |
value | 사용 가능 | java.util.Date | 포맷할 날짜 및 시간 값 |
type | 사용 가능 | String | 날짜, 시간, 둘다 할지 여부 |
dateStyle | 사용 가능 | String | 날짜 포맷팅 스타일 |
timeStyle | 사용 가능 | String | 시간 포맷팅 스타일 |
pattern | 사용 가능 | String | 직접 파싱할 때 사용할 양식 |
var | 사용 불가 | String | 결과 저장할 면수명 |
scope | 사용 불가 | String | 변수 저장할 영역 |
3. 함수 : 접두어 fn
: 태그 라이브러리 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
4. 데이터베이스 : 접두어 sql
: 태그 라이브러리 <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
- 서버 연결 <sql:setDataSource>
<sql:setDataSource var="conn" driver="oracle.jdbc.driver.OracleDriver"
url="jdbc:oracle:thin:@localhost:1521:xe"
user="scott"
password="tiger"/>
- DML(insert, update, delete) <sql:update>
<sql:update dataSource="${conn}"> //dataSource="${서버 연결에 쓴 변수명(var)}"으로 서버에 연결
INSERT INTO test (num, name) VALUES (1, '홍길동') //바디에 sql문 삽입
</sql:update>
- select <sql:query>
<sql:query var="rs" dataSource="${conn}"> //var=resultSet 역할 ---> items="${rs.rows}" 처럼 사용
SELECT * FROM test
</sql:query>
- parameter 값 입력 <sql:param>
<sql:query var="rs" dataSource="${conn}">
SELECT * FROM test WHERE name=?
<sql:param>홍길동</sql:param> //파라미터값 필요한 태그의 sql문 아래에 차례대로 삽입
</sql:query>
'수업 > 정리' 카테고리의 다른 글
220329 model2_ 로그인/아웃, 메인, 정보 수정/삭제 (0) | 2022.03.29 |
---|---|
220328 model2_ 회원가입 (0) | 2022.03.28 |
220324 model2_ JavaServlet, 표현언어(EL) (0) | 2022.03.24 |
220323 자료실3_삭제(첨부파일) , model2_Java Servlet (0) | 2022.03.23 |
220322 자료실2_입력, 수정 (0) | 2022.03.22 |