Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

wintertreey 님의 블로그

JSTL 본문

JSP

JSTL

wintertreey 2024. 7. 3. 09:02

JSTL은 JavaServer Pages Standard Tag Library의 약어로, Java 코드를 바로 사용하지 않고 HTML 태그(<>) 형태로 직관적인 코딩을 지원하는 라이브러리. 

JSP에서 (반복과 조건, 데이타 관리 포맷, XML 조작, 데이타베이스 액세스)을 구현하는 커스텀 태그 라이브러리 모음이다.

시간, 날짜, 숫자의 포맷이나 문자열 가공등의 처리에서 비즈니스로직과 프리젠테이션 로직을 분리할 수 있게 해준다.

JSTL은 EL(Expression Language)를 사용하여 표현한다.

 

 라이브러리 기능   접두어
 코어  일반 프로그램 언어에서 제공하는 변수선언, 조건/제어/반복문등의 기능을 제공한다.  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 표준라이브러리(JSP Standard Tag Library) 이다. 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