*Core 태그 라이브러리 기능
- 변수 지원 : <c:set>
<c:remove>
Core 태그 라이브러리 기능 변수 삭제 remove 예제
personInfo_remove.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- *커스텀 태그(Custom teg)
- 액션 태그나 표현 언어를 사용하더라도 조건식이나 반복문 등 자바코드를 제거하기 위해서 도입된 기능.
*커스텀 태그 종류
- 1)JSTL (JSP Standard Tag Library)
:JSP페이지에서 가장많이 사용하는 기능을 태그로 제공.
JSTL 라이브러리를 따로 설치해서 사용가능
- 2)개발자가 만든 커스텀 태그
: 스프링 프레임워크(오픈소스)에서 미리 만들어서 제공.
*JSTL 라이브러리 구분
- 코어 : 변수, 조건문, 반복문 처리...
- 국제화 : 숫자, 날짜 형식...
- XML
- 데이터베이스 : SQL
- 함수 : 컬랙션 처리, 문자열 처리
*Core 태그 라이브러리 기능
- 변수 지원 :
-->
<!-- core태그 라이브러리를 사용하기위해 반드시 선언 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- var : 사용할 변수이름, value : 변수에 저장할 값, scope : 접근범위-->
<c:set var="id" value="Lee" scope="page" />
<c:set var="pw" value="1234" scope="page" />
<!-- 변수값을 el태그 이용해서 저장 -->
<c:set var="name" value="${'정도전'}" />
<c:set var="age" value="${22}" />
<c:set var="height" value="${177}" />
<!-- 위에서 지정한 값 아래에서 변수값을 remove 이용해서 삭제함 -->
<c:remove var="age"/>
<c:remove var="height"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL라이브러리 remove태그</title>
</head>
<body>
<table border="1">
<tr align="center" bgcolor="yellow">
<td width="7%"><b>아이디</b></td>
<td width="7%"><b>비밀번호</b></td>
<td width="7%"><b>이름</b></td>
<td width="7%"><b>나이</b></td>
<td width="7%"><b>키</b></td>
</tr>
<!-- el태그 이용해서 값 출력 -->
<tr align="center">
<td>${id}</td>
<td>${pw}</td>
<td>${name}</td>
<td>${age}</td>
<td>${height}</td>
</tr>
</table>
</body>
</html>
Core 태그 라이브러리 기능 if 예제
personInfo_if.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- *커스텀 태그(Custom teg)
- 액션 태그나 표현 언어를 사용하더라도 조건식이나 반복문 등 자바코드를 제거하기 위해서 도입된 기능.
*커스텀 태그 종류
- 1)JSTL (JSP Standard Tag Library)
:JSP페이지에서 가장많이 사용하는 기능을 태그로 제공.
JSTL 라이브러리를 따로 설치해서 사용가능
- 2)개발자가 만든 커스텀 태그
: 스프링 프레임워크(오픈소스)에서 미리 만들어서 제공.
*JSTL 라이브러리 구분
- 코어 : 변수, 조건문, 반복문 처리...
- 국제화 : 숫자, 날짜 형식...
- XML
- 데이터베이스 : SQL
- 함수 : 컬랙션 처리, 문자열 처리
-->
<!-- core태그 라이브러리를 사용하기위해 반드시 선언 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- var : 사용할 변수이름, value : 변수에 저장할 값, scope : 접근범위-->
<c:set var="id" value="Lee" scope="page" />
<c:set var="pw" value="1234" scope="page" />
<!-- 변수값을 el태그 이용해서 저장 -->
<c:set var="name" value="${'정도전'}" />
<c:set var="age" value="${22}" />
<c:set var="height" value="${177}" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL라이브러리 if태그</title>
</head>
<body>
<c:if test="${true}"> <!-- test: EL을 이용해 수행할 조건식 위치 -->
<h2>항상 참입니다.</h2>
</c:if>
<c:if test="${11 == 11}">
<h2>두 값은 같습니다.</h2>
</c:if>
<c:if test="${(id == 'Lee') && (name == '정도전')}">
<h2>아이디는 ${id}이고, 이름은 ${name}</h2>
</c:if>
<c:if test="${age == 22}">
<h2>아이디는 ${age} 입니다.</h2>
</c:if>
<c:if test="${height > 170}">
<h2>${name}의 키는 170보다 큰 ${height} 입니다.</h2>
</c:if>
</body>
</html>
Core 태그 라이브러리 기능 choose 예제 (switch와 유사)
personInfo_choose.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- core태그 라이브러리를 사용하기위해 반드시 선언 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- var : 사용할 변수이름, value : 변수에 저장할 값, scope : 접근범위-->
<c:set var="id" value="Lee" scope="page" />
<c:set var="pw" value="1234" scope="page" />
<!-- 변수값을 el태그 이용해서 저장 -->
<c:set var="name" value="${'정도전'}" />
<c:set var="age" value="${22}" />
<c:set var="height" value="${177}" />
<c:remove var="name"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL라이브러리 choose태그</title>
</head>
<body>
<table border="1">
<tr align="center" bgcolor="yellow">
<td width="7%"><b>아이디</b></td>
<td width="7%"><b>비밀번호</b></td>
<td width="7%"><b>이름</b></td>
<td width="7%"><b>나이</b></td>
<td width="7%"><b>키</b></td>
</tr>
<c:choose>
<c:when test="${empty name}"> <!-- 변수 name이 null이거나 빈 문자열인지 체크함(name == null) -->
<tr align="center">
<td colspan="5">이름을 입력하세요!!</td>
</tr>
</c:when>
<c:otherwise>
<tr align="center">
<td>${id}</td>
<td>${pw}</td>
<td>${name}</td>
<td>${age}</td>
<td>${height}</td>
</tr>
</c:otherwise>
</c:choose>
</table>
</body>
</html>
Core 태그 라이브러리 기능 변수 삭제 forEach 예제 (반복문)
JSP페이지에서 반복문을 수행하는 태그
-var : 반복할 변수 이름
-begin : 반복 시작값
-end : 반복 종료값
-step : 한번 반복할때마다 반복 변수를 증가시킬 값
-varStatus : 반복 상태 속성
count-몇번째 반복인지 나타내는 속성, 1부터 시작함.
index-0부터 시작
first-첫번째 반복인지 나타냄
last-마지막 반복인지 나타냄
personInfo_foreach.jsp
<%@page import="java.util.List"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!-- core태그 라이브러리를 사용하기위해 반드시 선언 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
request.setCharacterEncoding("UTF-8");
%>
<%
List<String> dataList = new ArrayList<>(); //인터페이스의 다형성
dataList.add("반갑습니다.");
dataList.add("축하합니다.");
dataList.add("안녕하세요."); //ArrayList에 3개의 String객체 저장하는 코드
%>
<c:set var="list" value="<%=dataList %>" /> <!-- list라는 변수에 dataList를 저장 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL라이브러리 forEach태그</title>
</head>
<body>
<!-- JSP페이지에서 반복문을 수행하는 태그
-var : 반복할 변수 이름
-begin : 반복 시작값
-end : 반복 종료값
-step : 한번 반복할때마다 반복 변수를 증가시킬 값
-varStatus : 반복 상태 속성
count-몇번째 반복인지 나타내는 속성, 1부터 시작함.
index-0부터 시작
first-첫번째 반복인지 나타냄
last-마지막 반복인지 나타냄
-items : 반복할 객체 이름
-->
<c:forEach var="i" begin="1" end="10" step="1" varStatus="loop">
i = ${i} 반복횟수 : ${loop.count}<br/>
</c:forEach>
<c:forEach var="i" begin="1" end="10" step="2">
10 * ${i} = ${10 * i} <br/>
</c:forEach>
<c:forEach var="data" items="${list}"> <!-- ArrayList 컬랙션에 저장된 객체를 하나씩 가져와서 처리 -->
${data}<br/>
</c:forEach>
<c:set var="car" value="소나타, 그랜져, 제네시스, 아반떼" />
<c:forTokens var="token" items="${car}" delims=","> <!-- 구분자(delims)-콤마를 이용해서 문자열을 분리해 출력함 -->
${token}<br/>
</c:forTokens>
</body>
</html>
JSTL bean 이용 forEech태그 사용 예제
Member.java
package kr.gov.jstl;
import java.sql.Date;
public class Member {
private String id;
private String pw;
private String name;
private String email;
private Date joinDate;
//생성자
public Member() {
}
//오버로딩
public Member(String id, String pw, String name, String email) {
super();
this.id = id;
this.pw = pw;
this.name = name;
this.email = email;
}
//getter, setter
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public Date getJoinDate() {
return joinDate;
}
public void setJoinDate(Date joinDate) {
this.joinDate = joinDate;
}
}
personInfo_foreach_bean.jsp
<%@page import="java.util.ArrayList"%>
<%@page import="kr.gov.jstl.Member"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
request.setCharacterEncoding("UTF-8");
%>
<%
List<Member> membersList = new ArrayList<>(); //인터페이스 다형성
Member member1 = new Member("lee", "1234", "이성계", "lee@ggmail.com");
Member member2 = new Member("jung", "1234", "정도전", "jung@ggmail.com");
Member member3 = new Member("ha", "1234", "하륜", "ha@ggmail.com");
membersList.add(member1);
membersList.add(member2);
membersList.add(member3); /* ArrayList에 3개의 Member객체 저장 */
%>
<!-- membersList라는 변수에 membersList를 저장 -->
<c:set var="membersList" value="<%=membersList %>" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL forEech태그</title>
</head>
<body>
<table border="1">
<tr align="center" bgcolor="lightgreen">
<td width="7%"><b>아이디</b></td>
<td width="7%"><b>비밀번호</b></td>
<td width="5%"><b>이름</b></td>
<td width="5%"><b>이메일</b></td>
</tr>
<c:forEach var="member" items="${membersList}" begin="0" end="2" step="1">
<tr align="center">
<td>${member.id }</td>
<td>${member.pw }</td>
<td>${member.name }</td>
<td>${member.email }</td>
</tr>
</c:forEach> <!-- 향상된 for문 형태로 객체들을 가져와 출력 -->
</table>
</body>
</html>
JSTL의 url태그 예제
jstl_url.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
request.setCharacterEncoding("UTF-8");
%>
<!--
c:url 태그
- JSP페이지에서 URL 정보를 저장하는 기능
- var : url이 저장된 변수이름
- value : url 경로 표시, 생성할 URL, 페이지 url값을 설정함.
- 전달할 파라메터값을 param태그 이용해서 페이지 이동할때 사용함.
- url 태그로 페이지 이동하면, get방식으로 이동함.
-->
<c:url var="url" value="url_result.jsp">
<c:param name="id" value="lee"/>
<c:param name="pw" value="1234"/>
<c:param name="name" value="이도"/>
<c:param name="email" value="lee@ggmail.com"/>
</c:url>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL의 url태그</title>
</head>
<body>
<a href="${url}">화면정보 출력</a>
</body>
</html>
url_result.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String name = request.getParameter("name");
String email = request.getParameter("email");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>url태그 결과</title>
</head>
<body>
<table border="1">
<tr align="center" bgcolor="yellow">
<td width="7%"><b>아이디</b></td>
<td width="7%"><b>비밀번호</b></td>
<td width="7%"><b>이름</b></td>
<td width="7%"><b>이메일</b></td>
</tr>
<!-- param태그 이용해서 값 출력 -->
<tr align="center">
<td>${param.id }</td>
<td>${param.pw }</td>
<td>${param.name }</td>
<td>${param.email }</td>
</tr>
<!-- 스크립트릿 익스프레션 출력 -->
<tr align="center">
<td><%=id %></td>
<td><%=pw %></td>
<td><%=name %></td>
<td><%=email %></td>
</tr>
</table>
</body>
</html>
JSTL의 redirect태그 예제
jstl_redirect.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
request.setCharacterEncoding("UTF-8");
%>
<!-- c:redirect 태그 <== response.sendRedirect()기능을 대처함.
- url : redirect할 URL이 지정될 변수
c:param 태그
- name : 매개변수 이름
- value : 전달값
-->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSTL의 redirect태그</title>
</head>
<body>
<c:redirect url="url_result.jsp"> <!-- 리다이렉트할 페이지를 설정 -->
<c:param name="id" value="lee" /> <!-- 리다이렉트할 페이지로 전달할 매개변수 설정 -->
<c:param name="pw" value="1234" />
<c:param name="name" value="이방원" />
<c:param name="email" value="lee@ggmail.com" />
</c:redirect>
</body>
</html>
예제로 만들었던 url_result.jsp를 출력
JSTL 회원가입 예제 (out 태그)
joinForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>회원 가입 폼</title>
</head>
<body>
<h1 style="text-align: center;">회원 등록창</h1>
<form action="out.jsp" method="post">
<table border="1" align="center">
<tr>
<td width="100"><p align="right">아이디</p></td>
<td width="200"><input type="text" name="id"></td>
</tr>
<tr>
<td width="200"><p align="right">비밀번호</p></td>
<td width="400"><input type="password" name="pw"></td>
</tr>
<tr>
<td width="200"><p align="right">이름</p></td>
<td width="400"><input type="text" name="name"></td>
</tr>
<tr>
<td width="200"><p align="right">이메일</p></td>
<td width="400"><input type="email" name="email"></td>
</tr>
<tr>
<td align="center" colspan="2" width="400">
<input type="submit" value="가입하기">
<input type="reset" value="다시입력">
</td>
</tr>
</table>
</form>
</body>
</html>
out.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
request.setCharacterEncoding("UTF-8");
String id = request.getParameter("id");
String pw = request.getParameter("pw");
String name = request.getParameter("name");
String email = request.getParameter("email");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jstl out태그</title>
</head>
<body>
<table border="1">
<tr align="center" bgcolor="yellow">
<td width="7%"><b>아이디</b></td>
<td width="7%"><b>비밀번호</b></td>
<td width="7%"><b>이름</b></td>
<td width="7%"><b>이메일</b></td>
</tr>
<tr align="center">
<td><c:out value="${param.id }" /></td>
<td><c:out value="${param.pw }" /></td>
<td><c:out value="${param.name }" /></td>
<td><c:out value="${param.email }" /></td>
</tr>
<tr align="center">
<td><%=id %></td>
<td><%=pw %></td>
<td><%=name %></td>
<td><%=email %></td>
</tr>
<!--
c:out 태그
- 화면에 지정한 값을 출력하는 기능
- value : 출력값
- escapeXml : excape 문자를 반환여부 지정(생략가능, 기본값 true)
< <
> >
& &
-->
<tr align="center">
<td><c:out value="<" escapeXml="true" /></td> <!-- value < 그대로 출력 -->
<td><c:out value="<" escapeXml="false" /></td> <!-- value의 <에 해당하는 특수문자로 변환되어 출력 -->
<td><c:out value=">" escapeXml="true" /></td>
<td><c:out value=">" escapeXml="false" /></td>
</tr>
</table>
</body>
</html>