JSTL(JSP Standard Tag Library)
JSP에서 사용 가능한 표준 태그 라이브러리
JSTL을 사용하면 JSP코드가 깔끔하고 가독성이 좋아진다.
<HTML + JSP스크립틀릿을 사용하여 작성한 코드와 JSTL의 태그를 사용하여 작성한 코드 비교>
Custom Tag?
HTML에서 제공되는 태그가 아닌 개발자가 설정하는 태그
JSTL은 JSP에서 많이 사용되는 JAVA코드를 태그 형태로 만들어서 제공하는 라이브러리이다.
(Apache에서 제공)
EL과 JSTL은 일반적으로 JAVA를 모르는 사람이 JSP로 개발할 때 유용하게 사용할 수 있게 만들어졌다.
EL은 JAVA의 출력을 대체하고 JSTL은 JAVA의 처리를 대체한다.
JSTL을 사용하여 할 수 있는 것?
- 간단한 프로그램 로직 구현(JAVA의 변수선언 및 제어문 등)
- 다른 JSP페이지 호출( <:redirect>, <c:import> 등)
- 날짜, 시간, 숫자의 포멧 지정
- JSP페이지 하나로 여러 언어의 웹 페이지 생성 가능
- 데이터베이스 관련 작업(입력, 수정, 삭제, 조회)
- XML 문서 처리
- 문자열 처리 함수 호출
- 문자열 처리 함수 호출을 제외한 나머지 기능은 Custom action 형태로 제공
JSTL에서 제공하는 Custom Tag 종류
JSTL의 기능을 크게 core, format, xml, sql, functions 5가지 커스텀 태그로 나누어서 제공해준다.
☞ http://java.sun.com/products/jsp/jstl/1.1/docs/tlddocs/
JSTL을 사용하기 위해 필요한 라이브러리(.jar) 다운로드 및 프로젝트에 추가
https://tomcat.apache.org/download-taglibs.cgi
위 사이트에 접속하여 다음 네 개의 jar파일을 다운로드한다.
다운받은 파일들을 프로젝트의 lib폴더에 복사
프로젝트의 Build Path에 추가
태그 라이브러리 사용 방법
JSP페이지에 <%@ tablib ... >지시어로 URI식별자와 접두사를 연결
|
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> |
cs |
ex)
prefix는 "c"라는 접두사를 이용하여 라이브러리 기능을 사용할 것이다 라는 것이고
이 때 uri에 지정된 라이브러리에 있는 기능을 사용한다고 명시하는 개념이다.
다음과 같이 태그를 사용한다. < c:out value=”Hello World!” />
Core 태그(자주 사용 됨)
위 표를 참조하면서 다음 core 태그 예제를 실행한다.
/WebContent/jstl/JSTL_out.jsp
1
2
3
4
5
6
7
8
9 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head><title>c:out 태그 예제</title></head>
<body>
<c:out value="Hello World!"/>
</body>
</html> |
cs |
<c:set> 태그
해당 범위(scope)내에 Attribute를 생성하고 해당 Attribute에 값을 지정할 때 사용한다.
JSP에서 Attribute값을 지정하기 위해 사용하는 setAttrubute() 메서드와 같은 역할을 한다.
JSP에서 setAttribute() 메서드 사용
|
pageContext.setAttribute(“msg”, “Hello”); |
cs |
JSTL core의 <c:set> 태그 사용
|
<c:set var="msg" value="Hello" scope="page" /> |
cs |
<c:set> 태그 사용 형식
|
<c:set var="변수 이름" value="값" [scope="{page|request|session|application}"] /> |
cs |
<c:set> 태그 속성
var변수 : 이름을 String으로 지정
(변수가 있다면 값을 새로 할당, 없으면 새로 만들어서 값을 지정한다.)
value : 변수에 저장할 값 지정(일반 문자열, 표현언어)
scope : 변수가 사용되는 범위(생략가능. 생략 시 기본 page 영역범위)
변수에 값을 저장하는 방법으로 value를 지정하는 대신 다음과 같이 사용 가능
<c:set var=”변수 이름” [scope=”...”]>값</c:set>
ex)
|
<c:set var="age">30</c:set> |
cs |
<c:set> 태그를 사용하여 자바빈 객체를 생성할 수 있다.
자바빈 객체 생성 코드 비교
- 자바코드
|
com.itbank.javabeans.MemberBean.java member = new com.itbank.javabeans.MemberBean(); |
cs |
- 액션태그
|
<jsp:useBean id="member" class="com.itbank.javabeans.MemberBean" /> |
cs |
- <c:set>태그
|
<c:set var="member" value="<%= new com.itbank.javabeans.MemberBean() |
cs |
자바빈 객체에 property 값 저장 코드 비교
- 액션태그(name에 이름을 저장하는 예)
|
<jsp:setProperty name="member" property="name" value="홍길동"/> |
cs |
- <c:set>태그(name에 이름을 저장하는 예)
|
<c:set target="${member}" property="name" value="홍길동"/> |
cs |
<c:set> 태그 실습
빈즈객체로 사용할 클래스 작성
/src/jstl/MemberBean.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 |
package jstl;
public class MemberBean {
private String name;
private String userid;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
@Override
public String toString() {
return "MemberBean [name=" + name + ", userid=" + userid + "]";
}
} |
cs |
빈즈를 사용하는 JSP예제 코드
/WebContent/jstl/JSTL_set.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 |
<%@page import="jstl.MemberBean"%>
<%@ page language="java" contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<html>
<head><title>c:set 태그로 변수에 값 저장</title></head>
<body>
<c:set var="msg" value="Hello"> </c:set>
\${msg} = ${msg}
<br>
<c:set var="age"> 30 </c:set>
\${age} = ${age}
<hr>
<c:remove var="age"/>
\${age} = ${age}
<hr>
<c:set var="member" value="<%=new MemberBean()%>"> </c:set>
<c:set target="${member}" property="name" value="홍길동">
</c:set>
<c:set target="${member}" property="userid"> gildong </c:set>
\${member} = ${member}
<hr>
<c:set var="add" value="${10 + 5}"> </c:set>
\${add} = ${add}
<br>
<c:set var="flag" value="${10 > 5}"> </c:set>
\${flag} = ${flag}
<br>
</body>
</html> |
cs |
요청결과
<c:remove> 태그는 JSP의 removeAttribute()와 같은 역할을하고, 해당 scope에 있는 변수를 제거하는 태그이다.
<c:remove var="변수 이름" [scope="{page|request|session|application}"]>
변수 age를 제거 : <c:remove var="age">
위 예제에서 remove 이 후 age값이 출력되지 않는 것을 볼 수 있었다.
<c:if>태그
프로그램 실행 시 흐름의 분기를 나누는 기능이다.
프로그래밍 언어의 if와 비슷한 기능을 한다. 다만 else기능이 없다.
사용방법
|
<c:if test="조건식">
위 조건이 참일 경우 실행할 내용
</c:if> |
cs |
JSP에서 사용하는 Java의 if문과 JSTL에서 <c:if> 태그의 코드 비교
<c:if> 태그 실습(선택 폼)
/WebContent/jstl/JSTL_ifForm.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<title>항목 선택 폼</title>
</head>
<body>
<form action="JSTL_ifResult.jsp">
<label for="color"> 색상을 선택하세요. </label><br> <select id="color"
name="color">
<option value="1">빨강</option>
<option value="2">초록</option>
<option value="3">파랑</option>
</select> <input type="submit" value="전송">
</form>
</body>
</html> |
cs |
요청결과
<c:if> 태그 실습2(전송 결과 페이지)
/WebContent/jstl/JSTL_ifResult.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html> <head> <title> 선택 결과 출력 </title> </head>
<body>
<c:if test="${param.color == 1}">
<span style="color: red;"> 빨강 </span>
</c:if>
<c:if test="${param.color == 2}">
<span style="color: green;"> 초록 </span>
</c:if>
<c:if test="${param.color == 3}">
<span style="color: blue;"> 파랑 </span>
</c:if>
</body>
</html> |
cs |
위 결과 페이지를 작성 후 JSTL_ifForm.jsp 페이지를 다시 실행하여 색깔 별로 선택 후 전송을 누르면 해당 색깔에 맞는 페이지가 보여진다.(아래 결과)
<c:choose> 태그
<c:if>태그에 없는 else개념을 구현한다.
JAVA의 switch문에서 사용하는 case, default같은 개념을 <c:when>, <c:otherwise> 태그로 사용.
다음은 <c:choose>태그를 사용하여 로그인 할 때 관리자와 일반 회원을 구분하는 예제이다.
|
<c:choose>
<c:when test="${param.userType == 'admin' }">
${param.id}(관리자)
</c:when>
<c:otherwise>
${param.id}(일반회원)
</c:otherwise>
</c:choose> |
cs |
<c:choose> 태그는 java의 switch문처럼 다양한 조건을 제시해서 여러 경우에 대해서도 간단하게 처리할 수 있다.
|
<c:choose>
<c:when test="조건1"> 몸체1 </c:when> <!-- 조건1을 만족할 때 -->
<c:when test="조건2"> 몸체2 </c:when> <!-- 조건2를 만족할 때 -->
<c:otherwise> 몸체3 </c:otherwise> <!-- 조건을 만족하지 않을 때 -->
</c:choose> |
cs |
<c:choose> 태그 내부에는 여러 개의 <c:when>을 사용할 수 있다.
순서대로 <c:when> 태그에 지정된 조건을 검사하여 참이면 해당 <c:when> 태그의 몸체 부분을 실행하고 <c:when> 중 만족한 조건을 찾지 못할 경우 <c:otherwise>의 몸체 부분을 실행한다.
<c:otherwise> 태그는 생략 가능
<c:choose> 실습
/WebContent/jstl/JSTL_chooseForm.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head><title>과일 선택 폼</title></head>
<body>
<form action="JSTL_chooseResult.jsp">
<label for="fruit"> 과일을 선택하세요 </label>
<p>
<select id="fruit" name="fruit">
<option value="1">사과</option>
<option value="2">메론</option>
<option value="3">바나나</option>
</select> <input type="submit" value="전송">
</form>
</body>
</html> |
cs |
요청결과
과일 선택 시 이동할 페이지 작성
/WebContent/jstl/JSTL_chooseResult.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head><title>선택 결과</title></head>
<body>
<c:choose>
<c:when test="${param.fruit == 1}">
<span style="color: red;"> 사과 </span>
</c:when>
<c:when test="${param.fruit == 2}">
<span style="color: green;"> 메론 </span>
</c:when>
<c:when test="${param.fruit == 3}">
<span style="color: blue;"> 바나나 </span>
</c:when>
</c:choose>
</body>
</html> |
cs |
선택 하여 동작을 확인
=>
<c:forEach> 태그
배열이나 컬렉션 같은 집합체게 저장되어 있는 값들을 순차적으로 처리하는 태그
사용 방법
|
<c:forEach [var="변수이름"] items="배열 또는 컬렉션"
몸체
</c:forEach> |
cs |
items속성에서 배열이나 컬렉션을 지정하면 저장된 각각의 항목의 수만큼 몸체를 반복
<c:forEach> 실습
/WebContent/jstl/JSTL_forEach.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>c:forEach 태그</title>
</head>
<body>
<%
String[] movieList = { "타이타닉", "시네마 천국", "혹성 탈출", "킹콩" };
pageContext.setAttribute("movieList", movieList);
%>
<c:forEach var="movie" items="${movieList}">
${movie} <p>
</c:forEach>
</body>
</html> |
cs |
요청결과
<c:forEach> 태그에서 사용할 수 있는 유용한 속성
varStatus 속성: 배열과 같은 집합의 인덱스 값을 사용해야 할 때 사용한다.
(반복상태 변수)
Property 속성(표 참조)
<c:forEach>를 사용하는 예제
|
<table border="1">
<c:forEach var="movie" items="${movieList}" varStatus="status">
<tr>
<td> ${status.index} </td>
<td> ${status.count} </td>
<td> ${movie} </td>
</tr>
</c:forEach>
</table> |
cs |
<c:forEach> varStatus속성 실습(index, count)
/WebContent/jstl/JSTL_forEachVar1.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 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head><title>index, count 프로퍼티</title></head>
<body>
<%
String[] movieList = { "타이타닉", "시네마 천국", "혹성 탈출", "킹콩" };
pageContext.setAttribute("movieList", movieList);
%>
<table border="1" style="width: 100%; text-align: center;">
<tr>
<th>index</th>
<th>count</th>
<th>title</th>
</tr>
<c:forEach var="movie" items="${movieList}" varStatus="status">
<tr>
<td>${status.index}</td>
<td>${status.count}</td>
<td>${movie}</td>
</tr>
</c:forEach>
</table>
</body>
</html> |
cs |
<c:forEach> varStatus속성 실습(first, last)
/WebContent/jstl/JSTL_forEachVar2.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 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>first, last 프로퍼티</title>
</head>
<body>
<%
String[] movieList = { "타이타닉", "시네마 천국", "혹성 탈출", "킹콩" };
pageContext.setAttribute("movieList", movieList);
%>
<ul>
<c:forEach var="movie" items="${movieList}" varStatus="status">
<c:choose>
<c:when test="${status.first}">
<li style="font-weight: bold; color: red;">${movie}</li>
</c:when>
<c:otherwise>
<li>${movie}</li>
</c:otherwise>
</c:choose>
</c:forEach>
</ul>
<c:forEach var="movie" items="${movieList}" varStatus="status">
${movie} <c:if test="${not status.last}"> , </c:if>
</c:forEach>
</body>
</html> |
cs |
<c:forEach> 태그의 begin, end 속성
begin에 시작번호, end에 끝 번호를 지정하고 step속성으로 증가 값 지정
사용 예)
<c:forEach var="변수 명" begin="시작 값" end="끝 값" step="증가 값"
|
<c:forEach var="cnt" begin="1" end="10">
${cnt}
</c:forEach> |
cs |
begin과 end값에 따른 index및 count 값의 변화 이해
begin과 end에 지정하는 값은 단순하게 <c:forEach> 문장이 실행되는 횟수를 지정하는 것이다.
- begin이 7, end가 10이면 index는 7, 8, 9, 10이 된다.
|
<table>
<c:forEach var="cnt" begin="7" end="10" varStatus="status">
<tr>
<td> ${status.index} </td>
<td> ${status.count} </td>
<td> ${cnt} </td>
</tr>
</c:forEach>
</table> |
cs |
- step 값을 2로 하면 index 값이 1, 3, 5, 7, 9가 된다. 하지만 count는 여전히 1, 2, 3, 4, 5가 된다.
|
<table>
<c:forEach var="cnt" begin="1" end="10" step="2" varStatus="status">
<tr>
<td> ${status.index} </td>
<td> ${status.count} </td>
<td> ${cnt} </td>
</tr>
</c:forEach>
</table> |
cs |
<c:forEach> 태그 실습
/WebContent/jstl/JSTL_forEachVal3.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 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>begin, end 속성</title>
</head>
<body>
<c:forEach var="cnt" begin="1" end="10" varStatus="status">
${cnt} <c:if test="${not status.last }">, </c:if>
</c:forEach>
<p>
<table border="1" style="width: 100%; text-align: center;">
<tr>
<th>index</th>
<th>count</th>
<th>cnt</th>
</tr>
<c:forEach var="cnt" begin="7" end="10" varStatus="status">
<tr>
<td>${status.index}</td>
<td>${status.count}</td>
<td>${cnt}</td>
</tr>
</c:forEach>
</table>
<p>
<table border="1" style="width: 100%; text-align: center;">
<tr>
<th>index</th>
<th>count</th>
<th>cnt</th>
</tr>
<c:forEach var="cnt" begin="1" end="10" varStatus="status" step="2">
<tr>
<td>${status.index}</td>
<td>${status.count}</td>
<td>${cnt}</td>
</tr>
</c:forEach>
</table>
</body>
</html> |
cs |
<c:forEach> 태그의 paramValue 속성
항목을 다중 선택할 때 사용되는 속성
실습으로 paramValue속성 확인
다중 선택 페이지 작성
/WebContent/jstl/JSTL_paramForm.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head><title>다중 선택</title></head>
<body>
<h2>악세사리</h2>
관심항목을 선택하세요.
<hr>
<form method="get" action="JSTL_paramResult.jsp">
<input type="checkbox" name="item" value="신발"> 신발 <input
type="checkbox" name="item" value="가방"> 가방 <input
type="checkbox" name="item" value="벨트"> 벨트 <br> <input
type="checkbox" name="item" value="모자"> 모자 <input
type="checkbox" name="item" value="시계"> 시계 <input
type="checkbox" name="item" value="쥬얼리"> 쥬얼리 <br> <input
type="submit" value="전송">
</form>
</body>
</html> |
cs |
결과 페이지 작성
/WebContent/jstl/JSTL_paramResult.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>다중선택 결과</title>
</head>
<body>
당신이 선택한 항목입니다.
<hr>
<c:forEach var="item" items="${paramValues.item}" varStatus="status">
${item} <c:if test="${not status.last}"> , </c:if>
</c:forEach>
</body>
</html> |
cs |
JSTL_paramForm실행 후 다중 선택하고 전송버튼 클릭
선택한 항목만 반복하여 출력되는 것 확인
만약 한글이 깨진다면 인코딩 설정에 문제가 있는 것이다. 위에서 전송하는 방식이 get방식이므로 이클립스에 연동된 톰캣의 server.xml 설정파일을 열어 <Connector> 태그에 URIEncoding 속성을 원하는 인코딩 방식으로 지정해준다.
server.xml파일의 태그를 찾아 수정
위 부분을 UTF-8로 지정하도록 한다.(속성이 없으면 추가한다.)
<c:forTokens> 태그
문자열을 구분자로 분리해서 하나씩 추출하는 기능
<c:forTokens> 태그 사용 형식
|
<c:forTokens var="토큰을 저장할 변수" item="토큰으로 나눌 문자열" delims="구분자">
몸체
</c:forTokens> |
cs |
<c:forTokens> 태그 실습
/WebContent/jstl/JSTL_forTokens.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title> c:forTokens 태그 </title></head>
<body>
<c:forTokens var="city" items="서울.인천,세종.부산" delims=",">
${ city } <br>
</c:forTokens>
<hr>
<c:forTokens var="city" items="서울.인천,대구.부산" delims=",.">
${ city } <br>
</c:forTokens>
</body>
</html> |
cs |
요청결과
<c:import> 태그
<jsp:include> 태그는 단순히 페이지만 포함
<c:import>태그는 페이지와 내용을 변수에 저장 가능
<c:import> 태그 형식
|
<c:import url="URL" [var="변수이름"] [scope="영역"] [charEncoding="charEncoding"]>
</c:import> |
cs |
<c:import> 태그 실습
/WebContent/jstl/JSTL_import.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title> c:import 태그</title>
</head>
<body>
c:forToken.jsp 파일과 변수 모두 포함<br>
<c:import url="http://localhost:8080/JSP_TEST/jstl/JSTL_forTokens.jsp"
var="data">
</c:import>
${ data }
</body>
</html>
|
cs |
요청결과
<c:url> 태그
여러 번 반복하여 사용할 url주소가 있을 경우 해당 주소를 변수에 저장하기 위해 사용
<c:url> 태그 형식
|
<c:url value="URL" [var="변수이름"] [scope="영역"]>
</c:url> |
cs |
<c:url> 태그 실습
자주 사용할 url을 만들기 위해 이미지 파일을 하나 준비한다. 그리고 jstl폴더안에 images폴더를 만든 후 그 안에 준비한 그림파일을 넣어놓고 다음 예제를 작성하여 실행하자.
[jstl/images/test.jsp 파일 준비]
다음 예제 실습
/WebContent/jstl/JSTL_url.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head><title>c:url 태그</title></head>
<body>
<c:url value="images/test.jpg" var="data"> </c:url>
<h3> ${ data }</h3>
<img src="${ data }" width="150" height="150">
<h3> ${ data }</h3>
<img src="${ data }" width="200" height="200">
</body>
</html> |
cs |
요청결과
<c:redirect> 태그
response.sendRedirect() 메서드와 동일한 기능을 제공하는 태그
<c:redirect> 태그 형식
|
<c:redirect url="URL" [context="경로명"> </c:redirect> |
cs |
<c:redirect> 태그 실습
/WebContent/jstl/JSTL_redirect.jsp
1
2
3
4
5
6
7
8
9
10
11 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title> c:redirect 태그</title>
</head>
<body>
<c:redirect url="JSTL_url.jsp"></c:redirect>
</body>
</html> |
cs |
요청결과
JSTL_redirect.jsp 페이지를 실행 하면 <c:redirect> 태그에 지정된 JSTL_url.jsp 페이지로 리다이렉트 되므로 결과는 JSTL_url.jsp 페이지의 결과와 똑같이 나온다.
<c:out>, <c:catch> 태그
<c:out> 태그 : value 속성에 지정된 문자열이나 변수의 내용 출력
<c:catch> 태그 : 예외가 발생할 수 있는 코드를 작성하여 예외처리
<c:out> 태그 형식
형식1
|
<c:out value="value" [default="기본값"]> |
cs |
|
<c:out value="value"> 기본값 </c:out> |
cs |
<c:catch> 태그 형식
|
<c:catch var="변수 이름"> 예외가 발생할 수 있는 코드 </c:catch> |
cs |
<c:out>, <c:catch> 태그 실습
/WebContent/jstl/JSTL_catch.jsp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 |
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>c:out과 c:catch 태그</title></head>
<body>
<c:set var="age" value="30" scope="page"> </c:set>
나이 : <c:out value="${ age }"> 10 </c:out> <p>
<c:remove var="age" scope="page"></c:remove>
나이 : <c:out value="${ age }"> 10 </c:out> <p>
나이 : <c:out value="${ age }" default="5"></c:out> <p>
<c:catch var="errMsg">
정수를 0으로 나눌 수 없음 <p>
<%= 10/0 %> <p>
</c:catch>
<c:out value="${ errMsg }"> </c:out>
</body>
</html> |
cs |
요청결과
위와 같이 라이브러리로 제공하는 태그 이외에 개발자가 직접 커스텀 태그를 만들 수도 있다. 라이브러리로 제공되는 태그로 원하는 기능이 없을 경우 편리하게 정의하여 사용이 가능하며 커스텀 태그를 만드는 방법도 찾아서 공부해 보길 바란다.
'교육자료 > JSP' 카테고리의 다른 글
MVC 이해하기 (0) | 2018.09.06 |
---|---|
서블릿(Servlet) 이해하기 (0) | 2018.09.06 |
EL(Expression Language) 사용하기 (0) | 2018.09.06 |
(교육자료)파일 업로드 실습 (0) | 2018.09.06 |
(교육자료)세션 이해하기 실습 (0) | 2018.09.06 |