JSP

JST - JSTL 기초

기련이 2020. 6. 12. 16:38

액션 태그(Action Tag)
  XML 형식으로 코드를 기술하는 문법.
    
  액션 태그의 종류
  1. 표준 액션 태그
     include와 forward가 있음. bean 관련 태그(중요)
  2. 커스텀 액션 태그 
 별도의 라이브러리를 설치(포함)해야만 사용할 수 있는 태그
 (대표적으로 JSTL)

  예) 표준 액션의 include
  <jsp:include page="포함할페이지.jsp">
  
  JSTL의 변수 선언(cnt라는 변수를 만들어서 0으로 초기화)
  <c:set var="cnt" value="0">
  
  
JSTL(JSP Standard Tag Library)
  웹 페이지 상에서 간단한 프로그램 제어를 처리하기 위한 
  태그 집합.

 

 

--------------------------------------------------------------

http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/

위 사이트 에서 jakarta-taglibs-standard-1.1.2.zip 을 활용

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%--  --%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSTL 기초</title>
</head>
<body>
<%-- 변수 선언 --%>
<c:set var="num1" value="100"/>
<c:set var="num2" value="200"/>
<%-- 조건 분기 처리 --%>
<c:if test="${num1 > num2}">
   <p>num1이 크다</p>
</c:if>
<c:if test="${num1 < num2}">
   <p>num2가 크다</p>
</c:if>
</body>
</html>

위 태그로 외부에서 가져온 jar파일을 활용할 수 있게해줌
jar파일은 WEB-INF의 lib폴더에저장
jar파일을 활용하여 조건을 처리한 결과페이지

 JSTL 구성
  1. core(코어) - 변수 선언, 실행 흐름 제어용 태그들
  2. format(형식지정) - 숫자, 날짜, 시간 등 출력 형식 지정
  3. sql(데이터베이스) - DB의 데이터 입력/수정/삭제/조회 기능
  4. xml - XML 문서 처리 기능
  5. function(함수) - 문자열 처리 함수 제공 
  
  사용 형식
  core -> c:if, c:forEach, c:set 등
  format -> fmt:formatNumber 등
  function -> fn:toUpperCase("hello") => HELLO

core 주요 태그
  조건 처리 태그 : if, choose/when/otherwise
  반복 처리 태그 : forEach, forTokens
  예외 처리 태그 : catch
  
format 주요 태그
  날짜 시간 지정 태그 : formatDate
  수치 지정 태그 : formateNumber

 


JSTL 활용

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="code" value="ep001" scope="request"/>
<c:set var="name" value="TV" scope="request"/>
<c:set var="price" value="1000000" scope="request"/>
<jsp:forward page="data_view.jsp"/>

data_in

에 임의의 상품데이터 입력

code : ep100

name : TV 

price : 1000000

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>제품정보</title>
</head>
<body>
<h2>제품 정보</h2>
제품 코드 : ${code}<br>
제품 명 : ${name}<br>
가격 : ${price}<br>

결과페이지

제품정보가 표출


데이터지우기

 

<title>제품정보</title>
</head>
<body>
<h2>제품 정보</h2>
<c:if test="${code == 'ep001'}">
<c:remove var="code"/>
</c:if>
제품 코드 : ${code}<br>
제품 명 : ${name}<br>
가격 : ${price}<br>

jstl 활용

<c:if test = "${code == 'ep001}"> : 만약 code가 ep001이라면

<c:remove var="code"/>  : code를 지움(remover)

jstl활용하여 제품코드를 지운 결과페이지


<title>제품정보</title>
</head>
<body>
<h2>제품 정보</h2>
<c:if test="${code == 'ep001'}">
<c:remove var="code"/>
</c:if>
<c:forEach begin="1" end="5">
제품 코드 : ${code}<br>
제품 명 : ${name}<br>
가격 : ${price}<br>
</c:forEach>

<c:forEach begin="1" end="5"> : forEach태그로 1로시작하여 5가될때까지 반복(java의 for문)

forEach로 5번 반복된 결과페이지


<c:forEach var="cnt" begin="1" end="10" step="2">
	${cnt}
	<c:if test="${cnt % 3 == 0}">
		<br>
	</c:if>
</c:forEach>
<c:forEach var="cnt" begin="1" end="10" step="2"> forEach)1부터 10까지의 수 중 2번째 수마다 입력
${cnt} cnt 변수 생성
<c:if test="${cnt % 3 == 0}"> if)만약 3으로 나누었을때 나머지가 0인 수에서
<br> 줄바꿈
</c:if> if문 닫음
</c:forEach> forEach문 닫음

결과페이지


<%
	String arr[] = {"갈비탕", "돈까스", "비빔밥"};
	pageContext.setAttribute("menu", arr);
%>
<ul>
	<c:forEach var="m" items="${menu}">
		<li>${m}</li>
	</c:forEach>
</ul>
String arr[] = {"갈비탕", "돈까스", "비빔밥"}; 갈비탕, 돈까스, 비빔밥 배열 생성
pageContext.setAttribute("menu", arr); "menu" 변수에 배열(arr)타입으로 데이터 전송
<ul> 목록타입
<c:forEach var="m" items="${menu}"> forEach로 배열"menu"을 변수"m"으로 지정하여 반복
<li>${m}</li> "m"에 목록배열을 입력
</c:forEach>
</ul>
forEach문 닫음
ul닫음

결과페이지