wintertreey 님의 블로그
JSTL 본문
JSTL은 JavaServer Pages Standard Tag Library의 약어로, Java 코드를 바로 사용하지 않고 HTML 태그(<>) 형태로 직관적인 코딩을 지원하는 라이브러리.
JSP에서 반복과조건,데이타관리포맷,XML조작,데이타베이스액세스을 구현하는 커스텀 태그 라이브러리 모음이다.
시간, 날짜, 숫자의 포맷이나 문자열 가공등의 처리에서 비즈니스로직과 프리젠테이션 로직을 분리할 수 있게 해준다.
JSTL은 ELExpressionLanguage를 사용하여 표현한다.
라이브러리 | 기능 | 접두어 |
코어 | 일반 프로그램 언어에서 제공하는 변수선언, 조건/제어/반복문등의 기능을 제공한다. | c |
포맷팅 | 숫자,날짜,시간을 포맷팅 하는 기능과 국제화, 다국어 지원 기능을 제공한다. | fmt |
함수 | 문자열을 처리하는 함수를 제공한다. | fn |
데이터베이스 | 데이터베이스의 데이터를 입력/수정/삭제/조회하는 기능을 제공한다. | sql |
XML처리 | XML 문서를 처리할 때 필요한 기능을 제공한다. | x |
scope 종류
pageScope: 현재 Servlet or JSP에서만 사용 가능
1페이지
requestScope : 요청받은 페이지Servlet/jsp와 요청을 위임받은 페이지Servlet/jsp에서 사용가능하다
최소2페이지이상
sessionScope : 현재사이트에 접속한 브라우저당 1개씩 생성,
브라우저가 종료되거나 session이 만료될 때 까지 유지
ex) session에 로그인정보 기록해두면 브라우저가 종류되거나,
로그아웃 되기전까지 로그인 상태 유지
applicationScope : 하나의 웹 애플리케이션 당 1개만 생성되는 객체
서버시작시 생성되고 종류시까지 유지
같은 웹브러우저 내에서 요청되는 페이지들은 같은 객체를 공유하게 된다
변수처리 연습
<c:set var="irum" value="홍길동" scope="page"></c:set>
이름: <c:out value="${irum }"></c:out>
<br>
<c:set var="ir" scope="session">공기밥</c:set>
이름: <c:out value="${ir }"></c:out>
<br>
<c:remove var="irum"/>
이름: <c:out value="${irum }"></c:out>
<br>
<c:remove var="ir" scope="session"/>
이름: <c:out value="${ir }"></c:out>
<br>
<c:set var="abc" value="${header['User-Agent'] }" scope="page"></c:set>
abc값은 (현재 사용중인 브라우저 정보) <c:out value="${abc }"/>
<br>
<c:set var="su1" value="10" />
<c:set var="su2">20</c:set>
두 수의 합은 ${su1+su2 }

조건문 연습
** 조건 판단문 if **<br>
<c:set var="nice" value="star"/> <!-- value값 바꾸면 안나옴 -->
<c:if test="${nice=='star' }"><!-- ${nice eq 'star'} -->
if 연습 : nice 값은 <c:out value="${nice}"></c:out>
</c:if>
<br>
<br>** 조건 판단문 choose **<br>
<c:choose>
<c:when test="${nice== 'moon' }">
달 <c:out value="${nice }"></c:out>
</c:when>
<c:when test="${nice== 'star' }">
별 <c:out value="${nice }"></c:out>
</c:when>
<c:otherwise>어떠한 조건도 만족하지 않았다</c:otherwise>
</c:choose>
<br><br>
<c:choose>
<c:when test="${empty param.myid }">
<form>
아이디: <input type="text" name="myid">
<input type="submit">
</form>
</c:when>
<c:when test="${param.myid=='admin' }">
와우관리자군요
</c:when>
<c:otherwise>
환영합니다. 회원 <c:out value="${param.myid }"/>님!
</c:otherwise>
</c:choose>

반복문 연습
연습1 :
<c:forEach var= "i" begin="1" end="10" step="2">
${i}
</c:forEach>
<br>
구구단(3단)<br>
<c:forEach var= "i" begin="1" end="9">
3 * ${i}= ${3*i}<br>
</c:forEach>
<br>
<%
HashMap<String, Object> map= new HashMap<>();
map.put("name", "한국인");
map.put("today", new Date());
%>
<c:set var="m" value="<%=map %>"></c:set><!-- arraylist는 순서있지만, map은 순서없음. -->
<c:forEach var="i" items="${m}">
${i.key} - ${i.value}<br>
</c:forEach>

배열생성, 문자열 분할
* 배열 생성 후 출력 <br>
<c:set var="arr" value="<%=new int[]{1,2,3,4,5} %>"></c:set>
<c:forEach var="a" items="${arr}" begin="2" end="4" step="1">
${a}
</c:forEach>
<br>
* 문자열 분할 후 출력<br>
<c:forTokens var="animal" items="cat,dog,bunny*pig,dolpin" delims=",*">
동물 : ${animal }
</c:forTokens>

숫자 및 날짜
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
숫자1 : <fmt:formatNumber value="12345.678" type="number"/><br>
숫자2 : <fmt:formatNumber value="12345.678" type="number" pattern="#,##0"/><br>
숫자+ : <fmt:formatNumber value="12345.678" type="currency"/><br>
숫자++ : <fmt:formatNumber value="12345.678" type="percent"/><br>
숫자3 : <fmt:formatNumber value="12345.678" pattern="#,##0.0"/><br>
숫자4 : <fmt:formatNumber value="12345.678" pattern="0,000.0" /><br>
숫자5 : <fmt:formatNumber value="12" pattern="0,000.0" /><br>
<br>
<c:set var="now" value="<%=new Date() %>"></c:set>
날짜: <fmt:formatDate value="${now }" type="date"/><br>
시간: <fmt:formatDate value="${now }" type="time"/><br>
모두: <fmt:formatDate value="${now }" type="both"/><br>
모두: <fmt:formatDate value="${now }" type="both" pattern="yyyy년 MM월 dd일"/><br>

https://yunamom.tistory.com/179
[JSTL] JSTL 기초 정리 문법/작성법
✨1. JSTL 이란 1. JSP 표준라이브러리JSPStandardTagLibrary 이다. 2. JSP에서 반복과조건,데이타관리포맷,XML조작,데이타베이스액세스을 구현하는 커스텀 태그 라이브러리 모음이다. 3. 시간,
yunamom.tistory.com
https://everyday-coding-diary.tistory.com/28
jstl scope 4가지 종류
pageScope: 현재 Servlet or JSP에서만 사용 가능 1페이지 requestScope : 요청받은 페이지Servlet/jsp와 요청을 위임받은 페이지Servlet/jsp에서 사용가능하다
everyday-coding-diary.tistory.com
'백엔드 > JSP' 카테고리의 다른 글
JSTL DB연동, Servlet 연습 0 | 2024.07.03 |
---|---|
Redirect 리다이렉트 vs Forward 포워드 방식 0 | 2024.07.02 |
MVC Model2: DB 연동하기 0 | 2024.07.02 |
MVC Model2: 인터페이스를 사용한 Controller 0 | 2024.07.01 |
빌드 관리 도구 maven gradle 0 | 2024.07.01 |