본문 바로가기

카테고리 없음

JSP() - JSTL(JSP Standard Tag Library)/jar/core 태그/format 태그/

1. JSTL(JSP Standard Tag Library)

웹페이지 상에서 간단한 프로그램 제어를 처리하기 위한 태그 집합

 

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

 

Index of /dist/jakarta/taglibs/standard/binaries

 

archive.apache.org

 

다운받아서

위에 두 jar파일 lib에 추가하기

 

 

JSTL의 변수 선언

<c:set var="cnt" value="0">

 

2. JSTL 구성

1. core(코어) - 변수 선언, 실행 흐름 제어용 태그들 
2. format(형식지정) - 숫자, 날짜, 시간 등 출력 형식 지정
3. sql(데이터베이스) - DB의 데이터 입력/수정/삭제/조회 기능
4. xml - XML 문서 처리 기능
5. function(함수) - 문자열 처리 함수 제공

 

 

 

jstl_ex.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%-- JSTL 태그 선언 --%>
<!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" scope="request" />
	<%-- request 영역에 속성 생성됨. scope설정 안하면 pageContext영역에 기본으로 생성됨 --%>
	<c:set var="num2" value="200" scope="request" />
	<%-- 조건 분기 처리 --%>
	<c:if test="${num1 > num2}">
		<p>num1이 크다</p>
	</c:if>
	<c:if test="${num1 < num2}">
		<p>num2가 크다</p>
	</c:if>

</body>
</html>

 

jsp에서 위에 taglibJSTL 태그 선언 : 

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>

 

 

 

 

 

 

3. 사용 형식

  • core -> c:if(조건에 맞춰서 실행할지 말지 결정), c:forEach, c:set 등
  • format -> fmt:formatNumber 등
  • function -> fn:toUpperCase("hello") => HELLO
  1. core 주요 태그 
    조건 처리 태그 : if, choose/when 
    반복 처리 태그 : forEach, forTokens 
    예외 처리 태그 : catch 

  2. format 주요 태그 
    날짜 시간 지정 태그 : formatDate 
    수치 지정 태그 : formateNumber

 

사용예제1)

 

1. 데이터 입력용 jsp 생성 및 forward로 data_veiw.jsp로 데이터 전달해줌

 

data_in.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%><%-- JSTL 태그 선언 --%>

<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_veiw.jsp"></jsp:forward>

 

2. 전달 받은 데이터 출력

  • 제품 정보 출력
  •  c:remove : 데이터 삭제
  • c:if으로 조건식 작성해서 c:remove : 데이터 삭제해보기
  • c:forEach
  • c:forEach에서 카운트 변수 사용
  • c:forEach로 배열 출력 가능

data_view.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<% 
	String arr[] = {"갈비탕", "돈까스", "비빔밥"};
	pageContext.setAttribute("menu", arr);
%>
<!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>제품 정보</title>
</head>
<body>
	<h2>제품 정보</h2>
	<%-- 제품 정보 출력 --%>
	제품코드 : ${code}<br> 
	제품명 : ${name}<br> 
	가격: ${price}<br>
	<hr>
	
	<%-- c:remove : 데이터 삭제 --%>
	<c:remove var="code" />
	제품코드 : ${code}<br> 
	제품명 : ${name}<br> 
	가격: ${price}<br>
	<hr>	
	
	<%-- c:if으로 조건식 작성해서 c:remove : 데이터 삭제해보기 --%>
	<c:if test="${name == 'TV'}">
		<c:remove var="name" />
	</c:if>
	제품코드 : ${code}<br> 
	제품명 : ${name}<br> 
	가격: ${price}<br>
	<hr>
	
	<%-- c:forEach -> 1번부터 5번 반복 --%>
	<c:forEach begin="1" end="5"><%-- 1번부터 5번 반복 --%>
		제품코드 : ${code}<br> 
		제품명 : ${name}<br> 
		가격: ${price}<br>
	</c:forEach>
	<hr>
	
	<%-- c:forEach에서 카운트 변수 사용 --%>
	<c:forEach var="cnt" begin="1" end="20" step="2"><%-- cnt : 카운트용 변수, step : 카운트 증가 단위 설정 --%>
		${cnt}
		<c:if test="${cnt % 3 == 0}">
			<br>
		</c:if>
	</c:forEach>
	<hr>
	
	<%-- c:forEach로 배열 출력 가능 --%>
	<ul>
		<c:forEach var="m" items="${menu}"><%-- 배열구조는 items에 설정 --%>
			<li>${m}</li>
		</c:forEach>
	</ul>
	<hr>
</body>
</html>

 

 

 

 

사용예제2)

  • c:choose
  • c:when

c:choose 태그 영역에 있는 c:when 조건에 맞는 영역에 있는 hrml문 실행

choose.jsp

<%@ 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>인사하기</title>
</head>
<body>
<c:choose>
	<c:when test="${param.num == 0}">
		<h3>처음 뵙겠습니당#_#</h3><br>
	</c:when>
	<c:when test="${param.num == 1}">
		<h3>반갑습니당~(@_@)</h3><br>
	</c:when>
	<c:otherwise>
		<h3>안녕하세요>O<</h3><br>
	</c:otherwise>
</c:choose>
</body>
</html>

 

 

 

 

 

사용예제3)

 

로그인 처리

loginFrm.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>
<form action="lProcJSTL.jsp" method="post">
	<table>
		<tr>
			<td>id</td>
			<td><input type="text" name="id" required></td>
		</tr>
		<tr>
			<td>password</td>
			<td><input type="password" name="pwd" required></td>
		</tr>
		<tr>
			<td colspan="2" style="text-align: center;">
			<input type="submit" value="로그인">
			<input type="reset" value="취소">
			</td>
		</tr>
	</table>
</form>
</body>
</html>

 

 

lProcJSTL.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>로그인 결과</title>
</head>
<body>
<%
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");

//회원 아이디 : user1
//비밀번호 : 1234

String dbid = "user2";//DB에서 가져온 데이터라고 가정
String dbpwd = "1234";

if(dbid.equals(id)){
	if(dbpwd.equals(pwd)){
		session.setAttribute("id", id);
		session.setAttribute("pwd", pwd);
		response.sendRedirect("main2.jsp");
	}
	else{
		//비밀번호 오류
		//로그인 실패시 다시 로그인 페이지로 이동
		response.sendRedirect("loginFrm.jsp");
	}
}
else{
	//아이디 없음
	response.sendRedirect("loginFrm.jsp");
}
%>
</body>
</html>

 

<%@page import="java.util.Date"%>
<%@ 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="date" value="<%=new Date() %>"/>
<!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>메인 페이지</title>
</head>
<body>
<c:choose>
	<c:when test="${empty id}">
		잘못된 접근입니다.
	</c:when>
	<c:otherwise>
		${id}님 반갑습니다
	</c:otherwise>
</c:choose>
</body>
</html>

 

 

 

 

format관련 프리픽스

<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

main2.jsp

<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%><%-- format관련 프리픽스 --%>
<c:set var="date" value="<%=new Date() %>"/>
<!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>메인 페이지</title>
</head>
<body>
	<p>[오늘의 날짜] <fmt:formatDate value="${date}"/></p>
	<p>[현재의 시간] <fmt:formatDate value="${date}" type="time"/></p>
	<hr>
	
	<p>날짜/시간 출력 형식</p>
	<p><fmt:formatDate value="${date}" type="date" dateStyle="full"/></p>
	<p><fmt:formatDate value="${date}" type="date" dateStyle="long"/></p>
	<p><fmt:formatDate value="${date}" type="date" dateStyle="medium"/></p>
	<p><fmt:formatDate value="${date}" type="date" dateStyle="short"/></p>

	<p><fmt:formatDate value="${date}" type="time" timeStyle="full"/></p>
	<p><fmt:formatDate value="${date}" type="time" timeStyle="long"/></p>
	<p><fmt:formatDate value="${date}" type="time" timeStyle="medium"/></p>
	<p><fmt:formatDate value="${date}" type="time" timeStyle="short"/></p>
	
</body>
</html>