์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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๐ณ๐
[56] 230320 JSP Ch. 3 JSP๋ก ์์ํ๋ ์น ํ๋ก๊ทธ๋๋ฐ, Ch. 4 ํ์ ์ดํด ์์ [K-๋์งํธ ํธ๋ ์ด๋ 56์ผ] ๋ณธ๋ฌธ
[56] 230320 JSP Ch. 3 JSP๋ก ์์ํ๋ ์น ํ๋ก๊ทธ๋๋ฐ, Ch. 4 ํ์ ์ดํด ์์ [K-๋์งํธ ํธ๋ ์ด๋ 56์ผ]
yjyuwisely 2023. 3. 20. 12:48230320 Mon 56th class
230321 Tue 57th class
Ch. 3 JSP๋ก ์์ํ๋ ์น ํ๋ก๊ทธ๋๋ฐ
Ch. 4 ํ์ ์ดํด ์์
์ง๋: p. 50 ~ (๊ต์ฌ: ์ต๋ฒ๊ท ์ JSP 2.3 ์น ํ๋ก๊ทธ๋๋ฐ: ๊ธฐ์ด๋ถํฐ ์ค๊ธ๊น์ง, ์ ์: ์ต๋ฒ๊ท )
์ง๋: p. 80 ~ (๊ต์ฌ: ์ต๋ฒ๊ท ์ JSP 2.3 ์น ํ๋ก๊ทธ๋๋ฐ: ๊ธฐ์ด๋ถํฐ ์ค๊ธ๊น์ง, ์ ์: ์ต๋ฒ๊ท )
์ฑ
์์ ์ฝ๋: https://github.com/madvirus/jsp23
์ ์ ๋ธ๋ก๊ทธ: https://javacan.tistory.com/
์ค๋ ๋ฐฐ์ด ๊ฒ ์ค ๊ธฐ์ตํ ๊ฒ์ ์ ๋ฆฌํ๋ค.
- ์๋ฒ ์ฐ๊ฒฐํ ๋ Window - Show View - Servers ์ ํํ๋ค.
- WebContentํ์ผ ๋๋ฌ์ ํ์ผ ๋ง๋ ๋ค.
PART 1 ์น ํ๋ก๊ทธ๋๋ฐ ๊ธฐ์ด
Ch. 3 JSP๋ก ์์ํ๋ ์น ํ๋ก๊ทธ๋๋ฐ
์ฑ ์ ๋ชฉ์ฐจ
01 JSP์์ HTML ๋ฌธ์๋ฅผ ์์ฑํ๋ ๊ธฐ๋ณธ ์ฝ๋ ๊ตฌ์กฐ
02 JSP ํ์ด์ง์ ๊ตฌ์ฑ ์์
2.1 ๋๋ ํฐ๋ธ
2.2 ์คํฌ๋ฆฝํธ ์์
2.3 ๊ธฐ๋ณธ ๊ฐ์ฒด
2.4 ํํ ์ธ์ด
2.5 ํ์ค ์ก์ ํ๊ทธ์ ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
03 page ๋๋ ํฐ๋ธ
3.1 contentType ์์ฑ๊ณผ ์บ๋ฆญํฐ ์
3.2 import ์์ฑ
3.3 trimDirectiveWhitespaces ์์ฑ์ ์ด์ฉํ ๊ณต๋ฐฑ ์ฒ๋ฆฌ
3.4 JSP ํ์ด์ง์ ์ธ์ฝ๋ฉ๊ณผ pageEncoding ์์ฑ
04 ์คํฌ๋ฆฝํธ ์์
4.1 ์คํฌ๋ฆฝํธ๋ฆฟ
4.2 ํํ์
4.3 ์ ์ธ๋ถ
05 request ๊ธฐ๋ณธ ๊ฐ์ฒด
5.1 ํด๋ผ์ด์ธํธ ์ ๋ณด ๋ฐ ์๋ฒ ์ ๋ณด ์ฝ๊ธฐ
5.2 ์์ฒญ ํ๋ผ๋ฏธํฐ ์ฒ๋ฆฌ
5.2.1 HTML ํผ๊ณผ ์์ฒญ ํ๋ผ๋ฏธํฐ
5.2.2 request ๊ธฐ๋ณธ ๊ฐ์ฒด์ ์์ฒญ ํ๋ผ๋ฏธํฐ ๊ด๋ จ ๋ฉ์๋
5.2.3 GET ๋ฐฉ์ ์ ์ก๊ณผ POST ๋ฐฉ์ ์ ์ก
5.2.4 ์์ฒญ ํ๋ผ๋ฏธํฐ ์ธ์ฝ๋ฉ
5.2.5 ํฐ์บฃ์์ GET ๋ฐฉ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ํ ์ธ์ฝ๋ฉ ์ฒ๋ฆฌํ๊ธฐ
5.3 ์์ฒญ ํค๋ ์ ๋ณด์ ์ฒ๋ฆฌ
06 response ๊ธฐ๋ณธ ๊ฐ์ฒด
6.1 ์น ๋ธ๋ผ์ฐ์ ์ ํค๋ ์ ๋ณด ์ ์กํ๊ธฐ
6.2 ์น ๋ธ๋ผ์ฐ์ ์บ์ ์ ์ด๋ฅผ ์ํ ์๋ต ํค๋ ์ ๋ ฅ
6.3 ๋ฆฌ๋ค์ด๋ ํธ๋ฅผ ์ด์ฉํด์ ํ์ด์ง ์ด๋ํ๊ธฐ
07 JSP ์ฃผ์
JSP ์ฝ๋๋ฅผ ์์ฑํ๋ ์ฃผ๋ ๋ชฉ์ ์ ์น ๋ธ๋ผ์ฐ์ ์ ๋ณด์ฌ ์ค HTML ๋ฌธ์๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋ค. ๋๋ถ๋ถ์ JSP ์ฝ๋๋ HTML์ ์์ฑํ๋ค.
3.1 JSP์์ HTML ๋ฌธ์๋ฅผ ์์ฑํ๋ ๊ธฐ๋ณธ ์ฝ๋ ๊ตฌ์กฐ
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- ๋๋ ํฐ๋ธ -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>HTML ๋ฌธ์์ ์ ๋ชฉ</title>
</head>
<body>
<% // ์คํฌ๋ฆฝํธ์์
String bookTitle = "JSP ํ๋ก๊ทธ๋๋ฐ";
String author = "์ต๋ฒ๊ท ";
%>
<b><%= bookTitle %></b>(<%= author %>)์
๋๋ค. <!-- ์คํฌ๋ฆฝํธ ์์ 2๊ฐ -->
<!-- %๋ค์ = ๋ ์ถ๋ ฅํ๋ผ๋ ์๋ฏธ -->
</body>
</html>
01ํ: ์ค์ ๋ถ๋ถ
02-13ํ: ์์ฑ ๋ถ๋ถ
์คํํด ๋ณด๊ธฐ) ์ดํด๋ฆฝ์ค์์ ํ์ผ ์ฐํด๋ฆญ run as๋ฅผ ๋๋ฅธ๋ค.
์คํ ์ค๋ฅ ๋ฌ์ ๋ ํด๊ฒฐ ์ฐธ๊ณ ๋งํฌ
๊ฒฐ๊ณผ)
ํฐ์บฃ: ๋ฐฐํฌํ ๋ ๋๋ค.
3.2 JSP ํ์ด์ง์ ๊ตฌ์ฑ ์์
1) ๋๋ ํฐ๋ธ
2) ์คํฌ๋ฆฝํธ ์์
ํํ์(Expression): ๊ฐ์ ์ถ๋ ฅํ๋ค. (=)
์คํฌ๋ฆฝํธ๋ฆฟ(Scriptlet): ์๋ฐ ์ฝ๋๋ฅผ ์คํํ๋ค.
์ ์ธ๋ถ(Declaration): ์๋ฐ ๋ฉ์๋(ํจ์)๋ฅผ ๋ง๋ ๋ค.
3) ๊ธฐ๋ณธ ๊ฐ์ฒด
4) ํํ ์ธ์ด (Expression Language) p. 55
์๋ฐ ๋ฌธ๋ฒ ๋์ , ๋ ๊ฐ์ ๋ฌธ์์ด ๊ฐ์ ์ ์๋ก ๋ณํํ ๋ค, ๋ ์ซ์๋ฅผ ๊ณฑํ ๊ฐ์ ์๋ต์ผ๋ก ์ถ๋ ฅํ๋ ์ฝ๋๋ฅผ ์๋์ ํํ ์ธ์ด๋ก ๊ฐ๊ฒฐํ๊ฒ ๋ํ๋ผ ์ ์๋ค.
a * b = ${param.a * param.b}
ํํ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ฝ๋๋ฅผ ๊ฐ๊ฒฐํ๊ณ ์ดํดํ๊ธฐ ์ข๊ฒ ๋ง๋ค์ด์ฃผ๊ธฐ ๋๋ฌธ์, ํน๋ณํ ์ด์ ๊ฐ ์๋ ํ ํํ ์ธ์ด๋ฅผ ์ฃผ๋ก ์ฌ์ฉํ๋ค. (Ch. 11 ํํ ์ธ์ด (Expression Language)์์ ์์ธํ๊ฒ ์ดํด๋ณธ๋ค.)
5) ํ์ค ์ก์ ํ๊ทธ์ ํ๊ทธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
3.3 page ๋๋ ํฐ๋ธ p. 55
์์ฑ | ์ค๋ช | ๊ธฐ๋ณธ๊ฐ |
contentType |
JSP๊ฐ ์์ฑํ ๋ฌธ์์ MIME ํ์ ๊ณผ ์บ๋ฆญํฐ ์ธ์ฝ๋ฉ์ ์ง์ ํ๋ค. | text/html |
import |
JSP ํ์ด์ง์์ ์ฌ์ฉํ ์๋ฐ ํด๋์ค๋ฅผ ์ง์ ํ๋ค. | |
session |
JSP ํ์ด์ง๊ฐ ์ธ์
์ ์ฌ์ฉํ ์ง์ ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ค. "true"์ผ ๊ฒฝ์ฐ ์ธ์ ์ ์ฌ์ฉํ๊ณ , "false"์ผ ๊ฒฝ์ฐ ์ธ์ ์ ์ฌ์ฉํ์ง ์๋๋ค. |
true |
buffer |
JSP ํ์ด์ง์ ์ถ๋ ฅ ๋ฒํผ ํฌ๊ธฐ๋ฅผ ์ง์ ํ๋ค. "none"์ผ ๊ฒฝ์ฐ ์ถ๋ ฅ ๋ฒํผ๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉฐ, "8kb"๋ผ๊ณ ์ ๋ ฅํ ๊ฒฝ์ฐ 8ํฌ๋ก๋ฐ์ดํธ ํฌ๊ธฐ์ ์ถ๋ ฅ ๋ฒํผ๋ฅผ ์ฌ์ฉํ๋ค. |
์ต์ 8kb |
autoFlush |
์ถ๋ ฅ ๋ฒํผ๊ฐ ๋ค ์ฐผ์ ๊ฒฝ์ฐ ์๋์ผ๋ก ๋ฒํผ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅ ์คํธ๋ฆผ์ ๋ณด๋ด๊ณ ๋น์ธ์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ธ๋ค. "true"์ธ ๊ฒฝ์ฐ ๋ฒํผ์ ๋ด์ฉ์ ์น ๋ธ๋ผ์ฐ์ ์ ๋ณด๋ธ ํ ๋ฒํผ๋ฅผ ๋น์ฐ๋ฉฐ, "false"์ธ ๊ฒฝ์ฐ ์๋ฌ๋ฅผ ๋ฐ์์ํจ๋ค. |
|
info |
JSP ํ์ด์ง์ ๋ํ ์ค๋ช ์ ์ ๋ ฅํ๋ค. | |
errorPage |
JSP ํ์ด์ง๋ฅผ ์คํํ๋ ๋์ค์ ์๋ฌ๊ฐ ๋ฐ์ํ ๋ ๋ณด์ฌ์ค ํ์ด์ง๋ฅผ ์ง์ ํ๋ค. | |
iserrorPage |
ํ์ฌ ํ์ด์ง๊ฐ ์๋ฌ๊ฐ ๋ฐ์๋ ๋ ๋ณด์ฌ์ฃผ๋ ํ์ด์ง์ธ์ง์ ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ค. "true"์ผ ๊ฒฝ์ฐ ์๋ฌ ํ์ด์ง์ด๋ฉฐ, "false"์ผ ๊ฒฝ์ฐ ์๋ฌ ํ์ด์ง๊ฐ ์๋๋ค. |
false |
pageEncoding |
JSP ํ์ด์ง ์์ค ์ฝ๋์ ์บ๋ฆญํฐ ์ธ์ฝ๋ฉ์ ์ง์ ํ๋ค. | |
isELIgnored |
"true"์ผ ๊ฒฝ์ฐ ํํ ์ธ์ด๋ฅผ ํด์ํ์ง ์๊ณ ๋ฌธ์์ด๋ก ์ฒ๋ฆฌํ๋ฉฐ, "false"์ผ ๊ฒฝ์ฐ ํํ ์ธ์ด๋ฅผ ์ง์ํ๋ค. |
false |
deferredSyntaxAllowedAsLiteral |
#{ ๋ฌธ์๊ฐ ๋ฌธ์์ด ๊ฐ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒ์ ํ์ฉํ ์ง์ ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ค. | false |
trimDirectiveWhitespaces |
์ถ๋ ฅ ๊ฒฐ๊ณผ์์ ํ ํ๋ฆฟ ํ ์คํธ์ ๊ณต๋ฐฑ ๋ฌธ์๋ฅผ ์ ๊ฑฐํ ์ง์ ์ฌ๋ถ๋ฅผ ์ง์ ํ๋ค. | false |
์์ ์ฝ๋์ ์ฒซ ์ค์ ๋ํ ์ค๋ช ์ด๋ค.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!-- ๋๋ ํฐ๋ธ -->
1) contentType ์์ฑ๊ณผ ์บ๋ฆญํฐ ์
์์) invalidCharset.jsp
<%@ page contentType="text/html; charset=iso-8859-1" %>
<%@ page import="java.util.Date" %>
<%
Date now = new Date();
%>
<html>
<head><title>ํ์ฌ ์๊ฐ</title></head>
<body>
ํ์ฌ ์๊ฐ:
<%= now %>
</body>
</html>
๊ฒฐ๊ณผ)
2) import ์์ฑ
3) trimDirectiveWhitespaces ์์ฑ์ ์ด์ฉํ ๊ณต๋ฐฑ ์ฒ๋ฆฌ
4) JSP ํ์ด์ง์ ์ธ์ฝ๋ฉ๊ณผ pageEncoding ์์ฑ
3.4 ์คํฌ๋ฆฝํธ ์์ p. 65
<%@ %> : ๋๋ ํฐ๋ธ
์คํฌ๋ฆฝํธ ์์
1. ์คํฌ๋ฆฝํธ๋ฆฟ: <% %> : ์๋ฐ ์คํ
2. ํํ์: <%= ๊ฐ %> : ์ถ๋ ฅ
3. ์ ์ธ๋ถ: <%! %>
1) ์คํฌ๋ฆฝํธ๋ฆฟ(Scriptlet) <% %>
JSP ํ์ด์ง์์ ์๋ฐ ์ฝ๋๋ฅผ ์คํํ ๋ ์ฌ์ฉํ๋ ์ฝ๋ ๋ธ๋ก์ด๋ค.
<%
์๋ฐ์ฝ๋1;
์๋ฐ์ฝ๋2;
์๋ฐ์ฝ๋3;
...
%>
'<%'๋ก ์์ํด์ '%>'๋ก ๋๋๋ฉฐ, '<%'์ '%>' ์ฌ์ด์๋ ์คํํ ์๋ฐ ์ฝ๋๊ฐ ์์นํ๋ค.
์์ 3-8) 1๋ถํฐ 10๊น์ง์ ํฉ์ ๊ตฌํ๋ JSP ํ์ด์ง oneToTen.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>one To Ten</title>
</head>
<body>
<%
int sum = 0;
for (int i = 1; i <= 10; i++){
sum = sum + i;
}
%>
1๋ถํฐ 10๊น์ง์ ํฉ์ <%= sum %> ์
๋๋ค.
</body>
</html>
๊ฒฐ๊ณผ)
2) ํํ์(Expression) <%= ๊ฐ %>
์ด๋ค ๊ฐ์ ์ถ๋ ฅ ๊ฒฐ๊ณผ์ ํฌํจ์ํค๊ณ ์ ํ ๋ ์ฌ์ฉ๋๋ค.
<%= ๊ฐ %>
<%= sum %>
'<%'๋ก ์์ํด์ '%>'๋ก ๋๋๋ฉฐ, '<%'์ '%>' ์ฌ์ด์๋ ์ถ๋ ฅํ ๊ฐ์ด ์์นํ๋ค.
3) ์ ์ธ๋ถ(Declaration) <%! %>
JSP ํ์ด์ง์ ์คํฌ๋ฆฝํธ๋ฆฟ์ด๋ ํํ์์์ ์ฌ์ฉํ ์ ์๋ ๋ฉ์๋๋ฅผ ์์ฑํ ๋์๋ ์ ์ธ๋ถ(declaration)๋ฅผ ์ฌ์ฉํ๋ค.
<%!
public ๋ฆฌํดํ์
๋ฉ์๋์ด๋ฆ(ํ๋ผ๋ฏธํฐ๋ชฉ๋ก){ <!-- ๋ฉ์๋ ๋ด์์ ์ฌ์ฉ๋ ๋ณ์ -->
์๋ฐ์ฝ๋1;
์๋ฐ์ฝ๋2;
...
์๋ฐ์ฝ๋3;
return ๊ฐ;
}
%>
์ ์ธ๋ถ์ ์์น๋ ์๊ด์๋ค.
์์ 3-11) ์ ์ธ๋ถ๋ฅผ ์ฌ์ฉํ์ฌ ๋ ์ ์์ ๊ณฑ์ ๊ณ์ฐํด ์ฃผ๋ ์ useDecl.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%!
public int multiply(int a, int b){
int c = a * b;
return c;
}
%>
<html>
<head>
<meta charset="UTF-8">
<title>์ ์ธ๋ถ๋ฅผ ์ฌ์ฉํ ๋ ์ ์๊ฐ์ ๊ณฑ</title>
</head>
<body>
10 * 25 = <%= multiply(10,25) %>
</body>
</html>
๊ฒฐ๊ณผ)
HTML์ ์ด์ด, CSS, Javascript ์ฐ๊ฒฐํ๋ค.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%!
public int multiply(int a, int b){
int c = a * b;
return c;
}
%>
<html>
<head>
<!-- CSS ์ฐ๊ฒฐ -->
<!-- javascript ์ฐ๊ฒฐ -->
<meta charset="UTF-8">
<title>์ ์ธ๋ถ๋ฅผ ์ฌ์ฉํ ๋ ์ ์๊ฐ์ ๊ณฑ</title>
</head>
<body>
10 * 25 = <%= multiply(10,25) %>
</body>
</html>
์น์์๋ ์ฌ์ฉํ๋ ์๋ฐ๊ฐ์ฒด๋ค์ด ์ ํด์ ธ ์๋ค. (request, response ๋ฑ)
3.5 request ๊ธฐ๋ณธ ๊ฐ์ฒด p. 72
request ๊ธฐ๋ณธ ๊ฐ์ฒด๋ ์น ๋ธ๋ผ์ฐ์ ์ ์์ฒญ๊ณผ ๊ด๋ จ์ด ์๋ค. ์น ๋ธ๋ผ์ฐ์ ์ ์น ์ฌ์ดํธ์ ์ฃผ์๋ฅผ ์ ๋ ฅํ๋ฉด, ์น ๋ธ๋ผ์ฐ์ ๋ ํด๋น ์น ์๋ฒ์ ์ฐ๊ฒฐํ ํ ์์ฒญ ์ ๋ณด๋ฅผ ์ ์กํ๋ ๋ฐ ์ด ์์ฒญ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด request ๊ธฐ๋ณธ ๊ฐ์ฒด์ด๋ค.
1) ํด๋ผ์ด์ธํธ ์ ๋ณด ๋ฐ ์๋ฒ ์ ๋ณด ์ฝ๊ธฐ
request ๊ธฐ๋ณธ ๊ฐ์ฒด๋ ์น ๋ธ๋ผ์ฐ์ , ์ฆ ํด๋ผ์ด์ธํธ๊ฐ ์ ์กํ ์ ๋ณด์ ์๋ฒ ์ ๋ณด๋ฅผ ๊ตฌํ ์ ์๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
์์ 3-13) ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ฃผ๋ ์์ JSP ํ์ด์ง requestInfo.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>
ํด๋ผ์ด์ธํธID = <%= request.getRemoteAddr() %> <br>
์์ฒญ์ ๋ณด๊ธธ์ด = <%= request.getContentLength() %> <br>
์์ฒญ์ ๋ณด ์ธ์ฝ๋ฉ = <%= request.getCharacterEncoding() %> <br>
์์ฒญ์ ๋ณด ์ปจํ
์ธ ํ์
= <%= request.getContentType() %> <br>
์์ฒญ์ ๋ณด ํ๋กํ ์ฝ = <%= request.getProtocol() %> <br>
์์ฒญ์ ๋ณด ์ ์ก๋ฐฉ์ = <%= request.getMethod() %> <br>
์์ฒญ URI = <%= request.getRequestURI() %> <br>
์ปจํ
์คํธ ๊ฒฝ๋ก = <%= request.getContextPath() %> <br>
์๋ฒ์ด๋ฆ = <%= request.getServerName() %> <br>
์๋ฒํฌํธ = <%= request.getServerPort() %> <br>
</body>
</html>
๊ฒฐ๊ณผ)
์์ฒญ URI, ์๋ฒ์ด๋ฆ, ์๋ฒํฌํธ๊ฐ ํํ๊ฒ ์ฐ์ธ๋ค.
URL ์ฃผ์๋ฅผ ํตํด์ ๋ช
๋ น์ ๋ด๋ฆฐ๋ค.
localhost:8081 ์์ ์๋ JSPExample์ด ์ปจํ
์คํธ ๊ฒฝ๋ก์ด๋ค.
๋ฐ๋ก ์ค์ ํ์ง ์์ผ๋ฉด ํ๋ก์ ํธ ์ด๋ฆ์ด๋ค.
์๋ฒ ์ด๋ฆ์ localhost์ด๋ค. (๋๋ฉ์ธ์ ์ ์์ผ๋ฏ๋ก)
๊ทธ๋ฆผ ์ฐธ๊ณ : https://ulralra-dev.tistory.com/20
์ฌ๊ธฐ์ ์ปจํ ์คํธ ๊ฒฝ๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅํ๋ค. Edit๋ฅผ ์ปจํ ์คํธ ๊ฒฝ๋ก(์ฌ๊ธฐ์ , JSPExample์ ์ง์ธ ์ ์๋ค.)
https://www.naver.com/
http://localhost:8081/JSPExample/230320p73requestInfo.jsp
2) ์์ฒญ ํ๋ผ๋ฏธํฐ ์ฒ๋ฆฌ
ex) ๋ค์ด๋ฒ์ ๊ฒ์ํ๋ ๊ฒ, ๊ฒ์ํ์ ๊ธ ์ฐ๋ ๊ฒ
2.1) HTML ํผ๊ณผ ์์ฒญ ํ๋ผ๋ฏธํฐ
ํ๋ผ๋ฏธํฐ: ๋งค๊ฐ๋ณ์
<input> ํ๊ทธ์ name ์์ฑ์ด ์ค์ํ๋ค.
name ์์ฑ์ ๊ฐ์ด ์
๋ ฅ ์์์ ์ด๋ฆ์ด ๋๋ค.
์ด๋ฆ: <input type="text" name="name" size="10"> <br>
์ฃผ์: <input type="text" name="address" size="30"> <br>
์ข์ํ๋ ๋๋ฌผ:
<input type="checkbox" name="pet" value="dog">๊ฐ์์ง
<input type="checkbox" name="pet" value="cat">๊ณ ์์ด
<input type="checkbox" name="pet" value="pig">๋ผ์ง
2.2) request ๊ธฐ๋ณธ ๊ฐ์ฒด์ ์์ฒญ ํ๋ผ๋ฏธํฐ ๊ด๋ จ ๋ฉ์๋
์์) ํผ์ ์ ๋ ฅํ ๊ฐ์ ์ถ๋ ฅํด ์ฃผ๋ JSP ํ์ด์ง [์ฌ์ฉ์๋ฅผ ์ํ ํผ] form.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>
<!-- ์ฌ์ฉ์๋ฅผ ์ํ ํผ(ํ๋ฉด) -->
<form action="viewParameter.jsp" method="post">
<!-- action: ์๋ฒ ์ด๋ฆ, ํน์ ํด๋ ๋ด์ ์ํ๋ ๊ฑฐ๋ฉด ํด๋ ์ง์ ํ๊ธฐ ํด๋/viewParameter.jsp -->
์ด๋ฆ: <input type="text" name="name" size="10"> <br>
์ฃผ์: <input type="text" name="address" size="30"> <br>
์ข์ํ๋ ๋๋ฌผ:
<input type="checkbox" name="pet" value="dog">๊ฐ์์ง
<input type="checkbox" name="pet" value="cat">๊ณ ์์ด
<input type="checkbox" name="pet" value="pig">๋ผ์ง
<br>
<input type="submit" value="์ ์ก">
</form>
</body>
</html>
๊ฒฐ๊ณผ)
์์ 3-15) ํผ์ ์ ๋ ฅํ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ค๋ค. [์๋ฒ] viewParameter.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%
request.setCharacterEncoding("utf-8");
%>
<html>
<head>
<meta charset="UTF-8">
<title>์์ฒญ ํ๋ผ๋ฏธํฐ ์ถ๋ ฅ</title>
</head>
<body>
name ํ๋ผ๋ฏธํฐ = <%= request.getParameter("name") %> <br> <!-- ๋ณ์์ ์ ์ฅํ์ง ์๊ณ ๋ฐ๋ก ์ถ๋ ฅ -->
address ํ๋ผ๋ฏธํฐ = <%= request.getParameter("address") %>
<p> <!-- ์ํฐ ํจ๊ณผ -->
<%
String[] values = request.getParameterValues("pet"); //๊ฐ์ ์ด๋ฆ "pet"์ผ๋ก ๋๋ค.
if (values != null){
for (int i = 0; i < values.length; i++){
%>
<%= values[i] %>
<%
}
}
%>
</body>
</html>
๊ฒฐ๊ณผ)
2.3) GET ๋ฐฉ์ ์ ์ก๊ณผ POST ๋ฐฉ์ ์ ์ก
Get ๋ฐฉ์
<form action="viewParameter.jsp" method="get">
URL ์ฃผ์ ๋ค์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ถ์ฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ๋ ๋ฐฉ์์ด๋ค.
(URL(Uniform Resource Locator): ์ธํฐ๋ท์์ ์น ํ์ด์ง, ์ด๋ฏธ์ง, ๋น๋์ค ๋ฑ ๋ฆฌ์์ค์ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ฌธ์์ด)
Get ๋ฐฉ์์ด Post ๋ฐฉ์๋ณด๋ค ๋น๊ต์ ์ ์ก๋๋ ์๋๊ฐ ๋น ๋ฅด๋ ๋ณด์์๋ ์ทจ์ฝํ๋ค.
method๋ฅผ ๋ฐ๋ก ์ธ๊ธ ์ ํ๋ฉด ๊ธฐ๋ณธ์ ์ผ๋ก Get ๋ฐฉ์์ด๋ค.
ex) ๊ฒ์์ด
ex) file:///D:/221229/html/WebContent/ch03_02_req.html?id=1234&password=5678
๊ธฐ๋ณธ์ GET ๋ฐฉ์์ด๋ค.
Post ๋ฐฉ์
http://localhost:8081/JSPExample/viewParameter.jsp
<form action="viewParameter.jsp" method="post">
์ฌ์ฉ์๊ฐ ์
๋ ฅํ ๋ฐ์ดํฐ๋ฅผ URL ์ฃผ์์ ๋ถ์ด์ง ์๊ณ HTTP Request ํค๋์ ํฌํจ์์ผ ์ ๋ฌํ๋ ๋ฐฉ์์ด๋ค.
Post ๋ฐฉ์์ด Get ๋ฐฉ์๋ณด๋ค ๋ณด์์๋ ๊ฐํ๋, ์๋๋ ๋๋ฆฌ๋ค.
๊ธธ์ด ์ ํ์ด ์์ผ๋ฉฐ, ๋ณด์์ด ์ ์ง๋๋ค.
ex) ๋ก๊ทธ์ธ
ex) file:///D:/221229/html/WebContent/ch03_02_req.html
loginform.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>
<form action="login.jsp" method="post">
์์ด๋: <input type="text" name="memberId">
<input type="submit" value="๋ก๊ทธ์ธ">
</form>
</body>
</html>
์์ 3-19) login.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>
<%
//์ฌ์ฉ์ํ๋ฉด(loginform.jsp)์์ ๋ก๊ทธ์ธํ ๋ ์์ด๋(memberId)๊ฐ์ ์๋ฒ์ ์ ์ก
//๋ก๊ทธ์ธ์ ํด๋ผ๋ผ๊ณ ์์ฒญ
String id = request.getParameter("memberId");
//์์ด๋ ์
๋ ฅํ๊ณ , madvirus์ด๋ฉด(๊ฒ์ฆ)
if (id != null && id.equals("madvirus")) {
//์๋ฒ์์ ์ฌ์ฉ์์๊ฒ ๋ก๊ทธ์ธ์ ํ๋ฉด์ index.jsp๋ก ์ด๋(์๋ต)
response.sendRedirect("index.jsp");
} else { //๊ทธ๋ ์ง ์์ผ๋ฉฐ
%>
<!-- ์๋ชป๋ ์์ด๋์
๋๋ค๋ฅผ ์ถ๋ ฅํ๋ค. -->
์๋ชป๋ ์์ด๋์
๋๋ค
"๋ก๊ทธ์ธ ์คํจ"<br>
<a href="loginform.jsp">๋ค์ ๋ก๊ทธ์ธํ๊ธฐ</a>
</body>
</html>
<%
}
%>
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>3์ฅ ์์ </title>
</head>
<body>
3์ฅ์ ์ธ๋ฑ์ค ํ์ด์ง
"๋ก๊ทธ์ธ ์ฑ๊ณต"
</body>
</html>
์ฐธ๊ณ : https://rsorry.tistory.com/188
๊ฒฐ๊ณผ)
2.4) ์์ฒญ ํ๋ผ๋ฏธํฐ ์ธ์ฝ๋ฉ
์๋ ์ฝ๋๋ฅผ ์ฌ์ฉํด์ POST ๋ฐฉ์์ ํ๊ธ ๊นจ์ง์ ๋ฐฉ์งํ๋ค.
<%
request.setCharacterEncoding("utf-8");
%>
<a> ํ๊ทธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก GET ๋ฐฉ์์ด๋ค.
2.5) ํฐ์บฃ์์ GET ๋ฐฉ์ ํ๋ผ๋ฏธํฐ๋ฅผ ์ํ ์ธ์ฝ๋ฉ ์ฒ๋ฆฌํ๊ธฐ
ํฐ์บฃ 8๋ถํฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์ ์ด ๋์ด์๋ค.
3) ์์ฒญ ํค๋ ์ ๋ณด์ ์ฒ๋ฆฌ
3.6 response ๊ธฐ๋ณธ ๊ฐ์ฒด
1) ์น ๋ธ๋ผ์ฐ์ ์ ํค๋ ์ ๋ณด ์ ์กํ๊ธฐ
2) ์น ๋ธ๋ผ์ฐ์ ์บ์ ์ ์ด๋ฅผ ์ํ ์๋ต ํค๋ ์
๋ ฅ
3) ๋ฆฌ๋ค์ด๋ ํธ๋ฅผ ์ด์ฉํด์ ํ์ด์ง ์ด๋ํ๊ธฐ
๋ฆฌ๋ค์ด๋ ํธ: ์น ์๋ฒ๊ฐ ์น ๋ธ๋ผ์ฐ์ ์๊ฒ ๋ค๋ฅธ ํ์ด์ง๋ก ์ด๋ํ๋ผ๊ณ ์๋ตํ๋ ๊ธฐ๋ฅ
ex) ์ฌ์ฉ์๊ฐ ๋ก๊ทธ์ธ์ ์ฑ๊ณตํ ํ ๋ฉ์ธ ํ์ด์ง๋ก ์๋์ผ๋ก ์ด๋ํ๋ ์ฌ์ดํธ
response.sendRedirect(String location)
์์ 3-19) login.jsp
<%@ page contentType="text/html; charset=utf-8" %>
<%
String id = request.getParameter("memberId");
if (id != null && id.equals("madvirus")) {
response.sendRedirect("/chap03/index.jsp"); <!-- ํ๋ผ๋ฏธํฐ ๊ฐ์ด "madvirus"๋ฉด
"/chap03/index.jsp" ํ์ด์ง๋ก ์ด๋ํ๋ค. -->
} else {
%>
<html>
<head><title>๋ก๊ทธ์ธ์ ์คํจ</title></head>
<body>
์๋ชป๋ ์์ด๋์
๋๋ค.
</body>
</html>
<%
}
%>
3.7 JSP ์ฃผ์
JSP ์ฝ๋ ์์ฒด๋ฅผ ์ฃผ์ ์ฒ๋ฆฌํ๋ค.
<%-- ์ฃผ์ --%>
Ch. 4 ํ์ ์ดํด ์์
์ฑ ์ ๋ชฉ์ฐจ
01 JSP ์ฒ๋ฆฌ ๊ณผ์
02 ์ถ๋ ฅ ๋ฒํผ์ ์๋ต
2.1 page ๋๋ ํฐ๋ธ์์ ๋ฒํผ ์ค์ ํ๊ธฐ: buffer ์์ฑ๊ณผ autoFlush ์์ฑ
03 ์น ์ ํ๋ฆฌ์ผ์ด์ ํด๋ ๊ตฌ์ฑ๊ณผ URL ๋งคํ
3.1 ์น ์ ํ๋ฆฌ์ผ์ด์ ํด๋์ URL์ ๊ด๊ณ
3.2 ์น ์ดํ๋ฆฌ์ผ์ด์ ํด๋ ๋ด์์์ ํ์ ํด๋ ์ฌ์ฉ
04 ์น ์ดํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ
4.1 ํฐ์บฃ์ war ํ์ผ ๋ฐฐํฌํ๊ธฐ
4.1 JSP ์ฒ๋ฆฌ ๊ณผ์
4.2 ์ถ๋ ฅ ๋ฒํผ์ ์๋ต
1) page ๋๋ ํฐ๋ธ์์ ๋ฒํผ ์ค์ ํ๊ธฐ: buffer ์์ฑ๊ณผ autoFlush ์์ฑ
4.3 ์น ์ดํ๋ฆฌ์ผ์ด์ ํด๋ ๊ตฌ์ฑ๊ณผ URL ๋งคํ
1) ์น ์ดํ๋ฆฌ์ผ์ด์
ํด๋์ URL์ ๊ด๊ณ
2) ์น ์ดํ๋ฆฌ์ผ์ด์
ํด๋ ๋ด์์์ ํ์ ํด๋ ์ฌ์ฉ
4.4 ์น ์ดํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ p. 110
์น ์ ํ๋ฆฌ์ผ์ด์
์ WAS(Web Application Server)์ ๋ฐฐํฌํ๋ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ง๋ค.
- ๋์ ํด๋์ ํ์ผ์ ์ง์ ๋ณต์ฌ
- ์น ์ ํ๋ฆฌ์ผ์ด์
์ war ํ์ผ๋ก ๋ฌถ์ด์ ๋ฐฐํฌ: ๋ก์ปฌ PC(๋ณธ์ธ์ PC)๊ฐ ์๋ ๋ค๋ฅธ ์ปดํจํฐ์ ํด๋์ ๋ณต์ฌํ ๊ฒฝ์ฐ FTP์ ๊ฐ์ ํ์ผ ์ ์ก ๊ธฐ๋ฅ์ ์ด์ฉํด์ ๋ฐฐํฌํ๋ค.
์น ์ดํ๋ฆฌ์ผ์ด์
์๋ฒ(WAS(Web Application Server)):
์น์ ์ํ ์ฐ๊ฒฐ, ํ๋ก๊ทธ๋๋ฐ ์ธ์ด, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋๊ณผ ๊ฐ์ด ์ดํ๋ฆฌ์ผ์ด์
์ ๊ตฌํํ๋๋ฐ ํ์ํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ์๋ฒ ํ๋ก๊ทธ๋จ,
์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ฑ ์์๋ฅผ ํ๋๋ก ๋ฌถ์ด ๋์ ํ์ผ
IP๋ก ์ ์ํ๋ฉด ํดํน ์ํ์ด ์๋ค. ๋๋ฉ์ธ์ผ๋ก ์ ์ํ๋ค.
1) ํฐ์บฃ์ war ํ์ผ ๋ฐฐํฌํ๊ธฐ
์ดํด๋ฆฝ์ค ๋ด ์ ์ฒด ํ์ผ(์ฌ๊ธฐ์ JSPExample)์ ์ฐ์ธก ๋ฒํผ์ ๋๋ฌ์ Export๋ฅผ ํด๋ฆญํ๋ค.
์๋ ์์น๋๋ก ์ง์ ํ๋ค.
JSPExample.war๊ฐ ์ ์ฅ๋๋ค.
Tomcat85w.exe๋ฅผ ์คํํ๋ค.
JSPExample ํ์ผ ํด๋๊ฐ ์์ฑ๋๋ค.
JSPExample ํด๋๋ฅผ ๋๋ ๋๋ฐ ์ด๋๊น์ง ๊ณต๋ถํ ๋ด์ฉ์ด ํ์ผ ํด๋ ์์ ๋ฌ๋ค. ๋ฐฐํฌ๊ฐ ์๋ฃ๋๋ค.
๋ ๊ฐ์ ํฐ์บฃ์ ๋์์ ์คํํ ์ ์๋ค. (์๋์ฐ์ฉ, ์ดํด๋ฆฝ์ค์ฉ)
๋นจ๊ฐ ๋ฒํผ์ ๋๋ฌ์ ์ดํด๋ฆฝ์ค์ฉ ํฐ์บฃ์ ๊บผ์ง๋ค.
๋ฐฐํฌํ ๋๋ ์ดํด๋ฆฝ์ค์ฉ ํฐ์บฃ์ ๋๊ณ war ํ์ผ์ ์์ถ์์ผ์ ๋ฐฐํฌํ๋ค.
๋๋ฉ์ธ์ด ์์ผ๋ฏ๋ก local host๋ก ํ๋ฉด ์งํ๋๋ค.
์์ถํ๊ธฐ ์ฐธ๊ณ : https://mindols.tistory.com/151
์ฐธ๊ณ : https://www.w3schools.blog/how-to-create-war-file-in-eclipse