태그 라이브러리
https://tomcat.apache.org/taglibs/
https://www.kobis.or.kr/kobisopenapi/homepg/main/main.do
xml
data
http://kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchWeeklyBoxOfficeList.xml?key=f5eef3421c602c6cb7ea224104795888
&targetDt=20120101
표현언어(EL)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="model1.BoardTO" %>
<%
BoardTO to1 = new BoardTO();
to1.setSubject("제목1");
to1.setWriter("작성자1");
BoardTO to2 = new BoardTO();
to2.setSubject("제목2");
to2.setWriter("작성자2");
BoardTO[] lists = {to1, to2};
pageContext.setAttribute("lists", lists);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
${lists[0].subject}<br>
${lists[1].subject}<br>
${lists[2].subject}<br> <!-- el은 인덱스가 초과되어도 에러를 막음 -->
${lists[0]['subject']}<br>
${lists[1]['subject']}<br>
</body>
</html>

el07.jsp
표현언어로 배열출력
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="model1.BoardTO" %>
<%@ page import="java.util.ArrayList" %>
<%
BoardTO to1 = new BoardTO();
to1.setSubject("제목1");
to1.setWriter("작성자1");
BoardTO to2 = new BoardTO();
to2.setSubject("제목2");
to2.setWriter("작성자2");
ArrayList<BoardTO> lists = new ArrayList<>();
lists.add(to1);
lists.add(to2);
pageContext.setAttribute("lists", lists);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
${lists[0].subject}<br>
${lists[1].subject}<br>
${lists[2].subject}<br> <!-- el은 인덱스가 초과되어도 에러를 막음 -->
${lists[0]['subject']}<br>
${lists[1]['subject']}<br>
</body>
</html>

el08.jsp
ArrayList<>() 배열로의 출력
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="model1.BoardTO" %>
<%@ page import="java.util.HashMap" %>
<%
BoardTO to1 = new BoardTO();
to1.setSubject("제목1");
to1.setWriter("작성자1");
BoardTO to2 = new BoardTO();
to2.setSubject("제목2");
to2.setWriter("작성자2");
HashMap<String, BoardTO> lists = new HashMap<>();
lists.put("to1", to1);
lists.put("to2", to2);
pageContext.setAttribute("lists", lists);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
${lists.to1.subject}<br><!-- to1,2는 값이 아닌 키 -->
${lists.to2.subject}<br>
</body>
</html>

el09.jsp
HashMap을 이용한 출력문
*HashMap객체는 키와 값을 저장할수 있다
package model1;
public class BoardTO {
private String subject;
private String writer;
public String getSubject() {
System.out.println("getSubject");
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getWriter() {
System.out.println("getWriter");
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
}
BoardTO.java
package model1;
public class BoardListTO {
private String cpage;
private BoardTO boardTO;
public String getCpage() {
return cpage;
}
public void setCpage(String cpage) {
this.cpage = cpage;
}
public BoardTO getBoardTO() {
return boardTO;
}
public void setBoardTO(BoardTO boardTO) {
this.boardTO = boardTO;
}
}
BoardListTO.java
<%@page import="model1.BoardListTO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="model1.BoardTO"%>
<%
BoardTO to1 = new BoardTO();
to1.setSubject("제목1");
to1.setWriter("작성자1");
BoardListTO listTO = new BoardListTO();
listTO.setCpage("1");
listTO.setBoardTO(to1);
pageContext.setAttribute("listTO", listTO);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
${listTO.boardTO.subject}
${listTO.boardTO.writer}
${listTO.cpage}
</body>
</html>

el10.jsp
TO 클래스 2개를 사용해 출력
(ListTO안에 BoardTO를 출력)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="util.FormatUtil" %>
<%
pageContext.setAttribute("price", 12345L);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
가격 : ${pirce}원입니다.<br>
가격 : ${FormatUtil.chageFormat(price,'#,##0')}원입니다.<br>
</body>
</html>

el11.jsp
<%@page import="chap11.Thermometer"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
Thermometer thermometer = new Thermometer();
request.setAttribute("t", thermometer);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>온도변환예제</title>
</head>
<body>
${t.setCelsius('서울', 27.3)}
서울온도 : 섭씨 ${t.getCelsius('서울')}도 / 화씨 ${t.getFahrenheit('서울')}
<br>
정보 : ${t.info}
</body>
</html>

thermometer.jsp
EL에서 객체의 메서드 호출
JSTL( JSP Standard Tag Library )
JSTL이란?
JSP는 스크립트릿과 표현식등의 스크립트 코드와 HTML코드가 뒤섞여서
코드를 알아보기 힘들다.
하지만 이 코드들을 HTML 태그와 비슷한 코드를 사용해서 가독성이 뛰어나게 만들고 이해하기 쉽게
만들수 있다.
또한, JSP 에서 많이사용되는 논리적인 판단, 반복처리, 포맷처리를 위한 커스텀태그를 표준으로
만들어 정의한 것이 JSTL이다

<%@ 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>Insert title here</title>
</head>
<body>
출력(표현식) : <%="browser1" %><br>
출력(표현언어) : ${ "browser2" }<br>
출력(jstl) : <c:out value="browser3" /><br>
<%
pageContext.setAttribute("data1", "browser4");
%>
출력 : <%=pageContext.getAttribute("data1") %><br>
출력 : ${ data1 }<br>
출력 : <c:out value="${data1}" /><br>
출력 : <c:out value="${data2}" /><br>
출력 : <c:out value="${data2}" default="browser" /><br>
출력 : <c:out value="${data3}">browser</c:out> <br>
출력 : <c:out value="${data3 = 'borwser' }" /><br>
</body>
</html>

jstl01.jsp
jstl에서 태그를 쓰려면 import를 하는데 jstl에서의 import방식은 jsp와 다름
<%@ %> 로 import는 같지만 taglib이란것을 쓰고 prefix로 태그의 이름을 정하고
마지막/core부분에 다른 uri를 넣는다
(책 294p 참조)
jstl에서의 sysout은 <c:out value="EL문"> 이다
<%@ 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>Insert title here</title>
</head>
<body>
<c:set var="data1" value="value1" scope="page" />
출력 : ${ data1 }<br>
출력 : <c:out value="${data1}" /><br>
출력 : <%= pageContext.getAttribute("data1") %><br>
</body>
</html>

jstl02.jsp
jstl에서의 scope:"" 는 page, request, session, application 이있다
기본값은 page이다
<%@ 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>Insert title here</title>
</head>
<body>
<c:set var="data1" value="value1" scope="page" />
<c:set var="data2" value="value2" scope="request" />
<c:set var="data3" value="value3" scope="session" />
<c:set var="data4" value="value4" scope="application" />
<c:out value="${ data1 }" /><br>
<c:out value="${ data2 }" /><br>
<c:out value="${ data3 }" /><br>
<c:out value="${ data4 }" /><br>
<c:out value="${ pageScope.data1 }" /><br>
<c:out value="${ requestScope.data2 }" /><br>
<c:out value="${ sessionScope.data3 }" /><br>
<c:out value="${ applicationScope.data4 }" /><br>
</body>
</html>

jstl03.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>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<c:set var="data" value="value" />
<c:out value="${ data }" /><br>
<c:remove var="data" />
<c:out value="${ data }" />
</body>
</html>

jstl04.jsp
var = 변수명
value = 변수의 값
package model1;
public class BoardTO {
private String subject;
private String writer;
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getWriter() {
return writer;
}
public void setWriter(String writer) {
this.writer = writer;
}
}
BoardTO.java
<%@ 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="to" value="<%=new model1.BoardTO() %>" scope="page" />
<c:set target="${ to }" property="subject" value="제목" />
<c:set target="${ to }" property="writer" value="작성자" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
%{ to.subject }<br>
%{ to.writer }<br>
</body>
</html>

jstl05.jsp
jstl에서의 Board TO가져오기
<%@ 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>Insert title here</title>
</head>
<body>
시작<br>
<c:if test="true">
무조건실행<br>
</c:if>
<c:set var="country" value="korea" />
<c:if test="${ country == 'korea' }">
대한민국입니다.<br>
</c:if>
끝<br>
</body>
</html>

jstl06.jsp
jstl에서의 if문
<%@ 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>Insert title here</title>
</head>
<body>
시작<br>
<c:set var="country" value="canada" />
<c:choose>
<c:when test="${ country == 'korea' }">
<c:out value="${ country }" />의 겨울은 춥다.
</c:when>
<c:when test="${ country == 'canada' }">
<c:out value="${ country }" />의 겨울은 더 춥다.
</c:when>
<c:otherwise>
겨울은 안춥다<br>
</c:otherwise>
</c:choose>
끝<br>
</body>
</html>

jstl07.jsp
jstl에서의 <c:when> 태그는
jsp에서의 switch문과 if else 문을 혼합한형태
<c:otherwise>는 else이다
<%@ 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>Insert title here</title>
</head>
<body>
시작<br>
<c:forEach var="i" begin="1" end="10" step="2">
Hello JSTL : ${ i }<br>
</c:forEach>
<c:forEach var="i" begin="1" end="3">
<c:forEach var="j" begin="1" end="3">
${ i } / ${ j }<br>
</c:forEach>
</c:forEach>
끝<br>
</body>
</html>

jstl08.jsp
jstl에서의 for증감문
<%@ 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>Insert title here</title>
</head>
<body>
시작<br>
<c:set var="intArr" value="<%=new int[]{1, 2, 3, 4, 5 } %>" />
<c:out value="${ intArr[0] }" /><br>
<c:out value="${ intArr[1] }" /><br>
<c:out value="${ intArr[2] }" /><br>
<hr>
<!-- 향상된 for문 -->
<c:forEach var="data" items="${ intArr }" begin="2" end="4">
<c:out value="${ data }" /><br>
</c:forEach>
끝<br>
</body>
</html>

jstl09.jsp
jstl에서의 배열
<%@ 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>Insert title here</title>
<style type="text/css">
table {
width: 800px;
border-collapse:collapse;
}
table, td {
border: 1px solid black;
}
</style>
</head>
<body>
<table>
<c:forEach var="row" begin="0" end="9">
<tr>
<c:forEach var="col" begin="0" end="9">
<c:choose>
<c:when test="${row == 0 && col == 0 }">
<td> </td>
</c:when>
<c:when test="${row == 0 }">
<td>X ${col}</td>
</c:when>
<c:when test="${col == 0 }">
<td> ${row} 단</td>
</c:when>
<c:otherwise>
<td>${ row } X ${ col } = ${ row*col }</td>
</c:otherwise>
</c:choose>
</c:forEach>
</tr>
</c:forEach>
</table>
</body>
</html>

Gugudan.jsp
jstl에서의 구구단문 출력
<%@ 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>Insert title here</title>
<style type="text/css">
table {
width: 800px;
border-collapse:collapse;
}
table, td {
border: 1px solid black;
}
</style>
</head>
<body>
<form action="Gugudan02.jsp" method="post">
시작단 <input type="text" name="startdan" />
~
끝단 <input type="text" name="enddan" />
<input type="submit" value="구구단보기" />
</form>
<hr>
<c:if test="${!empty(param.startdan) || !empty(param.enddan) }">
<table>
<c:forEach var="row" begin="${ param.startdan }" end="${ param.enddan }">
<tr>
<c:forEach var="col" begin="1" end="9">
<td>${ row } X ${ col } = ${ row * col }</td>
</c:forEach>
</tr>
</c:forEach>
</table>
</c:if>
</body>
</html>

Gugudan02.jsp
jstl에서의 form문과 구구단출력
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%-- <c:redirect url="https://www.daum.net" /> --%>
<%--
<c:redirect url="https://search.daum.net/search">
<c:param name="w" value="tot" />
<c:param name="q" value="카타르월드컵" />
</c:redirect>
--%>
<c:redirect url="https://search.naver.com/search.naver">
<c:param name="query" value="카타르월드컵" />
</c:redirect>
jstl10.jsp
jstl에서의 url바로가기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 외부에 있는 html문서를 읽어 들이는 기능 -->
네이버 바로보기
<hr>
<c:import url="https://m.naver.com" />
jstl11.jsp
jstl에서의 html문서 읽기
html문서만 출력함.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!-- 외부에 있는 html문서를 읽어 들이는 기능 -->
<c:import var="htmldata" url="https://m.naver.com" />
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<textarea rows="50" cols="500">
${ htmldata }
</textarea>
</body>
</html>

jstl12.jsp
jstl에서 html코드 출력
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!-- 외부에 있는 HTML문서를 읽어들이는 기능 -->
<c:url var="url" value="http://kobis.or.kr/kobisopenapi/webservice/rest/boxoffice/searchWeeklyBoxOfficeList.xml">
<c:param name="key" value="f5eef3421c602c6cb7ea224104795888" />
<c:param name="targetDt" value="20120101" />
</c:url>
<c:import var="htmldata" url="${url}"/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<textarea rows="50" cols="500">
${htmldata }
</textarea>
</body>
</html>
jstl13.jsp
xml 출력
<%@ 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>forTokens 태그</title>
</head>
<body>
콤마와 점을 구분자로 사용:<br>
<c:forTokens var="token" items="빨강색,주황색.노란색.초록색,파랑색,남색.보라색" delims=",.">
${ token }
</c:forTokens>
</body>
</html>

for_tokens_tag.jsp
jstl에서의 구분자 삭제
(토큰 추출)
<%@ 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>catch 태그</title>
</head>
<body>
<c:catch var='ex'>
name 파라미터의 값 = <%=request.getParameter("name") %><br>
<% if(request.getParameter("name").equals("test")) { %>
${param.name}은 test입니다.
<% } %>
</c:catch>
<p>
<c:if test="${ex != null}">
익셉션이 발생하였습니다:<br>
${ex}
</c:if>
</body>
</html>

use_catch_tag.jsp
jstl에서의 익셉션
<c:catch> 태그는 익셉션을 EL변수에 저장해 출력
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<s:setDataSource
var="ds"
url="jdbc:mysql://localhost:3306/sample"
driver="org.mariadb.jdbc.Driver"
user="root"
password="!123456"
scope="page"
/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 별칭은 안붙음 원래이름만가능(에러나진않음) -->
<s:query var="rs" dataSource="${ ds }" sql="select deptno as 부서번호, dname as 부서이름, loc as 부서위치 from dept3" />
<table border="1" width="600">
<tr>
<c:forEach var="columnName" items="${ rs.columnNames }">
<td>${ columnName }</td>
</c:forEach>
</tr>
<c:forEach var="row" items="${rs.rows}">
<tr>
<td>${row.deptno}</td>
<td>${row.dname}</td>
<td>${row.loc}</td>
</tr>
</c:forEach>
</table>
</body>
</html>

jstl14.jsp
jstl에서 DB연결시 당연히 라이브러리에 DB연동jar파일일 추가하고
context.xml또한 추가한다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="http://java.sun.com/jsp/jstl/sql" %>
<s:setDataSource
var="ds"
url="jdbc:mysql://localhost:3306/sample"
driver="org.mariadb.jdbc.Driver"
user="root"
password="!123456"
scope="page"
/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
${ ds }<br>
<%-- <s:update var="result" dataSource="${ ds }" sql="insert into dept3 values (91, '홍보부', '서울')" /> --%>
<s:update var="result" dataSource="${ ds }" sql="insert into dept3 values (?, ?, ?)" >
<s:param value="93" />
<s:param value="기획부" />
<s:param value="대구" />
</s:update>
결과 : ${result}<br>
</body>
</html>

jstl15.jsp
jstl에서의 DB연결
(insert문)

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<s:setDataSource
var="ds"
dataSource="jdbc/mariadb1"
scope="page"
/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 별칭은 안붙음 원래이름만가능(에러나진않음) -->
<s:query var="rs" dataSource="${ ds }" sql="select deptno as 부서번호, dname as 부서이름, loc as 부서위치 from dept3" />
<table border="1" width="600">
<tr>
<c:forEach var="columnName" items="${ rs.columnNames }">
<td>${ columnName }</td>
</c:forEach>
</tr>
<c:forEach var="row" items="${rs.rows}">
<tr>
<td>${row.deptno}</td>
<td>${row.dname}</td>
<td>${row.loc}</td>
</tr>
</c:forEach>
</table>
</body>
</html>

jstl16.jsp
as로 별칭을 붙이는것은 불가능
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="http://java.sun.com/jsp/jstl/sql" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<!-- 별칭은 안붙음 원래이름만가능(에러나진않음) -->
<s:query var="rs" dataSource="jdbc/mariadb1" sql="select deptno as 부서번호, dname as 부서이름, loc as 부서위치 from dept3" />
<table border="1" width="600">
<tr>
<c:forEach var="columnName" items="${ rs.columnNames }">
<td>${ columnName }</td>
</c:forEach>
</tr>
<c:forEach var="row" items="${rs.rows}">
<tr>
<td>${row.deptno}</td>
<td>${row.dname}</td>
<td>${row.loc}</td>
</tr>
</c:forEach>
</table>
</body>
</html>
jstl17.jsp
전의 코드보다 더 간단하게 바꿈
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>함수 사용</title>
</head>
<body>
<c:set var="str1" value="Functions <태그>를 사용합니다." />
<c:set var="str2" value="사용" />
<c:set var="tokens" value="1,2,3,4,5,6,7,8,9,10" />
legnth(str1) = "${ fn:length(str1) }" <br>
toUpperCase(str1) = "${ fn:toUpperCase(str1) }" <br>
toLowerCase(str1) = "${ fn:toLowerCase(str1) }" <br>
substring(str1, 3, 6) = "${ fn:substring(str1, 3, 6) }" <br>
substringAfter(str1, str2) = "${ fn:substringAfter(str1, str2) }" <br>
substringBefore(str1, str2) = "${ fn:substringBefore(str1, str2) }" <br>
trim(str1) = "${fn:trim(str1)}" <br>
replace(str1, sec, dest) = "${fn:replace(str1, "", "-")}"<br>
indexOf(str1, str2) = "${fn:indexOf(str1, str2)}"<br>
startsWith(str1, str2) = "${fn:startsWith(str1, "Fun")}"<br>
endsWith(str1, str2) = "${fn:startsWith(str1, "합니다")}"<br>
contains(str1, str2) = "${fn:contains(str1, str2)}"<br>
containslgnoreCase(str1, str2) = "${fn:containsIgnoreCase(str1, str2)}"<br>
<c:set var="array" value="${ fn:split(tokens, ',') }" />
join(array, "-")= = "${ fn:join(array, "-") }"<br>
escapeXml(str1) = "${ fn:escapeXml(str1) }"<br>
</body>
</html>

use_function.jsp
jstl에서의 각종 메서드