JSTL 태그 part1

2016. 10. 30. 22:12Programming/JSP

JSTL(JSP Standard Tag Library)

: JSP 코드를 더 간결하게 만들어주는 태그의 모음


JSTL은 다섯 개의 라이브러리로 구성됨


lib

URI (사용할 때마다 페이지 속성에 붙임)

Prefix

ex

Core

http://java.sun.com/jsp/jstl/core

c

<c:tag

XML Processing

http://java.sun.com/jsp/jstl/xml

x

<x:tag

I18N formatting

http://java.sun.com/jsp/jstl/fmt

fmt

<fmt:tag

SQL

http://java.sun.com/jsp/jstl/sql

sql

<sql:tag

Functions

http://java.sun.com/jsp/jstl/functions

fn

fn:function()


이 중 Core는 출력, 제어문, 반복문 포함(가장 빈번히 사용됨)



1. 사용 선언은 필수


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



2. Core 태그 종류



1) 출력: <c:out>

<c:out value="출력값 default="기본값" escapeXml="true(<>도 출력) or false">


2) 변수 설정: <c:set>

<c:set var="변수명" value="설정값" target="객체" property="값" scope="범위">

의미: 특정 "객체"의 한 "속성"을 "변수"로 지정하고, 거기에 "값"을 넣어 "범위" 내에서 사용가능케 


3) 변수 제거: <c:remove>

<c:remove var="변수명" scope="범위">


4) 예외 처리: <c:catch>

<c:catch var="변수명">


5) if문: <c:if>

<c:if test="조건" var="조건 처리 변수명" scope="범위">


6) switch문: <c:choose>

<c:choose>

<c:when test="조건"> 처리 내용 </c:when>

<c:otherwise> 처리 내용 </c:otherwise>

<c:choose>


7) for문: <c:forEach>

<c:forEach items="객체명" begin="시작 인덱스" end="끝 인덱스" step="증감식" var="변수명" varStatus="상태변수">


8) 페이지 이동: <c:redirect>

<c:redirect url="url">


9) 파라미터 전달: <c:param>

<c:param name="파라미터명" value="값">



<배운 것>


1) 변수 set하고 받아오기


<c:set var="name" scope="session" value="sessionVal"></c:set>

${sessionScope.name}


2) 배열의 경우


<c:set var="array" value="<%=array%>"></c:set>
    <c:forEach var="i" begin="0" end="5">
        <h4>array[${i}] : ${array[i]}</h4>
    </c:forEach>


3) HashMap의 경우


<c:set value="<%=map%>" var="map"/>
    <h4>${map}</h4>


4) bean의 경우


<jsp:useBean id="mem2" class="com.jsp.bean.Member"/>
<jsp:setProperty property="id" name="mem2" value="wetLesson"/>

${mem2.id}



<L01CoreVar.jsp>


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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"
    import="com.jsp.bean.Member"
    %>
<!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>Core 태그로 변수 선언</title>
</head>
<body>
    <h1>Core 태그로 변수 선언</h1>
    <h4>먼저 JSTL 사용 선언해야</h4>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <hr>
    
    <h2>c:set 변수 선언</h2>
    <h4>var : 변수 이름</h4>
    <h4>value : 변수 값</h4>
    <h4>scope : 변수가 저장될 내장 객체(지정되지 않으면 pageContext에 저장)</h4>
    
    <h4>기존 방식 : &lt;%request.setAttribute("pwd", "1234");%></h4>
    <c:set var="name" scope="page" value="pageVal"></c:set>
    <c:set var="name" scope="request">requestVal</c:set>
    <c:set var="name" scope="session" value="sessionVal"></c:set>
    <c:set var="name" scope="application" value="applicationVal"></c:set>
    <c:set var="id" scope="session" value="jspLesson"></c:set>
    <hr>
    
    <h4>name : ${name}</h4>
    <h4>page name : ${pageScope.name} (page->JSTL변수가 기본적으로 이용하는 객체)</h4>
    <h4>request name : ${requestScope.name}</h4>
    <h4>session name : ${sessionScope.name}</h4>
    <h4>application name : ${applicationScope.name}</h4>
    <h4>id : ${id} (중복되는 이름 없다면 바로 호출 가능!)</h4>
    <hr>
    
    <% Object var="1"%>
    <h4>var 등록 전 : ${var}</h4>
    <c:set var="var" value="<%=var%>"/>
    <h4>var 등록 후 : ${var}</h4>
    
    <%Object nullVar = null;%>
    <c:set var="nullVar" value="<%=nullVar%>"/>
    <h4>c:out nullVar : <c:out value="${nullVar}" default="NULL입니다."/></h4>
    <h4>out은 출력 담당. default 속성 추가하면 null일 때 출력할 문자열 설정 가능</h4>
    
    <h4>html 출력 : <c:out value="<br>띄어쓰기" escapeXml="false"></c:out></h4>
    <h4>escapeXml="true"로 하면 태그를 문자화</h4>
    <h4>escapeXml="false"로 하면 html태그로 인식</h4>
    <hr>
    
    <h1>배열{사과, 배, 오렌지, 수박, 딸기, 귤}을 등록하자</h1>
    <%String[] array = {"사과""배""오렌지""수박""딸기""귤"};%>
    <c:set var="array" value="<%=array%>"></c:set>
    <c:forEach var="i" begin="0" end="5">
        <h4>array[${i}] : ${array[i]}</h4>
    </c:forEach>
    <h4>array[6] : <c:out value="${array[6]}" default="없는 index"></c:out></h4>
    <hr>
    
    <h1>Collection Framework 등록 후 출력</h1>
    <% java.util.HashMap map = new java.util.HashMap();
        map.put("id""jspLesson");
        map.put("name""walker");
        map.put("pwd"1234);
        map.put("admin"'1');
        map.put("indate"new java.util.Date());
    %>
    <h3>1. HashMap에 등록 후 출력</h3>
    <c:set value="<%=map%>" var="map"/>
    <h4>${map}</h4>
    <h4>${map.id}, ${map.pwd}</h4>
    <hr>
    
    <h3>EL 태그로 put하기</h3>
    ${map.put("color","black")}
    <h4>map.color : ${map.color}</h4>
    
    <h3>JSTL로 put하기</h3>
    <c:set target="${map}" property="favorColor" value="black"/>
    <h4>map.favorColor : ${map.favorColor}</h4>
    <hr>
    
    <%
        java.util.List list = new java.util.ArrayList();
        list.add(0"jspLesson");
        list.add(1"ckm");
        list.add(21234);
        list.add(3'0');
    %>
    <h3>2. ArrayList에 등록 후 출력</h3>
    <c:set var="list" value="<%=list%>"/>
    <h4>${list}</h4>
    ${list.add(4, "EL 태그로 add")}
    <h4>${list.get(0)}, ${list.get(4)}</h4>
    <hr>    
    <h1>Bean 값 설정하고 출력</h1>
 
    <!-- bean값 설정하기 -->
    <%
    com.jsp.bean.Member mem = new com.jsp.bean.Member();
    mem.setId("jsp");
    mem.setName("박지성");
    %>
    ${mem.setAdmin('0')}
    
    <!-- bean값 받아오기 -->
    <c:set var="mem" value="<%=mem%>"/>    
    <!-- 출력 -->
    <h4>${mem}</h4>
    <h4>${mem.id}, ${mem.name}</h4>
    
    <jsp:useBean id="mem2" class="com.jsp.bean.Member"/>
    <jsp:setProperty property="id" name="mem2" value="wetLesson"/>
    <c:set target="${mem2}" property="name">구지성</c:set>
    ${mem2.setPwd('6969')}
    
    <h4>mem2.id : ${mem2.id}</h4>
    <h4>mem2.pwd : ${mem2.pwd}</h4>
    <h4>mem2.name : ${mem2.name}</h4>
</body>
</html>
cs



'Programming > JSP' 카테고리의 다른 글

MVC 모델  (0) 2016.11.07
[JSP] 가위바위보 게임  (0) 2016.11.02
L09 EL 태그 활용, 내장 객체 종류, 예외처리  (0) 2016.10.28
L08 Bean으로 값(parameter) 전달  (0) 2016.10.27
L07 쿠키로 값 전달  (0) 2016.10.27