์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- Absolute
- AGI
- ai
- AI agents
- AI engineer
- AI researcher
- ajax
- algorithm
- Algorithms
- aliases
- Array ๊ฐ์ฒด
- ASI
- bayes' theorem
- Bit
- Blur
- BOM
- bootstrap
- canva
- challenges
- ChatGPT
- Today
- In Total
A Joyful AI Research Journey๐ณ๐
[58] 230322 JSP Ch. 11 ํํ ์ธ์ด(Expression Language), Ch. 12 ํ์ค ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(JSTL), Ch. 13 ์ดํด๋ฆฝ์ค๋ฅผ ์ด์ฉํ ์น ๊ฐ๋ฐ [K-๋์งํธ ํธ๋ ์ด๋ 58์ผ] ๋ณธ๋ฌธ
[58] 230322 JSP Ch. 11 ํํ ์ธ์ด(Expression Language), Ch. 12 ํ์ค ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(JSTL), Ch. 13 ์ดํด๋ฆฝ์ค๋ฅผ ์ด์ฉํ ์น ๊ฐ๋ฐ [K-๋์งํธ ํธ๋ ์ด๋ 58์ผ]
yjyuwisely 2023. 3. 22. 15:51230322 Wed 58th class
Ch. 11 ํํ ์ธ์ด(Expression Language)
Ch. 12 ํ์ค ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(JSTL)
Ch. 13 ์ดํด๋ฆฝ์ค๋ฅผ ์ด์ฉํ ์น ๊ฐ๋ฐ
์ง๋: p. 250 ~ (๊ต์ฌ: ์ต๋ฒ๊ท ์ JSP 2.3 ์น ํ๋ก๊ทธ๋๋ฐ: ๊ธฐ์ด๋ถํฐ ์ค๊ธ๊น์ง, ์ ์: ์ต๋ฒ๊ท )
์ฑ
์์ ์ฝ๋: https://github.com/madvirus/jsp23
์ ์ ๋ธ๋ก๊ทธ: https://javacan.tistory.com/
์ค๋ ๋ฐฐ์ด ๊ฒ ์ค ๊ธฐ์ตํ ๊ฒ์ ์ ๋ฆฌํ๋ค.
To parse, in computer science, is where a string of commands – usually a program – is separated into more easily processed components, which are analyzed for correct syntax and then attached to tags that define each component.
Ch. 11 ํํ ์ธ์ด(Expression Language)
01 ํํ ์ธ์ด๋?
1.1 EL์ ๊ตฌ์ฑ
02 EL ๊ธฐ์ด
2.1 EL์ ๋ฐ์ดํฐ ํ์ ๊ณผ ๋ฆฌํฐ๋ด
2.2 EL์ ๊ธฐ๋ณธ ๊ฐ์ณฌ
2.3 ๊ฐ์ฒด ์ ๊ทผ
2.4 ๊ฐ์ฒด ํ์
2.5 ์์น ์ฐ์ฐ์
2.6 ๋น๊ต ์ฐ์ฐ์
2.7 ๋ ผ๋ฆฌ ์ฐ์ฐ์
2.8 empty ์ฐ์ฐ์
2.9 ๋น๊ต ์ฐ์ฐ์
2.10 ๋ฌธ์์ด ์ฐ๊ฒฐ
2.11 ์ปฌ๋ ์
2.12 ์ธ๋ฏธ์ฝ๋ก ์ฐ์ฐ์
2.13 ํ ๋น ์ฐ์ฐ์
2.14 ์ฐ์ฐ์ ์ฐ์ ์์
2.15 ํน์ ๋ฌธ์ ์ฒ๋ฆฌํ๊ธฐ
03 EL์์ ๊ฐ์ฒด์ ๋ฉ์๋ ํธ์ถ
04 EL์์ ์ ์ ๋ฉ์๋ ํธ์ถํ๊ธฐ 1
4.1 ์์ ์์ ์ฌ์ฉํ ํด๋์ค ์์ฑ
4.2 ํจ์๋ฅผ ์ ์ํ TLD ํ์ผ ์์ฑ
4.3 web.xml ํ์ผ์ TLD ๋ด์ฉ ์ถ๊ฐํ๊ธฐ
4.4 EL์์ ํจ์ ์ฌ์ฉํ๊ธฐ
05 EL์์ ์ ์ ๋ฉ์๋ ํธ์ถํ๊ธฐ 2
06 ๋๋ค์ ์ฌ์ฉํ๊ธฐ
07 ์คํธ๋ฆผ API ์ฌ์ฉํ๊ธฐ
7.1 ์คํธ๋ฆผ API ๊ธฐ๋ณธ
7.2 stream()์ ์ด์ฉํ ์คํธ๋ฆผ ์์ฑ
7.3 filter()๋ฅผ ์ด์ฉํ ๊ฑธ๋ฌ๋ด๊ธฐ
7.4 map()์ ์ด์ฉํ ๋ณํ
7.5 sorted()๋ฅผ ์ด์ฉํ ์ ๋ ฌ
7.6 limit()์ ์ด์ฉํ ๊ฐ์ ์ ํ
7.7 toList()์ toArray()๋ฅผ ์ด์ฉํ ๊ฒฐ๊ณผ ์์ฑ
7.8 count()๋ฅผ ์ด์ฉํ ๊ฐ์ ํ์ธ
7.9 Optional ํ์
7.10 sum()๊ณผ average()๋ฅผ ์ด์ฉํ ์์น ์ฐ์ฐ ๊ฒฐ๊ณผ ์์ฑ
7.11 min()๊ณผ max()๋ฅผ ์ด์ฉํ ์ต์/์ต๋ ๊ตฌํ๊ธฐ
7.12 anyMatch(), allMatch(), nonMatch()๋ฅผ ์ด์ฉํ ์กด์ฌ ์ฌ๋ถ ํ์ธ
08 ํํ ์ธ์ด ๋นํ์ฑํ ๋ฐฉ๋ฒ
8.1 web.xml ํ์ผ์ EL ๋นํ์ฑํ ์ต์ ์ถ๊ฐํ๊ธฐ
8.2 JSP ํ์ด์ง์ EL ๋นํ์ฑํ์ํค๊ธฐ
8.3 web.xml ํ์ผ์ ๋ฒ์ ์ ๋ฐ๋ฅธ EL์ฒ๋ฆฌ
11.1 ํํ ์ธ์ด(Expression Language)๋? p. 250
ํํ์ธ์ด: ๋ค๋ฅธ ํํ์ ์คํฌ๋ฆฝํธ ์ธ์ด๋ก์ ์คํฌ๋ฆฝํธ ์์ ์ค์ ํ๋์ด๋ค.
ํํ์๋ณด๋ค ๊ฐ๊ฒฐํ๊ณ ํธ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ๋ง์ด ์ฌ์ฉ๋๋ค.
์คํฌ๋ฆฝํธ ์์
1. ์คํฌ๋ฆฝํธ๋ฆฟ
<% ์๋ฐ๋ฌธ๋ฒ %>
2. ํํ์
<%= ์ถ๋ ฅ๋ด์ฉ %>
3. ์ ์ธ๋ถ
<%! ํจ์ ์ ์ธ%>
<%
%> ๋ ์๋ฐ์ด๋ค.
์์)
<%
for(int i=1;i<11;i++){
%>
<%= i%><br> //HTML(JSP)
<!-- System.out.println(i);์ด ์๋๋ค. -->
<%
}
%>
1) ํํ ์ธ์ด (EL(Expression Language))์ ๊ตฌ์ฑ
${expr}
11.2 ํํ ์ธ์ด (EL(Expression Language)) ๊ธฐ์ด
1) ํํ ์ธ์ด (EL(Expression Language))์ ๋ฐ์ดํฐ ํ์
๊ณผ ๋ฆฌํฐ๋ด
2) ํํ ์ธ์ด (EL(Expression Language))์ ๊ธฐ๋ณธ ๊ฐ์ณฌ
3) ๊ฐ์ฒด ์ ๊ทผ
4) ๊ฐ์ฒด ํ์
5) ์์น ์ฐ์ฐ์
6) ๋น๊ต ์ฐ์ฐ์
7) ๋
ผ๋ฆฌ ์ฐ์ฐ์
8) empty ์ฐ์ฐ์
9) ๋น๊ต ์ฐ์ฐ์
10) ๋ฌธ์์ด ์ฐ๊ฒฐ
11) ์ปฌ๋ ์
12) ์ธ๋ฏธ์ฝ๋ก ์ฐ์ฐ์
13) ํ ๋น ์ฐ์ฐ์
14) ์ฐ์ฐ์ ์ฐ์ ์์
15) ํน์ ๋ฌธ์ ์ฒ๋ฆฌํ๊ธฐ
11.3 ํํ ์ธ์ด (EL(Expression Language))์์ ๊ฐ์ฒด์ ๋ฉ์๋ ํธ์ถ
11.4 ํํ ์ธ์ด (EL(Expression Language))์์ ์ ์ ๋ฉ์๋ ํธ์ถํ๊ธฐ 1
1) ์์ ์์ ์ฌ์ฉํ ํด๋์ค ์์ฑ
2) ํจ์๋ฅผ ์ ์ํ TLD ํ์ผ ์์ฑ
3) web.xml ํ์ผ์ TLD ๋ด์ฉ ์ถ๊ฐํ๊ธฐ
4) EL์์ ํจ์ ์ฌ์ฉํ๊ธฐ
11.5 ํํ ์ธ์ด (EL(Expression Language))์์ ์ ์ ๋ฉ์๋ ํธ์ถํ๊ธฐ 2
11.6 ๋๋ค์ ์ฌ์ฉํ๊ธฐ
11.7 ์คํธ๋ฆผ API ์ฌ์ฉํ๊ธฐ
1) ์คํธ๋ฆผ API ๊ธฐ๋ณธ
2) stream()์ ์ด์ฉํ ์คํธ๋ฆผ ์์ฑ
3) filter()๋ฅผ ์ด์ฉํ ๊ฑธ๋ฌ๋ด๊ธฐ
4) map()์ ์ด์ฉํ ๋ณํ
5) sorted()๋ฅผ ์ด์ฉํ ์ ๋ ฌ
6) limit()์ ์ด์ฉํ ๊ฐ์ ์ ํ
7) toList()์ toArray()๋ฅผ ์ด์ฉํ ๊ฒฐ๊ณผ ์์ฑ
8) count()๋ฅผ ์ด์ฉํ ๊ฐ์ ํ์ธ
9) Optional ํ์
10) sum()๊ณผ average()๋ฅผ ์ด์ฉํ ์์น ์ฐ์ฐ ๊ฒฐ๊ณผ ์์ฑ
11) min()๊ณผ max()๋ฅผ ์ด์ฉํ ์ต์/์ต๋ ๊ตฌํ๊ธฐ
12) anyMatch(), allMatch(), nonMatch()๋ฅผ ์ด์ฉํ ์กด์ฌ ์ฌ๋ถ ํ์ธ
11.8 ํํ ์ธ์ด ๋นํ์ฑํ ๋ฐฉ๋ฒ
1) web.xml ํ์ผ์ EL ๋นํ์ฑํ ์ต์
์ถ๊ฐํ๊ธฐ
2) JSP ํ์ด์ง์ EL ๋นํ์ฑํ์ํค๊ธฐ
3) web.xml ํ์ผ์ ๋ฒ์ ์ ๋ฐ๋ฅธ EL์ฒ๋ฆฌ
Ch. 12 ํ์ค ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(JSTL(JSP Standard Tag Library)) p. 292
์ฑ ์ ๋ชฉ์ฐจ
01 JSTL์ด๋
1.1 JSTL์ด ์ ๊ณตํ๋ ํ๊ทธ์ ์ข ๋ฅ
1.2 JSTL ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ๊ธฐ
02 ์ฝ์ด ํ๊ทธ
2.1 ๋ณ์ ์ง์ ํ๊ทธ
2.1.1 <c:set> ํ๊ทธ
2.1.2 <c:remove> ํ๊ทธ
2.2 ํ๋ฆ ์ ์ด ํ๊ทธ
2.2.1 <c:if> ํ๊ทธ
2.2.2 <c:choose>, <c:when>, <c:otherwise> ํ๊ทธ
2.2.3 <c:forEach> ํ๊ทธ
2.2.4 <c:forTokens> ํ๊ทธ
2.3 URL ์ฒ๋ฆฌ ํ๊ทธ
2.3.1 <c:url> ํ๊ทธ
2.3.2 <c:redirect> ํ๊ทธ
2.4 ๊ธฐํ ์ฝ์ด ํ๊ทธ
2.4.1 <c:out> ํ๊ทธ
2.4.2 <c:catch> ํ๊ทธ
03 ๊ตญ์ ํ ํ๊ทธ
3.1 ๋ก์ผ์ผ ์ง์ ํ๊ทธ
3.2 ์์ ๋ก ์ฌ์ฉํ ๋ฆฌ์์ค ๋ฒ๋ค
3.3 ๋ฉ์์ง ์ฒ๋ฆฌ ํ๊ทธ
3.3.1 <fmt:bundle> ํ๊ทธ์ <fmt:message> ํ๊ทธ
3.3.2 <fmt:setBundle> ํ๊ทธ์ <fmt:message> ํ๊ทธ
3.3.3 <fmt:message> ํ๊ทธ์ ๋ฆฌ์์ค ๋ฒ๋ค ๊ฒ์ ์์
3.4 ์ซ์ ๋ฐ ๋ ์ง ํฌ๋งทํ ์ฒ๋ฆฌ ํ๊ทธ
3.4.1 <fmt:formatNumber> ํ๊ทธ
3.4.2 <fmt:parseNumber> ํ๊ทธ
3.4.3 <fmt:formatDate> ํ๊ทธ
3.4.4 <fmt:parseDate> ํ๊ทธ
3.4.5 <fmt:timeZone> ํ๊ทธ์ <fmt:setTimeZone> ํ๊ทธ
3.5 web.xml ํ์ผ์ ๊ตญ์ ํ ๊ด๋ จ ๊ธฐ๋ณธ๊ฐ ์ค์ ํ๊ธฐ
04 ํจ์
12.1 ํ์ค ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(JSTL(JSP Standard Tag Library))์ด๋
์๋ฐ ๋ฌธ๋ฒ์ ํ๊ทธํ์ํจ ๊ฒ์ด๋ค.
<%
//์๋ฐ
if(list.size>0){
for(int i=0;i<list.size();i++){
Data data = (Data) list.get(i);
} //if, for: HTML -> Tag
%>
1) ํ์ค ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(JSTL(JSP Standard Tag Library))์ด ์ ๊ณตํ๋ ํ๊ทธ์ ์ข
๋ฅ
2) ํ์ค ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(JSTL(JSP Standard Tag Library)) ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฐ๊ธฐ
https://central.sonatype.com/?smo=true
https://repo1.maven.org/maven2/jstl/jstl/1.2/์์ ์๋ jstl-1.2.jar์ ๋ค์ด ๋ฐ๋๋ค.
ํฐ์บฃ lib์ ๋ฃ๋๋ค.
์ดํด๋ฆฝ์ค์ ์๋ ๊ฒฝ๋ก์ lib์ ๋ถ์ฌ๋ฃ๋๋ค.
์๋ ์ฝ๋๋ฅผ ์ด๋ค.
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
prefix="c"
ํ๊ทธ๋ค์ ๋ณด๋ฉด c๋ก ์์ํ๋ค.
์ฐธ๊ณ : https://heytech.tistory.com/190
12.2 ์ฝ์ด ํ๊ทธ
์ฐธ๊ณ : https://www.w3schools.in/jsp/jstl-core-tags
1) ๋ณ์ ์ง์ ํ๊ทธ p. 296
1.1 <c:set> ํ๊ทธ
<c:set> ํ๊ทธ๋ EL(ํํ ์ธ์ด(Expression Language)) ๋ณ์์ ๊ฐ์ด๋ ๋ณ์์ ํ๋กํผํฐ ๊ฐ์ ์ง์ ํ ๋ ์ฌ์ฉ๋๋ค.
<c:set> ํ๊ทธ์ ์ฒซ ๋ฒ์งธ ์ฌ์ฉ๋ฐฉ๋ฒ์ EL ๋ณ์๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ค.
<c:set var="๋ณ์๋ช
" value="๊ฐ" [scope="์์ญ"]/>
<c:set var="๋ณ์๋ช
" [scope="์์ญ"]>๊ฐ</c:set>
1.2 <c:remove> ํ๊ทธ
remove ํ๊ทธ๋ set ํ๊ทธ๋ก ์ง์ ํ ๋ณ์๋ฅผ ์ญ์ ํ ๋ ์ฌ์ฉ๋๋ค.
<c:remove var="varName" [scope="์์ญ"] />
2) ํ๋ฆ ์ ์ด ํ๊ทธ p. 299
2.1 <c:if> ํ๊ทธ
๋จ์ if๋ง ๊ฐ๋ฅํ๋ค.
์๋ฐ ์ธ์ด์ if ๋ธ๋ก๊ณผ ๋น์ทํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. ๋จ์ํ if ๋ธ๋ก์ ์ฝ๊ฒ ๋์ฒดํ ์ ์๊ธฐ ๋๋ฌธ์ ๋ง์ด ์ฌ์ฉํ๋ค.
<c:if test="์กฐ๊ฑด">
...
</c: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>Examples</title>
</head>
<body>
<c:if test="true">
๋ฌด์กฐ๊ฑด ์คํ<br>
</c:if>
<% // ์๋ฐ
String name="bk";
if(name.equals("bk")){
%>
name ํ๋ผ๋ฏธํฐ์ ๊ฐ์ด ${param.name} ์
๋๋ค. <!-- HTML์ด๋ค.(Body ํ๊ทธ์ ์๋ ๋ด์ฉ) -->
<% //์๋ฐ
}
%>
<%-- <% // ์๋ฐ
String name="bk";
if(name.equals("bk")){
out.print(name);
}
%> --%>
<c:if test="${param.name == 'bk' }">
name ํ๋ผ๋ฏธํฐ์ ๊ฐ์ด ${param.name} ์
๋๋ค.
</c:if>
</body>
</html>
๊ฒฐ๊ณผ)
2.2 <c:choose>, <c:when>, <c:otherwise> ํ๊ทธ
choose if
when else if
otherwise else
<c:choose>๋ switch์ ํด๋น๋๊ณ <c:when>๋ case์ ํด๋น๋๋ฉฐ, <c:otherwise>๋ default์ ํด๋น๋๋ค.
<c:choose> ํ๊ทธ๋ ์๋ฐ์ switch ๊ตฌ๋ฌธ๊ณผ if-else ๋ธ๋ก์ ํผํฉํ ํฅํ๋ก์ ๋ค์์ ์กฐ๊ฑด๋ฌธ์ ํ๋์ ๋ธ๋ก์์ ์ํํ ๋ ์ฌ์ฉํ๋ค.
<c:choose>
<c:when test="${member.level == 'trial'}">
...
</c:when>
<c:when test="${member.level == 'regular'}">
...
</c:when>
<c:when test="${member.level == 'provider'}">
...
</c:when>
<c:otherwise>
...
</c:otherwise>
</c:choose>
2.3 <c:forEach> ํ๊ทธ p. 303
forEach ํ๊ทธ๋ ๋ฐฐ์ด, Collection ๋๋ Map์ ์ ์ฅ๋์ด ์๋ ๊ฐ๋ค์ ์์ฐจ์ ์ผ๋ก ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋ค.
์๋ฐ์ for, do-while ๋ฑ์ ๋์ ํด์ ์ฌ์ฉํ ์ ์๋ค.
- forEach ํ๊ทธ์ ๊ธฐ๋ณธ์ ์ธ ์ฌ์ฉ๋ฐฉ๋ฒ
<c:forEach var="๋ณ์" items="์์ดํ
">
...
<tr>
<td align="right" bgcolor="#ffffff">
${๋ณ์์ฌ์ฉ}
</td>
...
</c:forEach>
items ์์ฑ์๋ Map, ๋ฐฐ์ด, Collection์ด ์ฌ ์ ์๋ค.
๋ฐฐ์ด์ ๊ฒฝ์ฐ๋ ๊ฐ์ฒด์ ๋ฐฐ์ด๋ฟ๋ง ์๋๋ผ ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์
์ ๋ฐฐ์ด์ ๋ํด์๋ ์๋ง๊ฒ ์ฒ๋ฆฌ๋ฅผ ํ๋ฉฐ, ๊ธฐ๋ณธ ๋ฐ์ดํฐ ํ์
์ Integer๋ Double๊ณผ ๊ฐ์ ๋ํผ ํด๋์ค๋ฅผ ์ฌ์ฉํด์ ์ฒ๋ฆฌํ๊ฒ ๋๋ค.
forEach ํ๊ทธ๋ฅผ ์ฌ์ฉํด์ ์๋ฐ์ for ๊ตฌ๋ฌธ๊ณผ ๊ฐ์ ํจ๊ณผ ๊ฐ๋ฅ
begin ์์ฑ๊ณผ end ์์ฑ์ ํตํด ๋ฒ์๋ฅผ ์ง์ ํด์ forEach ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋๋ค.
ex) var ์์ฑ์ ์ง์ ํ ๋ณ์ i๋ 1๋ถํฐ 10๊น์ง์ ๊ฐ์ ์ฐจ๋ก๋๋ก ๊ฐ๊ฒ ๋๋ค.
<c:forEach var="i" begin="1" end="10">
${i}์ฌ์ฉ
</c:forEach>
//JSTL
<c:forEach var="i" items="${intArray}">
</c:forEach>
//์๋ฐ
int[] intArray = new int[3];
for(int i=0; i<3; i++){} // ์ผ๋ฐ์ ์ธ for๋ฌธ
for(int i : intArray){} // ํฅ์๋ for(๋ฐฐ์ด์์๋ง)
์์)
<table border="1">
<tr>
<td>ID</td><td>๋น๋ฐ๋ฒํธ</td><td>์ฃผ์</td><td>ํฐ๋ฒํธ</td><td>์ด๋ฉ์ผ</td><td>์ด๋ฆ</td><td>์์ผ</td>
</tr>
<c:forEach var="list" items="${memlist}"> <!-- ๋ฐ๋ณตํ๋ค. -->
<tr>
<td>${list.id}</td>
<td>${list.password}</td>
<td>${list.addr}</td>
<td>${list.phone}</td>
<td>${list.email}</td>
<td>${list.name}</td>
<td>${list.age}</td>
</tr>
</c:forEach>
</table>
๊ฒฐ๊ณผ)
2.4 <c:forTokens> ํ๊ทธ
java.util.StringTokenizer ํด๋์ค์ ๊ฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ํ๊ทธ๋ค.
<c:forTokens var="token" items="๋ฌธ์์ด" delims="๊ตฌ๋ถ์">
${token}์ ์ฌ์ฉ
</c:forTokens>
<c:forTokens var="color" items="red,green,blue" delims=",">
${color}
</c:forTokens>
3) URL ์ฒ๋ฆฌ ํ๊ทธ
3.1 <c:url> ํ๊ทธ
url ์์ฑ
<c:url value="URL" [var="varName"] [scope="์์ญ"]
<c:param name="์ด๋ฆ" value="๊ฐ" />
</c:url>
3.2 <c:redirect> ํ๊ทธ
๋ฆฌ๋ค์ด๋ ํธ ์ฒ๋ฆฌ
<c:redirect value="URL" [context="์ปจํ
์คํธ๊ฒฝ๋ก"]
<c:param name="์ด๋ฆ" value="๊ฐ" />
</c:redirect>
<c:redirect url="http://search.daum.net/search">
<c:param name="w" value="blog" />
<c:param name="q" value="๋ณด๋ผ๋งค ๊ณต์" />
</c:redirect>
4) ๊ธฐํ ์ฝ์ด ํ๊ทธ
4.1 <c:out> ํ๊ทธ
JspWriter์ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ ๋ ์ฌ์ฉ๋๋ ํ๊ทธ
<c:out value="value" [escapeXml="(true|false)"][default="๊ธฐ๋ณธ๊ฐ"] />
<c:out value="value" [escapeXml="(true|false)"]>๊ธฐ๋ณธ๊ฐ</c:out>
4.2 <c:catch> ํ๊ทธ
๋ฐ์๋ ์ต์ ์ ์ EL ๋ณ์์ ์ ์ฅํ ๋ ์ฌ์ฉ๋๋ ํ๊ทธ
<c:catch var="exName">
...
์ต์ผ์
์ด ๋ฐ์ํ ์ ์๋ ์ฝ๋
...
</c:catch>
...
${exName} ์ฌ์ฉ
12.3 ๊ตญ์ ํ ํ๊ทธ p. 315
ํน์ ์ง์ญ์ ๋ฐ๋ผ ์๋ง์ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํด์ผ ํ ๋ ์ฌ์ฉํ๋ค.
ex) ํ๊ธ ๋ธ๋ผ์ฐ์ ์ ์ ์ํ๋ฉด ํ๊ธ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํ๊ณ , ์๋ฌธ ๋ธ๋ผ์ฐ์ ์ ์ ์ํ๋ฉด ์๋ฌธ ๋ฉ์์ง๋ฅผ ์ถ๋ ฅํด์ผ ํ ๋ ๊ตญ์ ํ ํ๊ทธ๋ฅผ ์ฌ์ฉํ๋ค.
1) ๋ก์ผ์ผ ์ง์ ํ๊ทธ
- <fmt:setLocale>: ๊ตญ์ ํ ํ๊ทธ๋ค์ด ์ฌ์ฉํ ๋ก์ผ์ผ์ ์ง์ ํ๋ค.
- <fmt:requestEncoding>: ์์ฒญ ํ๋ผ๋ฏธํฐ์ ์บ๋ฆญํฐ ์ธ์ฝ๋ฉ์ ์ง์ ํ๋ค.
2) ์์ ๋ก ์ฌ์ฉํ ๋ฆฌ์์ค ๋ฒ๋ค
3) ๋ฉ์์ง ์ฒ๋ฆฌ ํ๊ทธ
3.1 <fmt:bundle> ํ๊ทธ์ <fmt:message> ํ๊ทธ
3.2 <fmt:setBundle> ํ๊ทธ์ <fmt:message> ํ๊ทธ
3.3 <fmt:message> ํ๊ทธ์ ๋ฆฌ์์ค ๋ฒ๋ค ๊ฒ์ ์์
4) ์ซ์ ๋ฐ ๋ ์ง ํฌ๋งทํ ์ฒ๋ฆฌ ํ๊ทธ p. 324
- ์ซ์ ์ถ๋ ฅ๊ณผ ํ์ฑ ๊ด๋ จ: <fmt:formatNumber>, <fmt:parseNumber>
- ๋ ์ง ์ถ๋ ฅ๊ณผ ํ์ฑ ๊ด๋ จ: <fmt:formatDate>, <fmt:parseDate>
- ์๊ฐ๋ ์ค์ ๊ด๋ จ: <fmt:setTimeZone>, <fmt:timeZone>
4.1 <fmt:formatNumber> ํ๊ทธ
์ซ์ ์์์ ๋ง์ถฐ ์ถ๋ ฅํ๋ค.
์์ 12-13) use_number_tag.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>numberFormat ํ๊ทธ ์ฌ์ฉ</title></head>
<body>
<c:set var="price" value="10000" />
<fmt:formatNumber value="${price}" type="number" var="numberType" />
<br/>
ํตํ: <fmt:formatNumber value="${price}"
type="currency" currencySymbol="์" />
<br/>
ํผ์ผํธ: <fmt:formatNumber value="${price}"
type="percent" groupingUsed="false" />
<br/>
์ซ์: ${numberType}
<br/>
ํจํด: <fmt:formatNumber value="${price}" pattern="00000000.00"/>
</body>
</html>
</body>
</html>
groupingUsed="true"์ด๋ฉด 100๋จ์๋ก ,๊ฐ ์ฐํ๋ค. (๊ธฐ๋ณธ๊ฐ true)
4.2 <fmt:parseNumber> ํ๊ทธ
์์ 12-14) use_date_tag.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head><title>numberFormat ํ๊ทธ ์ฌ์ฉ</title></head>
<body>
<c:set var="now" value="<%= new java.util.Date() %>" />
<!-- ${now} -->
<fmt:formatDate value="${now}" type="date" dateStyle="full" /> <br>
<fmt:formatDate value="${now}" type="date" dateStyle="short" /> <br>
<fmt:formatDate value="${now}" type="time" /> <br>
<fmt:formatDate value="${now}" type="both"
dateStyle="full" timeStyle="full" /> <br>
<fmt:formatDate value="${now}" pattern="z a h:mm" /> <br>
<fmt:formatDate value="${now}" pattern="yyyy-MM-dd HH:mm:ss" />
</body>
</html>
MM: Month
mm: minute์ ์ ์ํ๋ค.
4.3 <fmt:formatDate> ํ๊ทธ
4.4 <fmt:parseDate> ํ๊ทธ
4.5 <fmt:timeZone> ํ๊ทธ์ <fmt:setTimeZone> ํ๊ทธ
5) web.xml ํ์ผ์ ๊ตญ์ ํ ๊ด๋ จ ๊ธฐ๋ณธ๊ฐ ์ค์ ํ๊ธฐ
12.4 ํจ์
Ch. 13 ์ดํด๋ฆฝ์ค๋ฅผ ์ด์ฉํ ์น ๊ฐ๋ฐ
์ฑ ์ ๋ชฉ์ฐจ
01 ์ดํด๋ฆฝ์ค ์ค์น ๋ฐ ์คํํ๊ธฐ
02 ์๋ฒ ์คํ ํ๊ฒฝ ์ค์ ํ๊ธฐ
03 UTF-8 ์ค์
04 ์น ํ๋ก์ ํธ ์์ฑํ๊ธฐ
05 JSP์ ์๋ฐ ์ฝ๋ ์์ฑํ๊ธฐ
5.1 JSP ์ถ๊ฐํ๊ธฐ
5.2 ์๋ฐ ์ฝ๋ ์ถ๊ฐํ๊ธฐ
5.3 jar ํ์ผ ์ถ๊ฐํ๊ธฐ
06 ์๋ฒ๋ฅผ ์ด์ฉํด์ ์น ์ดํ๋ฆฌ์ผ์ด์ ์คํํ๊ธฐ
07 ๋ฐฐํฌํ WAR ํ์ผ ์์ฑํ๊ธฐ
13.1 ์ดํด๋ฆฝ์ค ์ค์น ๋ฐ ์คํํ๊ธฐ p. 337
13.2 ์๋ฒ ์คํ ํ๊ฒฝ ์ค์ ํ๊ธฐ
13.3 UTF-8 ์ค์
13.4 ์น ํ๋ก์ ํธ ์์ฑํ๊ธฐ
13.5 JSP์ ์๋ฐ ์ฝ๋ ์์ฑํ๊ธฐ
1) JSP ์ถ๊ฐํ๊ธฐ
2) ์๋ฐ ์ฝ๋ ์ถ๊ฐํ๊ธฐ
3) jar ํ์ผ ์ถ๊ฐํ๊ธฐ
๋ฐ์ดํฐ ์ฐ๊ฒฐ ์ํฌ ๋ ํ์ํ๋ค.
12์ฅ์์ JSTL์ ์ฌ์ฉํ๊ธฐ ์ํด jstl-1.2.jar ํ์ผ์ WEB-INF/lib ํด๋์ ๋ณต์ฌํ๋ค.
13.6 ์๋ฒ๋ฅผ ์ด์ฉํด์ ์น ์ดํ๋ฆฌ์ผ์ด์
์คํํ๊ธฐ
Run As - Run on Server ๋ฉ๋ด๋ฅผ ์คํํ๋ค.