wintertreey 님의 블로그

JSTL 본문

백엔드/JSP

JSTL

wintertreey 2024. 7. 3. 09:02

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}&nbsp;&nbsp;
</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}&nbsp;
</c:forEach>
<br>
* 문자열 분할 후 출력<br>
<c:forTokens var="animal" items="cat,dog,bunny*pig,dolpin" delims=",*">
동물 : ${animal }&nbsp;
</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