Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Hanbit eBook
Realtime 18
์กฐํจ์ ์ง์
JSP ๋ฐ์ด๋ธSTEP 01
JSP ์์๊ณผ ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถ
JSP ๋ฐ์ด๋ธSTEP 01: JSP ์์๊ณผ ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถ
์ง์์ด_ ์กฐํจ์
์๊ณ ๋ฆฌ์ฆ/์ต์ ํ๋ฅผ ์ด์ฉํ ๊ฒ์ ์์ง, ์ฆ๊ถ/์ฃผ์ ๋ถ์ ์์ง , SOA ์๋น์ค ๊ตฌํ ๊ฒฝํ์ ๋ฐํ์ผ๋ก
ํ๋ก๊ทธ๋จ ์ธ์ด, ์ํคํ ์ฒ, CBD, SOA, ์น ํ๋ก๊ทธ๋๋ฐ, ์๋๋ก์ด๋ ๋ฑ ์ค๋ฌด ์์ฃผ์ ๊ฐ์๋ฅผ ์งํํ๊ณ
์๋ค.
(ํ) ํ๋ฆฌ๋์
(์ ) ํ๊ฒฝ๋ท์ปด ์์ ๊ฐ์ฌ/์ฐจ์ฅ
(์ ) ํ๊ตญ์ ๋ณด๊ธฐ์ ์ฐ๊ตฌ์ OOP/CBD ์ ์ ์ฐ๊ตฌ์
(์ ) ORACLE SOA ๊ฐ์ฌ
(์ ) ์ฌ๋ง์ดํฌ๋ก ์์คํ ์ฆ ๊ณต์ธ ๊ฐ์ฌ
JSP ๋ฐ์ด๋ธ STEP 01: JSP ์์๊ณผ ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ์ถ
์ดํ๋ฐํ 2013๋ 2์ 28์ผ
์ง์์ด ์กฐํจ์ / ํด๋ธ์ด ๊นํํ
ํด๋ธ๊ณณ ํ๋น๋ฏธ๋์ด(์ฃผ) / ์ฃผ์ ์์ธ์ ๋งํฌ๊ตฌ ์ํ๋ก 7๊ธธ 83 ํ๋น๋ฏธ๋์ด(์ฃผ) IT์ถํ๋ถ
์ ํ 02-325-5544 / ํฉ์ค 02-336-7124
๋ฑ๋ก 1999๋ 6์ 24์ผ ์ 10-1779ํธ
ISBN 978-89-6848-601-2 15560 / ๋น๋งคํ
์ฑ ์ํธ์ง ๋ฐฐ์ฉ์ / ๊ธฐํยทํธ์ง ์ค๋งํธ๋ฏธ๋์ดํ
๋์์ธ ํ์ง ์ฌ๋์ผ, ๋ด์ง ์คํ๋์ค [๋ฐ], ์กฐํ ๊นํ๋ฏธ
๋ง์ผํ ๋ฐ์์ฉ, ๋ฐ์ฃผํ, ์ ๋ฏผํ
์ด ์ฑ ์ ๋ํ ์๊ฒฌ์ด๋ ์คํ์ ๋ฐ ์๋ชป๋ ๋ด์ฉ์ ๋ํ ์์ ์ ๋ณด๋ ํ๋น๋ฏธ๋์ด(์ฃผ)์ ํํ์ด์ง๋ ์๋ ์ด๋ฉ์ผ๋ก ์๋ ค์ฃผ์ญ์์ค.
ํ๋น๋ฏธ๋์ด ํํ์ด์ง www.hanb.co.kr / ์ด๋ฉ์ผ [email protected]
Published by HANBIT Media, Inc. Printed in Korea
Copyright โ 2013 ์กฐํจ์ & HANBIT Media, Inc.
์ด ์ฑ ์ ์ ์๊ถ์ ์กฐํจ์๊ณผ ํ๋น๋ฏธ๋์ด(์ฃผ)์ ์์ต๋๋ค.
์ ์๊ถ๋ฒ์ ์ํด ๋ณดํธ๋ฅผ ๋ฐ๋ ์ ์๋ฌผ์ด๋ฏ๋ก ๋ฌด๋จ ๋ณต์ ๋ฐ ๋ฌด๋จ ์ ์ฌ๋ฅผ ๊ธํฉ๋๋ค.
์ง๊ธ ํ์ง ์์ผ๋ฉด ํ ์ ์๋ ์ผ์ด ์์ต๋๋ค.
์ฑ ์ผ๋ก ํด๋ด๊ณ ์ถ์ ์์ด๋์ด๋ ์๊ณ ๋ฅผ ๋ฉ์ผ([email protected])๋ก ๋ณด๋ด์ฃผ์ธ์.
ํ๋น๋ฏธ๋์ด(์ฃผ)๋ ์ฌ๋ฌ๋ถ์ ์์คํ ๊ฒฝํ๊ณผ ์ง์์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
๋์ ๋ ์ ๋ฐ ์ฌ์ฉ ํด
์ด๊ธ ์ด์ค๊ธ ์ค๊ธ ์ค๊ณ ๊ธ ๊ณ ๊ธ
โ JDK 7.X : http://www.oracle.com/technetwork/java/index.html
โ Apache Tomcat : http://tomcat.apache.org/
โ ์ดํด๋ฆฝ์ค : http://www.eclipse.org
ํ๋น eBook ๋ฆฌ์ผํ์
ํ๋น eBook ๋ฆฌ์ผํ์์ IT ๊ฐ๋ฐ์๋ฅผ ์ํ eBook ์ ๋๋ค.
์์ฆ IT ์ ๊ณ์๋ ํ๋ฃจ๊ฐ ๋ฉ๋ค ํ๊ณ ์๋ง์ ๊ธฐ์ ์ด ๋ํ๋๊ณ ์ฌ๋ผ์ ธ ๊ฐ๋๋ค. ์ธํฐ๋ท์
์๋ฌด๋ฆฌ ๋ค์ ธ๋ ์กฐ๊ธ์ด๋๋ง ์ ๋ฆฌ๋ ์ ๋ณด๋ฅผ ์ฐพ๋ ๊ฒ๋ ์ฝ์ง ์์ต๋๋ค. ๋ํ ์ ์ ๋ฆฌ๋์ด
์ฑ ์ผ๋ก ๋์ค๊ธฐ๊น์ง๋ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค. ์ด๋ป๊ฒ ํ๋ฉด ์กฐ๊ธ์ด๋ผ๋ ๋ ์ ์ฉํ ์ ๋ณด๋ฅผ
๋น ๋ฅด๊ฒ ์ป์ ์ ์์๊น์? ์ด๋ป๊ฒ ํ๋ฉด ๋จ๋ณด๋ค ์กฐ๊ธ ๋ ๋นจ๋ฆฌ ๊ฒฝํํ๊ณ ์ต๋ํ ์ง์์ ๊ณต
์ ํ๊ณ ๋ฐ์ ์์ผ ๋๊ฐ ์ ์์๊น์? ์ธ์์๋ ์๋ง์ ์ข ์ด์ฑ ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ข
์ด์ฑ ์ ๊ทธ๋๋ก ์ฎ๊ธด ์ ์์ฑ ๋ ๋ง์ต๋๋ค. ์ ์์ฑ ์๋ ์ ์์ฑ ์ ์ ํฉํ ์ฝํ ์ธ ์ ์ ์์ฑ
์ ํน์ฑ์ ์ด๋ฆฐ ํ์์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
ํ๋น์ด ์ง๊ธ ์๊ฐํ๊ณ ์ถ๊ตฌํ๋, ๊ฐ๋ฐ์๋ฅผ ์ํ ๋ฆฌ์ผํ์ ์ ์์ฑ ์ ์ด๋ ์ต๋๋ค.
1. eBook Only - ๋น ๋ฅด๊ฒ ๋ณํํ๋ IT ๊ธฐ์ ์ ๋ํด ํต์ฌ์ ์ธ ์ ๋ณด๋ฅผ ์ ์ํ๊ฒ ์ ๊ณตํฉ๋๋ค.
500ํ์ด์ง ๊ฐ๊น์ด ๋ถ๋์ ์ ์ ๋ฆฌ๋ ๋์(์ข ์ด์ฑ )๊ฐ ์๋๋ผ, ํต์ฌ์ ์ธ ๋ด์ฉ์ ๋น ๋ฅด๊ฒ
์ ๋ฌํ๊ธฐ ์ํด ์กฐ๊ธ์ ๊ฑฐ์น ์ง๋ง 100ํ์ด์ง ๋ด์ธ์ ์ ์์ฑ ์ ์ฉ์ผ๋ก ๊ฐ๋ฐํ ์๋น์ค์ ๋๋ค.
๋ ์์๊ฒ๋ ์๋ก์ด ์ ๋ณด๋ฅผ ๋นจ๋ฆฌ ์ป์ ์ ์๋ ๊ธฐํ๊ฐ ๋๊ณ , ์์ ์ด ๋จผ์ ๊ฒฝํํ ์ง์๊ณผ ์ ๋ณด๋ฅผ
์ฑ ์ผ๋ก ํด๋ด๊ณ ์ถ์ง๋ง ๋๋ฌด ๋ฐ๋น ์ ์๋๋ฅผ ๋ชป ๋ด์๋ ์ ๋ฐฐ, ์ ๋ฌธ๊ฐ, ๊ณ ์๋ถ์๊ฒ๋ ๋ณด๋ค ์ฝ๊ฒ
์งํํ์ค ๊ธฐํ๊ฐ ๋๋ฆฌ๋ผ ์๊ฐํฉ๋๋ค. ๋ํ ์๋ก์ด ์ ๋ณด์ ์ง์์ ๋น ๋ฅด๊ฒ ์ ๋ฌํ๊ธฐ ์ํด
O'Reilly์ ์ ์์ฑ ๋ฒ์ญ ์๋น์ค๋ ์ค๋น ์ค์ด๋ฉฐ, ์กฐ๋ง๊ฐ ์ ๋ณด์ผ ์์ ์ ๋๋ค.
2. ๋ฌด๋ฃ๋ก ์ ๋ฐ์ดํธ๋๋, ์ ์์ฑ ์ ์ฉ ์๋น์ค์ ๋๋ค.
์ข ์ด์ฑ ์ผ๋ก๋ ๊ธฐ์ ์ ๋ณํ ์๋๋ฅผ ๋ฐ๋ผ์ก๊ธฐ๊ฐ ์ฝ์ง ์์ต๋๋ค. ์ฑ ์ด ์ผ์ ํ ๋ถ๋ ์ด์์ผ๋ก
์งํ๋๊ณ ์ ๋ฆฌ๋์ด ๋์ค๋ ๋์ ๊ธฐ์ ์ ์ด๋ฏธ ๋ณํด ์์ต๋๋ค. ์ ์์ฑ ์ผ๋ก ์ถ๊ฐ๋ ์ดํ์๋
๋ฒ์ ์ ์ ํตํด ์ค์ํ ๊ธฐ์ ์ ๋ณํ๊ฐ ์๊ฑฐ๋, ์ ์(์ญ์)์ ๋ ์๊ฐ ์ํตํ๋ฉด์ ๋ณด์๋๊ณ
๋ฐ์ ๋ ๋ ธํ์ฐ๊ฐ ์ ๋ฆฌ๋๋ฉด ๊ตฌ๋งคํ์ ๋ถ๊ป ๋ฌด๋ฃ๋ก ์ ๋ฐ์ดํธํด ๋๋ฆฝ๋๋ค.
3. ๋ ์์ ํธ์๋ฅผ ์ํ์ฌ, DRM-Free๋ก ์ ๊ณตํฉ๋๋ค.
๊ตฌ๋งคํ ์ ์์ฑ ์ ๋ค์ํ IT๊ธฐ๊ธฐ์์ ์์ ๋กญ๊ฒ ํ์ฉํ์ค ์ ์๋๋ก DRM-Free PDF ํฌ๋งท์ผ๋ก
์ ๊ณตํฉ๋๋ค. ์ด๋ ๋ ์ ์ฌ๋ฌ๋ถ๊ณผ ํ๋น์ด ์๊ฐํ๊ณ ์ถ๊ตฌํ๋ ์ ์์ฑ ์ ๋ง๋ค์ด ๋๊ฐ๊ธฐ ์ํด,
๋ ์ ์ฌ๋ฌ๋ถ์ด ์ธ์ ์ด๋์ ์ด๋ค ๊ธฐ๊ธฐ๋ฅผ ์ฌ์ฉํ์๋๋ผ๋ ํธ๋ฆฌํ๊ฒ ์ ์์ฑ ์ ๋ณด์ค ์ ์๋๋ก
ํ๊ธฐ ์ํจ์ ๋๋ค.
4. ์ ์์ฑ ํ๊ฒฝ์ ๊ณ ๋ คํ ์ต์ ์ ํํ์ ๋์์ธ์ ๋ด๊ณ ์ ๋ ธ๋ ฅํ์ต๋๋ค.
์ข ์ด์ฑ ์ ๊ทธ๋๋ก ์ฎ๊ฒจ ๋์ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๊ณ ์ฝ๊ธฐ ํ๋ ์ ์์ฑ ์ด ์๋๋ผ, ์ ์์ฑ ์ ํ๊ฒฝ์
๊ฐ๋ฅํ ์ต์ ํํ์ฌ ์พ์ ํ ๊ฒฝํ์ ๋๋ฆฌ๊ณ ์ ํฉ๋๋ค. ๋งํฌ ๋ฑ์ ๊ธฐ๋ฅ์ ์ ๊ทน์ ์ผ๋ก ์ด์ฉํ
์ ์์์ ๋ฌผ๋ก ์ด๊ณ ๊ธ์ ํฌ๊ธฐ๋ ํ๊ฐ, ์ฌ๋ฐฑ ๋ฑ์ ์ ์์ฑ ์ ๊ฐ์ฅ ์ต์ ํ๋ ํํ๋ก ์๋กญ๊ฒ
๋์์ธํ์์ต๋๋ค.
์์ผ๋ก๋ ๋ ์ ์ฌ๋ฌ๋ถ์ ์ถฉ๊ณ ์ ๊ท ๊ธฐ์ธ์ด๋ฉฐ ์ง์ํด์ ๋ฐ์ ์์ผ ๋๊ฐ๋๋ก ํ๊ฒ ์ต๋๋ค.
์ง๊ธ ๋ณด์๋ ์ ์์ฑ ์ ์์ ๊ถํ์ ํ์ํ ๋ฌธ๊ตฌ๊ฐ ์๊ฑฐ๋ ํ์ธ์ ์์ ๊ถํ์ ํ์ํ
๋ฌธ๊ตฌ๊ฐ ์๋ค๋ฉด ์๋ฒํ๊ฒ ์ฌ์ฉํ๊ณ ๊ณ์ค ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์ด ๊ฒฝ์ฐ ์ ์๊ถ๋ฒ์ ์ํด
๋ถ์ด์ต์ ๋ฐ์ผ์ค ์ ์์ต๋๋ค.
๋ค์ํ ๊ธฐ๊ธฐ์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ํ ํ๋น๋ฏธ๋์ด ์ฌ์ดํธ์์ ๊ตฌ์ ํ์ ํ์๋ ํ์์
๊ด๊ณ์์ด ๋ค์ด๋ฐ์ผ์ค ์ ์์ต๋๋ค.
ํ๋น๋ฏธ๋์ด ์ ์์ฑ ์ ์ธ์, ๊ฒ์, ๋ณต์ฌํ์ฌ ๋ถ์ด๊ธฐ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
์ ์์ฑ ์ ์คํ์ ๊ต์ ์ด๋ ๋ด์ฉ์ ์์ ๋ณด์์ด ์ด๋ค์ง๋ฉด ์ ๋ฐ์ดํธ ๊ด๋ จ ๊ณต์ง๋ฅผ ์ด๋ฉ์ผ๋ก
์๋ ค๋๋ฆฌ๋ฉฐ, ๊ตฌ๋งคํ์ ์ ์์ฑ ์ ์์ ๋ณธ์ ๋ฌด๋ฃ๋ก ๋ด๋ ค๋ฐ์ผ์ค ์ ์์ต๋๋ค.
์ด๋ฐ ํน๋ณํ ๊ถํ์ ํ๋น๋ฏธ๋์ด ์ฌ์ดํธ์์ ๊ตฌ์ ํ์ ๋ ์์๊ฒ๋ง ์ ๊ณต๋๋ฉฐ, ๋ค๋ฅธ
์ฌ๋์๊ฒ ์๋๋ ์ด์ ๋์ง ์์ต๋๋ค.
์ฐจ๋ก
0 1 JSP ํ์ต ๋ฒ์์ ๊ฐ๋ ์ ๋ฆฌ 1
1.1 ์ด ์ฑ ์์ ๋ค๋ฃฐ JSP ๋ฒ์ 1
1.2 ์ด ์ฑ ์์ ๋ค๋ฃจ๋ JSP ์์ค 2
1.3 ์ด ์ฑ ์์ ๋ค๋ฃจ๋ JSP ๋ด์ฉ 3
1.3.1 JSP ๊ตฌ์ฑ์์ 4
1.3.2 JSP ๊ด๋ จ ๊ธฐ์ 5
1.3.3 JSP์์ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ๋ฌธ๋ฒ 6
1.4 ์น ์ฉ์ด 7
0 2 JSP ์คํํ๊ฒฝ 32
2.1 JEE ๋ฒ์ ๊ณผ ๋ฐํ์ฐ๋ 32
2.1.1 ์ฐ๋๋ณ ๊ฐ๋ฐ ์ ํ 34
2.2 ์ค์น์ ํ๊ฒฝ์ค์ 37
2.2.1 JDK 7.X ์ค์น์ ํ๊ฒฝ์ค์ 37
2.2.2 Tomcat 7.X ์ค์น์ ํ๊ฒฝ์ค์ 45
2.2.3 ์ดํด๋ฆฝ์ค 4.X ์ค์น์ ํ๊ฒฝ์ค์ 49
2.2.4 Tomcat๊ณผ ์ดํด๋ฆฝ์ค ์ฐ๋ 52
2.3 ์ดํด๋ฆฝ์ค ํ์ฉ๋ฐฉ๋ฒ 60
2.3.1 JSP ์์ฑํ๊ธฐ 60
2.3.2 JSP์ useBean ์ก์ ํ๊ทธ ๋ง๋ค๊ธฐ 6
0 3 ์น ๊ฐ๋ฐ ํ๊ฒฝ 68
3.1 ์ปจํ ์คํธ 68
3.2 ๊ฒฝ๋ก 70
3.3 ์ ์ ๋ฌธ์์ ๋์ ๋ฌธ์ 71
3.4 JSP ์คํฌ๋ฆฝํธ ์์ 79
11์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
1 | JSP ํ์ต ๋ฒ์์ ๊ฐ๋ ์ ๋ฆฌ
1.1 ์ด ์ฑ ์์ ๋ค๋ฃฐ JSP ๋ฒ์
JSP๋ ๊ธฐ์ด๋ถํฐ JSP ๊ธฐ๋ณธ, ์ปดํฌ๋ํธ, ํ๋ ์์ํฌ, ๊ทธ๋ฆฌ๊ณ ์ํฐํ๋ผ์ด์ฆ ์์ค๊น
์ง ํญ ๋๊ฒ ํ์ฉํ ์ ์์ง๋ง ์ด ์ฑ ์์๋ ๊ธฐ์ด, JSP ๊ธฐ๋ณธ, ์ปดํฌ๋ํธ, ํ๋ ์์ํฌ
(iBATIS, Tiles, Log4j)๊น์ง ๋ค๋ฃฌ๋ค. JSP ์ญ์ ๊ธฐ์ด๊ฐ ์ค์ํ๋ฏ๋ก ์น์ ๋์์๋ฆฌ,
ํ๊ฒฝ์ค์ , ์ปจํ ์ด๋ ๊ตฌ์กฐ, ๋ฐ๋์ ์์์ผ ํ ์น ์ฉ์ด๋ถํฐ ์์ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ๊ธฐ
๋ฐ์ผ๋ก JSP ๊ตฌ์ฑ์์์ JDBC๋ฅผ ์ตํ์ ์์ฃผ ์ฌ์ฉํ๋ ๋ถ๋ถ์ ์น ์ปดํฌ๋ํธํํ์ฌ
๊ฐ๋ฐ ์๋๋ฅผ ๋์ด๋ ๋ฐฉ๋ฒ๋ ์ตํ๋ค. ๋ํ ๊ธฐ์กด ํ๋ ์์ํฌ๋ฅผ ์ด์ฉํ๊ฑฐ๋ ํ๋ ์์
ํฌ๋ฅผ ๋ง๋ค์ด์ ๊ฐ๋ฐ ๋ฐฉ๋ฒ์ ํต์ผํํ๊ณ ์๋ํ ๋๋ก ๊ฐ๋ฐํ๋ ๋ฐฉ๋ฒ๋ ๋ฐฐ์๋ณด์.
๊ทธ๋ฆผ 1-1 JSP ๋ฒ์
์ปดํฌ๋ํธJavaBeans(useBean, workBean),
Custon Tag(ํ์ด์ง, ์์นญ, ์ผ์ ๊ด๋ฆฌ), JSTL(EL)
๊ธฐ์ดWeb์ ๋์์๋ฆฌ, ํ๊ฒฝ์ค์ , Web Container ๊ตฌ์กฐ
Java Standard[jdk 1.5+], ์ปฌ๋ ์ , ์ธํฐํ์ด์ค, ์ถ์ํด๋์ค
์ปดํฌ๋ํธ
Web ๊ธฐ๋ณธ์ฉ์ด, ์ ์ ๋ฌธ์(html), ๋์ ๋ฌธ์(jsp),
๊ณ์ธต๊ตฌwh(hierachy), ์๋ช ์ฃผ๊ธฐ(Life Cycle),
JSP ๊ตฌ์ฑ์์(JSPํ๊ทธ, ์คํฌ๋ฆฝํธ ์์, Action Tag, Custom Tag),
๊ธฐ๋ณธ ๊ฐ์ฒด(implicit object), ์ค์ฝํ(scope), Servlet, Context
JDBC, DataSource, Filter, Listener, Claender
Pooling, JNDI, DAO, DTO, MVC
Framework Model(iBATIS), View(Tiles), Controller(Action)
Enterprise Enterprise Java Beans, Spring, Struts
๋ฒ์
21์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
1.2 ์ด ์ฑ ์์ ๋ค๋ฃจ๋ JSP ์์ค
JSP ์ฌ์ฉ๋ฒ์๊ฐ ๋์ด์ง์๋ก ๋ณต์ก๋๋ ๋์์ง๋ค. ์ฒ์์๋ HTML ์์ค์ JAVA ์ฝ
๋๊ฐ ์์ฌ์๋ ์คํ๊ฒํฐ ์์ค๋ก ๋ง๋ค์ด๋ณผ ์ ์๋ค. ๊ทธ ๋ค์์๋ ์ธํผ๋ ์ด์ ์์ค
(์๋ฐ๋น ๋๋ ์ ์ฆ๋น)๋ฅผ ์ฌ์ฉ(MVC Model 1)ํ ์์ ์์ค์ ํ๋ก์ ํธ๋ ๋ง๋๊ฒ ๋
๋ค. ์ฌ๊ธฐ์์ ๊ทธ์น์ง ์๊ณ MVC Model 2์์ JSP ์ค์ฌ(์ผํธ๋ฆญ)์ผ๋ก ์์ฑํ๋ ๋ฐฉ
๋ฒ, ์๋ธ๋ฆฟ ์ค์ฌ์ผ๋ก ์์ฑํ๋ ๋ฐฉ๋ฒ, ๋ฉํฐ ์๋ธ๋ฆฟ, ์ก์ ์๋ธ๋ฆฟ์ผ๋ก ๋ฐ์ ์์ผ MVC
Model 2 ๊ธฐ๋ฐ ํ๋ ์์ํฌ(์คํผ๋ง, ์คํธ๋ฌ์ธ ) ์๋ฆฌ๊น์ง๋ ์์ฐ์ค๋ฝ๊ฒ ์ ์ ์๋ค.
๋ชจ๋ํ(ํ๋ฉด ๋ถํ ) ๋ฐฉ๋ฒ์ ํ๋ ์์ Frameset), ์ก์ ์ธํด๋ฃจ๋Action Include, ํ์ผ์ฆ
(Tiles ํ๋ ์์ํฌ)๋ ๋ค๋ฃฌ๋ค. ์ด ์ฑ ์ผ๋ก ํ์ตํ๋ฉด JDBC๋ฅผ ์ง์ ์ฌ์ฉํ๋ ์คํ๊ฒ
ํฐ๋ถํฐ DAO๊น์ง ์ฌ์ฉํ ์ ์์ ๋ฟ ์๋๋ผ iBATIS ํ๋ ์์ํฌ๋ ํ์ฉํ ์ ์๋ค.
์ผ๋ฐ์ ์ธ JSP ์ฑ ์์๋ ์ ๋ค๋ฃจ์ง ์๋ ์๋น์ค ๊ฐ์ฒด๋ ์ตํ ์ ์์ผ๋ฏ๋ก ๊ธฐ์ด๋ถํฐ
๊ณ ๊ธ ๊ธฐ์ ๋ก ๋ฐ์ ํ๋ฉด์ ๋ค์ํ ๊ธฐ์ ์ ํฐ๋ํ ์ ์๋ค.
๊ทธ๋ฆผ 1-2 JSP ์์ค
Framework
Modular Component
JSP/Servlet
Framework
Modular
component
JSP/Servlet
๊ธฐ๋ณธ
MVC Model 2,
Custom Tag, JSTL(EL),
MVC Model 11,
JavaBean,
Server side : Spagetti, Separation, Only Servlet
Client side : HTML pages, Java Script
MVC Model 2 Framwork(Spring),
Model (iBATIS), View (Tiles),
Controller (Action)
31์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
1.3 ์ด ์ฑ ์์ ๋ค๋ฃจ๋ JSP ๋ด์ฉ
์ด ์ฑ ์์ ๋ค๋ฃจ๋ JSP ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค.
โ ์น ๊ธฐ๋ณธ ์ฉ์ด
โ HTTP/HTML/JS
โ ์น ์๋ฒWeb Server/์น ์ปจํ ์ด๋
โ ์์ฒญ/์๋ต
โ ๊ธฐ๋ณธ ๊ฐ์ฒด/๊ตฌ์ฑ์์/์คํฌ๋ฆฝํธ์์
โ ์ฃผ์
โ ๋๋ ํฐ๋ธ
โ ํ๋ผ๋ฏธํฐparameter์ ํ๋ผ๋ฏธํฐ ์ฒ๋ฆฌ
โ ์๋ธ๋ฆฟ(Servlet)/์๋ช ์ฃผ๊ธฐ(๋ผ์ดํ์ฌ์ดํดlife cycle)
โ ์๋ธ๋ฆฟ ๋ฆฌ์ค๋/์๋ธ๋ฆฟ ํํฐ
โ XML
โ Custom Tag/JSTL/EL
โ ์ ์ฆ๋นuseBean(์๋ฐ๋นJavaBean)/workBean
โ ํ๋ฆ์ ์ด/๋ชจ๋
โ DAOdata access object/DTOdata transfer object/iBATIS
โ MVC(Model, View, Controller), MVC Model 1, Model 2
โ ํฉํ ๋ฆฌ ํจํด/์ฑ๊ธํค ํจํด/ํฌํผ๋ทฐ ํจํด
โ ์ก์ ์๋ธ๋ฆฟ/๋ฉํฐ ์๋ธ๋ฆฟMulti Servlet
โ JSP ์น ์ญ์ฌ(Only Servlet, Spagetti, Separation, JSP Centric, Servlet Centric,
Multi Servlet, Action Servlet, Framework)
โ ์ผ๋ฐ๊ฒ์ํ, ๋ต๋ณํ ๊ฒ์ํ, ํ์ด์ง, ์์นญ, ์ผ์ ๊ด๋ฆฌ, ์ ์ฌ์ง์๊ด๋ฆฌ, ์ธ์ฌ๊ด๋ฆฌ
41์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
1.3.1 JSP ๊ตฌ์ฑ์์
JSP ์์ฑ ์ ์ฌ์ฉํ๋ ํ๊ทธ์ ํด๋์ค ๋ฑ์ JSP ๊ตฌ์ฑ์์๋ผ๊ณ ํ๋ค. ํ ํ์ด์ง์ ํน
์ง์ ์ค์ ํ๋ ๋๋ ํฐ๋ธdirective, HTML์ฌ์ด์ ์๋ฐ์ฝ๋๋ฅผ ๋ฃ์ด์ ์ํ๋ ํ๋ฉด์
๋ง๋๋ ์คํฌ๋ฆฝํธscript์์, ์คํฌ๋ฆฝํธ์์๋ฅผ ์ค์ด๊ณ ์๋ฐ์ฝ๋๋ฅผ ์จ๊ธฐ๋ฉด์ ์น ํ๋ก๊ทธ
๋๋ฐ ๊ธฐ๋ฅ์ ํ๋ ์ก์ action ํ๊ทธ ๋ฑ์ด JSP ๊ธฐ๋ณธ ๊ตฌ์ฑ์์๋ค.
๊ทธ๋ฆผ 1-3 JSP ๊ธฐ๋ณธ ๊ตฌ์ฑ์์
HTML/JS
CommentHTML Comment
JSP Comment
autoFlush="true"
buffer="8kb"
errorPage
extends
isErrorPage
import
info
isThreadSafe
language
pageEncoding
Session="true"
isELIgnored="false"
contentType="text/html"
@page
@include
@taglib
Scriptlet
Expression
Declaration
Directive
useBean
setProperty
getProperty
include
forward
param
JSTL
EL OGNL
Script element
JSP ๊ตฌ์ฑ์์
Action Tag(XML Tag)
JSP Tag(from ASP)
Custom Tag(XML Tag)
์๋ ํ ํ์ด์ง์์ ๋ค๋ฅธ ํ์ด์ง๋ก ๊ฐ์ฒด๋ฅผ ์ ๋ฌํ ์ ์์ง๋ง ์ ๋ฌํ๊ฒ ๋ง๋๋ ์ค
์ฝํscope ๊ฐ์ฒด, ์ํ๊ฐ ์๋stateless JSP์์ ์ํ๋ฅผ ๋ง๋ค์ดstatefull ์ฌ์ฉํ๋ ์ธ์
session, ์ฌ๋ฌ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํ ๋ชจ๋ํ, ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ง ์๊ณ ๋ ์ด๋ฏธ ์ค๋น๋
๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๊ธฐ๋ณธ ๊ฐ์ฒดimplicit object, ํ ํ๋ฉด์์ ๋ค๋ฅธ ํ๋ฉด์ผ๋ก ์ด๋ํ๋ ํ๋ฆ
์ ์ดflow control, ์์ธ ๋ฐ์ ์ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ, ์ ์ฅ๋์ด ์๋ ํ๊ฒฝ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ
๋ชจ๋๊ฐ ์ค์ํ JSP ๊ตฌ์ฑ์์๋ค.
51์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
๊ทธ๋ฆผ 1-4 JSP ์ค์ ๊ตฌ์ฑ์์
ํ๋ฆ์ ์ด(Flow)
pageContext
request
session
application
getAttribute( )
setAttribute( )
removeAttribute( )
getAttributeNames( )
out
response
config
exception
page
forward
session
application<table>
div<jsp:include>
Tiles
JSP ๊ตฌ์ฑ์์ ์ํ๊ด๋ฆฌ
๋ชจ๋ํ(Module)
์์ธ์ฒ๋ฆฌ
ํ๊ฒฝ๋ฒผ์
Scope(๊ฐ์ฒด์ ๋ฌ)
๊ธฐ๋ณธ๊ฐ์ฒด(implicit)
๊ณตํต๋ฉ์๋
1.3.2 JSP ๊ด๋ จ ๊ธฐ์
JSP๋ ์คํ๋ ๋ ์๋ธ๋ฆฟServlet์ผ๋ก ๋ณํ๋๋ฏ๋ก ์๋ธ๋ฆฟ์ ์๋ ๋งํผ JSP๋ฅผ ์ ์ ์
๋ค. ์๋ธ๋ฆฟ์ ์น ์๋ฒ์ ์ปจํ ์ด๋์์ ์คํ๋๊ธฐ ๋๋ฌธ์ ์ปจํ ์ด๋, ์์ง, ์๋ช ์ฃผ๊ธฐ
life cycle๋ ํ์ ํด์ผ ํ๋ค. ๋ํ ํ๊ฒฝ๋ณ์์ ์๋ธ๋ฆฟ์ ๋งคํ์ํค๋ web.xml๋ ํ์
ํ๋ค. ์ธ์ ์ ์ถ์ ํ๊ณ ๊ด๋ฆฌํ๋ ์ธ์ ๋ฆฌ์ค๋session listener, ํ ํ์ด์ง์์ ๋ค๋ฅธ ํ
์ด์ง๋ก ์ด๋ํ ๋ ๊ฐ๋ก์ฑ ์ ์๋ ์๋ธ๋ฆฟ ํํฐservlet filter ๋ฑ๋ ์ดํด๋ณธ๋ค. ํ ํ์ด์ง
์ ํ๋ฉด, DB๊ด๋ จ ์์ , ์ ์ด ๋ก์ง์ด ์์ธ ์คํ๊ฒํฐ๋ฅผ ๊ฐ ์ฉ๋์ ๋ง๊ฒ MVCModel,
View, Controller๋ก ๋ถํ ํ๋ ๋ฐฉ๋ฒ๊ณผ Model์ ๋ฐ์ ์์์ธ JDBC, DAO, iBATIS, ์
๋น์ค ๊ฐ์ฒด๋ ๋ฐฐ์ด๋ค.
61์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
๊ทธ๋ฆผ 1-5 JSP ๊ด๋ จ ๊ธฐ์
XML
์ฃผ์๊ธฐ๋ฅ
Filter
๊ณ์ธต๊ตฌ์กฐ
์ปจํ ์ด๋๋ผ์ดํ์ธ์ดํด
์์ง
Action
DTO
web.xml
init( )
service( )
destroy( )
DAO
iBATIS
JDBC
Paging
File upload
Search
์ผ์ ๊ด๋ฆฌ Calendar
Listener
Servlet
MVC(Controller)
JSP ๊ด๋ จ๊ธฐ์
MVC
1.3.3 JSP์์ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
JSP๋ ์ ์ ํ๊ฒ ์๋ํ๋๋ก ์ ๋ง๋ค์ด์ผ ํ๋๋ฐ, Java ๊ธฐ๋ณธ ๋ฌธ๋ฒ์ ์๋ฉด ๋ง์
๋์์ด ๋๋ค. JSP/Servlet์ ์ธํฐํ์ด์ค์ ์ถ์ํด๋์ค๋ก ์ด๋ฃจ์ด์ง๋ฏ๋ก ์ธํฐํ
์ด์ค์ ์ถ์ํด๋์ค๋ฅผ ๋ฐ๋์ ์ดํดํด์ผ ํ๋ค. DAO์ ๋ฐํํ์ ์ ์ฃผ๋ก DTO์
List<DTO> ํ์ ์ด๋ฏ๋ก ์ปฌ๋ ์ ์ ์ฌ์ฉํ ์ ์์ด์ผ ํ๋ค. ์ด ์ฑ ์์๋ JSP์์ ์ฌ
์ฉํ๋ ๊ธฐ๋ณธ ๋ฌธ๋ฒ๋ ํจ๊ป ์ค๋ช ํ๋ค.
71์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
๊ทธ๋ฆผ 1-6 JSP ๊ธฐ๋ณธ ๋ฌธ๋ฒ
OOP
JSP ๊ธฐ๋ณธ ๋ฌธ๋ฒ
Inheritance
Encapsulation
Polymorphism
Set
List
Map
Enumeration
Iterator
Generic
Collection
Enhanced for
interface
abstract
Serializable
Calendar Date
Boxing/
Unboxing
1.4 ์น ์ฉ์ด
โ ์๋ฒServer์ ํด๋ผ์ด์ธํธ(Client)
๋ด ์ปดํจํฐ๋ฅผ ์ด์ฉํ์ง ์๊ณ ๋ค๋ฅธ ์ปดํจํฐ(B JVM)๋ฅผ ์ด์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค๊ณ ๊ฐ
์ ํด๋ณด์. ๊ทธ๋ฆฌ๊ณ โ10+20โ์ ๊ตฌํ๋ค๊ณ ํ ๋ ์ซ์์ โ,โ๋ง ์ฌ์ฉํ๋ ๊ท์น์ ๋ง๋ค์
๋ค๊ณ ํด๋ณด์. 10+20์ 10, 20, 101๋ก ๋ง๋ค์ด ๋ค๋ฅธ ์ปดํจํฐ(B JVM)์ ๋ณด๋ด๋ฉด, B์
์๋ ๊ท์น1์ ๋ณด๊ณ 10+20์ ๊ฐ์ ๊ตฌํ๊ฒ ๋๋ค. 10+20=30์ ํด๊ฒฐํ ํ ๊ท์น 2๋ฅผ
์ด์ฉํ์ฌ 30, 5๋ฅผ A์๊ฒ ๋๋ ค๋ณด๋ด๋ฉด 10+20์ 30์ด๋ผ๋ ๊ฐ์ด ๋์ถ๋์ด ๋ฌธ์ ๊ฐ ํด
๊ฒฐ๋์๋ค๋ ์ฌ์ค์ ์ ์ ์๋ค.
๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ๋ฌ๋ผ๊ณ ์์ฒญํ๋ ์ชฝ์ด ํด๋ผ์ด์ธํธ, ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ ๋๋ ค๋ณด๋ด๋ ์ชฝ
์ด ์๋ฒ๋ค.
81์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
๊ทธ๋ฆผ 1-7 ์๋ฒ์ ํด๋ผ์ด์ธํธ ๊ตฌ์ฑ
10, 20, 101
๊ท์น 1
101 โ +
102 โ -
103 โ ร
104 โ /
๊ท์น 1
101 โ +
102 โ -
103 โ ร
104 โ /
๊ท์น 2
5 โ ์ฑ๊ณต
6 โ ์คํจ
๊ท์น 2
5 โ ์ฑ๊ณต
6 โ ์คํจ
30 ์ฑ๊ณต
10+20
B JVM
10+20=30, 5
B JVM
โ ์์ฒญ(Request)/์๋ต(Response)
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด๋ฌ๋ผ๊ณ ์๊ตฌํ๋ ํ์๋ ์์ฒญRequest์ด๋ผ
๊ณ ํ๋ค. ๋ฐ๋๋ก ์๋ฒ๊ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด์ฌ์ฃผ๋ ํ์๋ ์๋ต
Response์ด๋ค. ๋ฐ๋ผ์ ์น ๋ธ๋ผ์ฐ์ ๊ฐ ํด๋ผ์ด์ธํธ์ด๊ณ , ์น ์๋ฒ๋ ์๋ฒ๋ผ ํ ์ ์๋ค.
์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์ด์ฉํ์ฌ ์๋ฒ์๊ฒ ํ๋น๋ฏธ๋์ด ํํ์ด์ง๋ฅผ ์์ฒญํ๋ฉด ์๋ฒ๋ ์น ๋ธ
๋ผ์ฐ์ ์๊ฒ ํ๋น๋ฏธ๋์ด ํํ์ด์ง๋ฅผ ๋ณด์ฌ์ฃผ๋๋ก ์๋ตํ๋ค.
โ ํ๋กํ ์ฝ(Protocol, ๊ท์ฝ, ๊ท์น, ์ฝ์)
10+20์ 10, 20, 101๋ก ๋ฐ๊ฟ์ ๋ณด๋ด๋ ๊ฒ๊ณผ 10, 20, 101์ 10+20์ผ๋ก ๋ค์ ๋ฐ
๊พผ ํ ๊ณ์ฐํด 30์ ์ป๋ ๊ณผ์ ์ ์ ์ก ์์ ๋ฌธ์ ๋ฅผ ์ ๊ฑฐํ ์ ์๋ค. ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก
10+20์ ๊ฒฐ๊ณผ๋ฅผ ๋๋ ค๋ณด๋ผ ๋ 30, 5๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋ผ์ด์ธํธ ์ชฝ์์๋ ๊ท์ฝ์ ์งํจ
์ฐ์ฐ๊ฒฐ๊ณผ๊ฐ 30์ด๊ณ , ์ ๋๋ก ๋์ถ๋์๋ค๋ ์ ์ ์ ์ ์๋ค. ์ด์ฒ๋ผ ํด๋ผ์ด์ธํธ์
์๋ฒ ๊ฐ ์ ์ก์ ์ํ ๊ท์ฝ์ด ํ๋กํ ์ฝ์ด๋ค. ๋ํ 30, 5์ 5์ฒ๋ผ ์๋ฒ ์ชฝ์์ ๋ฌธ์
๋ฅผ ์ ๋๋ก ํด๊ฒฐํ๋์ง ์คํจํ๋์ง์ ๋ฐ๋ผ ์ฝ์๋ ๊ฐ์ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ผ ์ ์๋
๋ฐ ์ด๋ฅผ ์๋ต ์ํ์ฝ๋status code๋ผ๊ณ ํ๋ค.
91์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
โ ์น ์๋ฒ(Web Server)
์น ์๋ฒ๋ ์๋ฒ์ชฝ ์ปดํจํฐ์ ์๋ ์ํํธ์จ์ด๋ค. ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์์ ์น ํ
์ด์ง(HTML, ๊ทธ๋ฆผํ์ผ, CSS, ์๋ฐ์คํฌ๋ฆฝํธ ๋ฑ์ผ๋ก ๊ตฌ์ฑ๋ ๋ฌธ์)๋ฅผ ํด๋ผ์ด์ธํธ์ธ
์น ๋ธ๋ผ์ฐ์ ์ ์๋ตํ๋ ์ญํ ์ ํ๋ค.
์นWeb์ World Wide Web์ ์ค์๋ง๋ก ๋ฌธ์๋ค์ด ์ธํฐ๋ท์ผ๋ก ์ฐ๊ฒฐ๋ ์ปดํจํฐ ์ธ๊ณ
๋ฅผ ๋งํ๋ค. ํ์ดํผํ ์คํธhypertext๋ ๊ธ์๋ฟ ์๋๋ผ ๊ทธ๋ฆผ์ฒ๋ผ ๋ณด์ฌ์ค ์ ์๋ ๋ด์ฉ๋ฌผ
์ ์ปดํจํฐ ์ฌ์ฉ์๊ฐ ๋ง์ฐ์ค๋ ํค๋ณด๋์ ๋ ฅ์ผ๋ก ์์ฒญํ ๋ ๋ฐ๋ก ์ ๊ทผํ๊ณ ์ฌ์ฉํ ์
์๋ ๋ฌธ์๋ค. ์น ํ์ด์ง๋ ์น์์ ์ธํฐ๋ท์ผ๋ก ์ฐ๊ฒฐ๋์ด ๋ค๋ฅธ ์น ํ์ด์ง๋ก ์์ ๋กญ๊ฒ
์ด๋navigateํ๊ณ ์ฐ๊ฒฐ๋์ด์ผ ํ๋ ๋ฌธ์์ด๋ฏ๋ก ํ์ดํผํ ์คํธ๋ก ๋ง๋ค์ด์ง๋ค.
๊ทธ๋ฆผ 1-8 ์์ ๋ก์ด ์ด๋์ด ๊ฐ๋ฅํ ์น ํ์ด์ง
Protocol (๊ท์ฝ)
Protocol (๊ท์ฝ) Protocol (๊ท์ฝ)
5 โ
Status Code
(์ํ ๊ฐ)
10+20=30
(์์ฒญ ํด๊ฒฐ)
Request
Response
10, 20, 101
30, ์ฑ๊ณต30, ์ฑ๊ณต
Protocol (๊ท์ฝ)
10 20+ 10 20+
30, 5
โ HTTP(Hypertext Transfer Protocol)
์น ์๋ฒ์์ ์๋ฒ-ํด๋ผ์ด์ธํธ ์ฌ์ด์ ๋ํ(Request/Response)๋ฅผ ํ ์ ์๋๋ก
๋ง๋ ๊ท์ฝ์ด๋ค. HTTP๋ ํค๋header์ ๋ฐ๋body๋ก ๊ตฌ์ฑ๋๋ค. HTTP์ ์์ฒญ๊ณผ ์๋ต
์๋ ๋ฉ์์ง๊ฐ ํฌํจ๋์ด ์์ฒญ๊ณผ ์๋ต์ ๋ํ ์ํ๋ฅผ ์ ์ ์๊ฒ ํ๋ค. ์๋ฒ๋ ์์ฒญ
ํค๋ ๋ฉ์์ง๋ฅผ ์ฝ๊ณ ํด๋ผ์ด์ธํธ์ ์์ฒญ ์ฌํญ์ ํ์ ํ ๋ค์ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ต
์ ๋ณด๋ธ๋ค. ์๋ตํค๋์๋ ์์ฒญ์ด ์ ๋๋ก ์ฒ๋ฆฌ๋์๋์ง, ์๋ตํด์ฃผ๋ ์๋ฒ์ ๊ฐ๋จํ
์ ๋ณด, ์๋ต ๋ด์ฉ์ ํ์ ๋ฐ ์ธ์ฝ๋ฉ, ์๋ต ํฌ๊ธฐ ๋ฑ์ด ํฌํจ๋๋ค. ์๋ตํค๋๊ฐ ๋ธ๋ผ์ฐ์
101์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
์๊ฒ ์ ๋ฌ๋๋ฉด ์๋ต๋ฐ๋ ๋ด์ฉ์ด ๋ธ๋ผ์ฐ์ ์ ์ถ๋ ฅ๋๋ค. ํค๋์ ๋ฐ๋ ์ฌ์ด์๋ ํ ์ค
์ด ๋น์ด์์ผ๋ฏ๋ก ์ฝ๊ฒ ๊ตฌ๋ถํ ์ ์๋ค.
๊ทธ๋ฆผ 1-9 HTTP๋ฅผ ํตํ ํต์
WebBrowser
<<HTTP Request>> index.jsp
<<HTTP Response>>
Web Server<head>
<body>
<head>
<body>
์์ฒญ ๋ฉ์์ง์ ์ฒซ ์ค์ ์์ฒญ๋ผ์ธrequest line์ด ์๊ณ (GET /pagecentric01_comp01/
index.jsp HTTP/1.1), 2๋ฒ์งธ ์ค๋ถํฐ ๋ค์๊ณผ ๊ฐ์ ํค๋๋ด์ฉ์ด ์๋ค.
Accept:image/jpeg, */*
Accept-Language: ko-KR
ํค๋๊ฐ ๋๋๋ฉด ํ ์ค์ด ๋น์ด์๋ค. ์์ฒญ์ GET ๋ฐฉ์์ ๋ฐ๋๊ฐ ์์ด์ ํ ์ค์ด ๋น์ด
์๋ ์ํ๋ก ๋๋์ง๋ง, ํฌ์คํธPOST๋ฐฉ์์ผ ๋ ํ๋ผ๋ฏธํฐ๊ฐ ์๋ค๋ฉด ๋น์ค ๋ฐ์ ํ๋ผ๋ฏธ
ํฐ๊ฐ ๋ค์ด๊ฐ๋ค. ์๋ต ๋ฉ์์ง๋ โHTTP/๋ฒ์ ์๋ต์ํ์ฝ๋ ์ํโ๋ฅผ ๋ฐํํ๊ณ ๋ค์
์ค์ ์๋ฒ, ์ปจํ ํธํ์ , ์๋ตํฌ๊ธฐ, ์๋ต์๊ฐ ๋ฑ์ ๋ณด์ฌ์ค๋ค.
111์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=euc-kr
Content-Length: 219
Date: Wed, 30 Dec 2009 09:10:30 GMT
๊ทธ๋ฆผ 1-10 ์๋ต ๋ฉ์์ง
WebBrowser
Web Server
GET /pagecentric01_comp01/index.jsp HTTp/1.1Accept:image/jpeg, */*Accept-Language: ko-KRAccept-Encoding: gzip, deflateUser-Agent; Mozilla/4.0Host: Localhost:8090Connection: Keep-AliveCookie: JSESSIONID=c5754E8BCACE37746ACBA55226500A45
HTTP/1.1 200 OKServer: Apache-Coyote/1.1Content-Type: text/html;charser=euc-krContent-Length: 219Date: Wed, 30 Dec 2009 09:10:30 GMT
<html><head><title>์๋ ํ์ธ์</title></head><body>...
<<HTTP Request>> index.jsp
<<HTTP Response>>
โ HTML(HyperText Markup Language)
HTML์ ์น ํ์ด์ง๋ฅผ ๊ตฌ์ฑํ๋ ํต์ฌ์์๋ฉฐ, ๋งํฌ์ ์ธ์ดMarkup Language๋ ๋ฌธ์๋ฅผ
์ด์ฉํ์ฌ ๋ค๋ฅธ ๋ฌธ์์ ํน์ฑ์ ํ์ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
<b>์๋ ํ์ธ์</b>
<b></b>๋ฅผ ํ๊ทธtag๋ผ ํ๋ค. ์์ <b>๋ ์์ํ๊ทธ, ๋ค์ </b>๋ โ๋ํ๊ทธโ๋ผ๊ณ ๋ถ๋ฅด
๋ฉฐ, ํ๊ทธ์ฌ์ด์ โ์๋ ํ์ธ์โ๋ ์ปจํ ํธ๋ค. <b>์๋ ํ์ธ์</b>์ ๊ฐ์ โ์์ํ๊ทธ-
121์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
์ปจํ ํธ-๋ํ๊ทธโ๋ฅผ ์๋ฆฌ๋จผํธelement๋ผ๊ณ ํ๋ค. <b> ํ๊ทธ๋ โ์๋ ํ์ธ์โ๋ฅผ ๋ณผ๋์ฒด
boldface๋ก ํํํ๋ผ๋ ์๋ฏธ๋ค. ๋ค์ ๋งํ๋ฉด <b> ํ๊ทธ๋ ์ปจํ ํธ์ ํน์ฑ์ ํ์ํ๋ค.
์๋ ํ์ธ์
์น ๋ธ๋ผ์ฐ์ ์์๋ ์์ ๊ฐ์ด <b> ํ๊ทธ๊ฐ ์์ด์ง๊ณ ๋ณผ๋์ฒด โ์๋ ํ์ธ์โ๋ง ๋ณด์ฌ
์ค๋ค. ์น ๋ธ๋ผ์ฐ์ ์์ ์ปจํ ํธ๋ฅผ ํํ(์ถ๋ ฅ)ํ๋ ค๊ณ ํ๊ทธ๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ด ๋ฐ๋ก
HTML์ด๋ค.
โ ์ํ์ฝ๋(Status Code)01
ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์์ฒญํ๋ฉด, ์๋ฒ๋ ์์ฒญ์ ์ฒ๋ฆฌํ ๋ค์ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ 3์๋ฆฌ ์ซ
์๋ก ๋ ์ํ์ฝ๋์ ํจ๊ป ํด๋ผ์ด์ธํธ์๊ฒ ๋ณด๋ด์ค๋ค. ์ฑ๊ณต 200์ด์ธ์๋ ์๋ฒ ์ชฝ์
์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๊ณ ๋ณผ ์ ์์ด ์ค๋ฅ์ฝ๋Error Code๋ผ๊ณ ๋ ํ๋ค. '200 ์ฑ๊ณตโ, '404
๊ฒฝ๋ก๊ฐ ์๋ชป๋จโ, '500 ์๋ฒ์ชฝ์์ ๋ฌธ๋ฒ์ ์ผ๋ก ์์ธ๋ฐ์โ์ ๊ผญ ๊ธฐ์ตํ์.
์ํ
์ฝ๋์ํ ๋ฉ์์ง ์ํ ๋ด์ฉ ๋ฐ์ ์
100 Continueํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์ผ๋ถ๋ถ๋ง ๋ฐ์์ผ๋
๋๋จธ์ง ์์ฒญ์ ๋ณด๋ฅผ ์์ฒญ
200 OK ์ค๋ฅ ์์ด ํด๋ผ์ด์ธํธ๋ก ์ ์ก ์ฑ๊ณต ์ฑ๊ณต
300 MultipleChoices ์ต๊ทผ์ ์ฎ๊ฒจ์ง ๋ฐ์ดํฐ๋ฅผ ์์ฒญ
404 Not Found์๋ฒ๊ฐ ์์ฒญํ ํ์ผ์ด๋ ์คํฌ๋ฆฝํธ๋ฅผ
์ฐพ์ง ๋ชปํจ
๊ฒฝ๋ก๊ฐ ์๋ชป๋๊ฑฐ๋ ์๋ jsp/servlet์
ํธ์ถ
405 Method Not Allowed ๋ฉ์๋ ํ์ฉ ์๋จ doGet( )์ด ์๋๋ฐ GET ๋ฐฉ์์ผ๋ก ํธ์ถ
500 Internal Server Error ์๋ฒ ๋ด๋ถ ์ค๋ฅ ๋ฌธ๋ฒ์ค๋ฅ ๋ฑ ์๋ฒ์ฝ๋์์ ๋ฌธ์ ๋ฐ์
01ใ์ํ์ฝ๋ ๊ด๋ จ ์น ์ฌ์ดํธ: http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
131์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
โ ์ํ(State) - ๋ฌด์ํ/์ ์ํ(Stateless/Statefull)
HTTP๋ฅผ ํตํ ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฌ์ด์ ๋ํ๋ ๋ฐฉ๊ธ ์ ๋ํ๋ฅผ ๊ธฐ์ตํ์ง ๋ชปํ๋
โ๋ฌด์ํstatelessโ๋ค. ์๋ฒ๋ ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ํตํด ๋ฐ์ ์์ฒญ์ ์๋ตํ ๋ค์ ์ฐ๊ฒฐ์ ๋
๋๋ค. ์ด ์ํ์์ ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์๊ฒ ์์ฒญ์ ํ๋ ค๋ฉด ์๋ฒ์ ๋ค์ ์ฐ๊ฒฐํด์ผ
ํ๋ค. ๋ฐ๋ฉด DB ์๋ฒ๋ ํด๋ผ์ด์ธํธ์ ๋๋ ๋ํ๋ฅผ ๊ธฐ์ต(์ ์ํ, statefull)ํ๋ค. ๋
ํ๊ฐ ๋๋ ํ ๋ค์ ์ฐ๊ฒฐํ์ง ์์๋ ์์ฒญ์ ํ ์ ์๋ค. DB ์๋ฒ๊ฐ ๋ํ๋ฅผ ๋๋ด๋ ค
๋ฉด ๋ช ์์ (close ํธ์ถ)์ผ๋ก ๋๋ด์ผ ํ๋ค. HTTP Session์ ๋ฌด์ํ๋ก ํ ์ด์ ๋ ๋ง
์ ํด๋ผ์ด์ธํธ๋ค์ ์์ฒญ์ ์ํ ์น ์๋ฒ์ ๊ณผ๋ถํ๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋
DB ์๋ฒ๋ ์ฌ์ฉ์๊ฐ ์ ํ์ ์ด๋ฏ๋ก ์ฐ๊ฒฐ์ ์ ์งํ๋ ํธ์ด ์ข๋ค.
๊ทธ๋ฆผ 1-11 ์ํ ์ฐ๊ฒฐ
WebBrowser
WebBrowser
WebBrowser
WebBrowser
<<HTTP Request>>
<<HTTP Response>>
HTTP/1.1 200 OK
Status CodeStateless(๋ฌด์ํ)
Request/Response
ํ ์ํ๊ฐ ์ ๊ฑฐ๋จ
HTTP/1.1 200 OK
์ฒ๋ฆฌ ์ฑ๊ณต
โ HTTP ์์ฒญ ๋ฉ์๋
์น ์๋ฒ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ ์๋ฒ-ํด๋ผ์ด์ธํธ ์ฌ์ด์ ์์ฒญ/์๋ต์ฉ ํ๋กํ
์ฝ๋ก HTTP๋ฅผ ์ง์ํ๋ค. HTTP๋ ํค๋์ ๋ฐ๋๋ก ๋๋๋ฉฐ, ์ ์ก๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๋ ๋ฐฉ
๋ฒ์ ๋ฐ๋ผ ์์ฒญ ๋ฉ์๋ ์ข ๋ฅ๊ฐ ๋ฌ๋ผ์ง๋ค. JSP/Servlet์ GET, POST๋ฅผ ์ฃผ๋ก ์ฌ์ฉ
ํ๊ณ HEAD๋ ๊ฐ๋ ์ฌ์ฉํ๋ค.
141์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
ํ 1-1 HTTP ์ฃผ์ ์์ฒญ ๋ฉ์๋
์์ฒญ ๋ฉ์๋ ์ค ๋ช
GET
์๋ฒ์ ์์ฒญ ๋ฉ์๋๋ฅผ ๋ณด๋ผ ๋ ํค๋์๋ง ๋ด์ฉ์ด ์๊ณ ๋ฐ๋์๋ ์ ์ก๋ฐ์ดํฐ๊ฐ ์๋ค. ์์ฒญ์ ๊ฐ
๋จํ๊ฒ ํ๊ธฐ ์ํ ๊ฒ์ผ๋ก ํค๋์ ํฌํจ๋๋ ๋ด์ฉ์ ํฌ๊ธฐ๋ ์ ํ์ ์ด๋ค. ๋ํ URL์ ์ ์ก๋ฐ
์ดํฐ๊ฐ ๋ ธ์ถ๋ ์ ์๋ค. HTTP Server๋ GET๊ณผ HEAD๋ฅผ ๋ฐ๋์ ์ง์ํด์ผ ํ๋ค.
POST์๋ฒ์ ๋ณด๋ผ ์ ์ก๋ฐ์ดํฐ๋ฅผ ๋ฐ๋์ ๋ฃ์ด์ ์์ฒญํ๋ค. <FORM>์ ์ด์ฉํ์ฌ ์ ์ก๋ฐ์ดํฐ๋ฅผ ์
๋ฒ๋ก ๋ณด๋ผ ๋ ์ฌ์ฉํ๋ค. ์ ์ก๋ฐ์ดํฐ ํฌ๊ธฐ์ ์ ์ฝ์ด ์๋ค.
HEAD์๋ต์ฉ์ผ๋ก ์ฌ์ฉ๋๋ฉฐ ํค๋์๋ง ๋ด์ฉ์ด ์๋ค. ๋ฐ๋ ์์ด ํค๋์ ๋ณด, ์บ์์ ๋ณด๋ฅผ ํด๋ผ์ด์ธํธ์
๋ณด๋ผ ๋ ์ฌ์ฉํ๋ค.
โ ๋๊ธฐ / ๋น๋๊ธฐ(Synchronous / Asynchronous) ์ ์ก
์์ฒญ ํ ์๋ต์ด ์ฌ ๋๊น์ง ๋ค๋ฅธ ์์ฒญ์ ํ ์ ์๋ ์ ์ก์ ๋๊ธฐ๋ผ๊ณ ํ๋ค. ์๋ก์ด
์์ฒญ์ ํ๋ฉด ํ ํ์ด์ง ์ ์ฒด๋ฅผ ๋ค์ ๋ถ๋ฌ์จ๋ค. ์๋ตํ ๋๋ง๋ค ํ์ด์ง ์ ์ฒด๋ฅผ ๋ค์
๋ถ๋ฌ์ค๊ณ ํ๋ก๊ทธ๋ ์ค๋ฐ๊ฐ ์๋ํ๋ค. ์์ฒญํ ๋ค์ ์๋ต์ ๋ฐ์ ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋ฉด์
๋ฐฑ๊ทธ๋ผ์ด๋์์ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ ๋ฑ ๋ค๋ฅธ ์์ ์ ํ ์ ์๋ ์ ์ก์ํ๋ฅผ
๋น๋๊ธฐ๋ผ๊ณ ํ๋ค. ๋น๋๊ธฐ ์ํ์์ ์๋ฒ๋ ํ์ํ ๋ฐ์ดํฐ๋ง ์ ์ก๋๋๋ก ์๋ตํ๋ค.
1991๋ ๋ถํฐ ๋น๋๊ธฐ๋ฅผ ์ฌ์ฉํ๊ธฐ ์์ํ๊ณ , 1995๋ ์ดํ AJAXAsynchronous Javascript
And XML๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๊ณ ์๋ค.
151์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
๊ทธ๋ฆผ 1-12 ์๋ก์ด ์์ฒญ์ ๋ํ ์๋ต
WebBrowser
WebBrowser
WebBrowser
WebBrowser
Background
Request ํ Response๊ฐ ์ฌ๋๊น์ง๋ค๋ฅธ ์์ฒญ์ ํ ์ ์๋ค. : Synchronous์๋ก์ด ์์ฒญ์ ํ๋ฉด ์๋ต์ผ๋ก ์ ์ฒด ํ์ด์ง๊ฐ๋ถ๋ ค์ง๋ค.
Request ํ Response๊ฐ ์ค๋ ๋์ค์๋๋ค๋ฅธ ์์ฒญ์ ํ ์ ์๋ค. : Asynchronousํ์ฌ ๋ณด์ฌ์ฃผ๋ ํ๋ฉด(์๋ต)์ ๋ฐฉํดํ์ง ์๊ณ ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ ์๋ค.
โ ํ๋ผ๋ฏธํฐ(parameter, ์ฟผ๋ฆฌ์คํธ๋ง)
ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ์์ฒญ์ ํ ๋ ์์ฒญ๊ฒฝ๋ก ์ด์ธ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ ์ ์
๋ค. ์๋ฒ๋ก ๋ณด๋ด๋ ๋ฐ์ดํฐ๋ โํค=๋ฐธ๋ฅโํํ๋ก ์ ์ก๋๋ค. ์๋ฅผ ๋ค์ด 'command=
detail&id=cust090'๊ณผ ๊ฐ์ด ์๋ฒ๋ก ๋ณด๋ด๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ผ๋ฏธํฐ๋ผ๊ณ ํ๋ค. GET ๋ฐฉ
์์ ํค๋์ ํ๋ผ๋ฏธํฐ๊ฐ ํฌํจ๋์ด ์๋ค. ํค๋๋ถ๋ถ์ ์น๊ฒฝ๋ก์ ๋ ธ์ถ๋๋ฏ๋ก ์น ๋ธ๋ผ
์ฐ์ ์ ๊ฒฝ๋ก ๋ถ๋ถ์์๋ ๋ณผ ์ ์๋ค. ํ๋ผ๋ฏธํฐ๋ โ?โ๋ก ์์์ ํ์ํ๊ณ ํ๋ผ๋ฏธํฐ
๊ฐ ์ฌ๋ฌ ๊ฐ๋ฉด โ&โ๋ฅผ ์ด์ฉํ์ฌ ์ฐ๊ฒฐํ๋ค. ํค๋ ๊ธธ์ด๋ ์ ํ์ ์ด๊ธฐ ๋๋ฌธ์ ํ๋ผ๋ฏธํฐ
ํฌ๊ธฐ์๋ ์ ํ์ด ์๋ค. POST ๋ฐฉ์์ ๋ฐ๋์ ํ๋ผ๋ฏธํฐ๊ฐ ํฌํจ๋๋ฏ๋ก ๊ฒฝ๋ก์ ํ๋ผ
๋ฏธํฐ๊ฐ ๋ ธ์ถ๋์ง ์๋๋ค. ํ๋ผ๋ฏธํฐ์ ํฌ๊ธฐ์๋ ์ ํ์ด ์๋ค.
161์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
๊ทธ๋ฆผ 1-13 GET๋ฐฉ์๊ณผ ํ๋ผ๋ฏธํฐ
GET/ pagecentric01_comp01/custusercontrol.jsp? command=detail&id=cust090 HTTP/1.1Accept:image/jpeg, */*Accept-Language: ko-KRAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0Host: localhost:8090Connection: Keep-AliveCookie: JSESSIONID=C5754E8BCACE37746ACBA55226500A45
<html>
<body>
...
<a href=โcustusercontrol.jsp?command=detail&id=cust090โ>์์ธ๋ณด๊ธฐ</a>
...
</body>
</html>
http://localhost:8090.pagecentric01_comp01/custusercontrol.jsp?command-detail&id=cust090
GET ๋ฐฉ์
Browser
๊ทธ๋ฆผ 1-14 POST๋ฐฉ์๊ณผ ํ๋ผ๋ฏธํฐ
post/ pagecentric01_comp01/custusercontrol.jsp HTTP/1.1Accept:image/jpeg, */*Accept-Language: ko-KRAccept-Encoding: gzip, deflateUser-Agent: Mozilla/4.0Host: localhost:8090Content-Length: 27Connection: Keep-AliveCookie: JSESSIONID=C5754E8BCACE37746ACBA55226500A45
<form action="custusercontrol.jsp" method='postโ?
<input type='hidden' name='command' value='bfupdate'/>
<input type='hidden' name='id' value='cust002'/>
<input type='hidden' value='๊ณ ๊ฐ์ ๋ณด๋ณ๊ฒฝ'/>
</form>
command=bfupdate&id=cust002
POST ๋ฐฉ์
Browser
๋น ํ ์ค๋ก HEAD์ BODY๊ตฌ๋ถํ๋ผ๋ฏธํฐ๊ฐ ๋ฐ๋์ ์์นํ๋ค.
http://localhost:8090.pagecentric01_comp01/custusercontrol.jsp
171์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
โ ์ ์ ๋ฌธ์/๋์ ๋ฌธ์
์๋ฒ์์ ํด๋ผ์ด์ธํธ๋ก ์๋ตํ ๋ ๋ฐ๋ ๋ถ๋ถ์ HTML๋ก ๊ตฌ์ฑ๋๋ค. HTML์ ํด๋ผ
์ด์ธํธ์ธ ์น ๋ธ๋ผ์ฐ์ ์ ์ ๋ฌ๋์ด ํ๋ฉด์ ์ถ๋ ฅ๋๋ค. ์๋ฒ์์๋ ๋ณํ์ด๋ ์คํ์ด
๋์ง ์์ผ๋ฉฐ, ๊ทธ๋๋ก ์น ๋ธ๋ผ์ฐ์ ์ ์ ๋ฌ๋๋ค. HTML๊ณผ ๊ฐ์ ๋ฌธ์๋ฅผ ์ ์ ๋ฌธ์static
document๋ผ๊ณ ํ๋ค. ์๋ฒ์์๋ ๋ณํ์ด๋ ์คํ์ ํ์ง ์๋ค๊ฐ ์น ๋ธ๋ผ์ฐ์ ์์ ์
์๋ฌธ์ ์ ๋ ฅ ๊ฒ์ฆ(validate-null์ธ์ง ์๋์ง ๋ฑ)์ด๋, ๋ณํ ํน์ ์คํ์ ํ๋ ์คํฌ
๋ฆฝํธ(์๋ฐ์คํฌ๋ฆฝํธ)๋ฅผ ํด๋ผ์ด์ธํธ ๋์ ๋ฌธ์dynamic document๋ผ ํ๋ค. HTML์ด๋ ์ค
ํฌ๋ฆฝํธ ์ธ์ด๋ ํด๋ผ์ด์ธํธ ๋ฌธ์๋ค. ์คํฌ๋ฆฝํธ๋ ๋ธ๋ผ์ฐ์ ์์ ํ ์ค์ฉ ์ธํฐํ๋ฆฌํฐ
๋ก ์ ๋ฌ๋์ด ์คํ๋๋ค. JSP/Servlet์ ์๋ฒ ๋ฌธ์์ด๊ณ , ์ปดํ์ผ๋์ด ์คํ๋ ๊ฒฐ๊ณผ๋ฅผ
HTML๋ก ๋ง๋ ๋ค. JSP/Servlet๋ ์๋ฒ์์ ์คํ๋๋ฉฐ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ตํ๋ ๋ฌธ
์๋ฅผ ๋ง๋ค๋ฏ๋ก ๋์ ๋ฌธ์๋ค. ์น ํ๋ก๊ทธ๋๋ฐ์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ์ ์น ์๋ฒ์
์ JSP/Servlet์ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์น ๋ธ๋ผ์ฐ์ ๋ก ์๋ตํ๋ ๊ฒ์ด๋ค.
ํด๋ผ์ด์ธํธ์ฌ์ด๋ ๋ฌธ์์ ์ข ๋ฅ
โ ์ ์ ๋ฌธ์ : HTML, CSS
โ ๋์ ๋ฌธ์ : ์คํฌ๋ฆฝํธ
์๋ฒ์ฌ์ด๋ ๋ฌธ์์ ์ข ๋ฅ๋
โ ๋์ ๋ฌธ์: JSP/Servlet
โ HTTP Server
HTML, CSS, ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๊ตฌ์ฑ๋ ๋ฌธ์๋ ์๋ฒ์์ ๋ณํ๋๊ฑฐ๋ ์คํ๋์ง ์
๋๋ค. ์ด๋ฐ ํด๋ผ์ด์ธํธ์ฌ์ด๋ ๋ฌธ์๋ฅผ ์์ฒญํ ์น ๋ธ๋ผ์ฐ์ ๋ก ์๋ตํด์ฃผ๋ ์๋ฒ๊ฐ
HTTP Server๋ค. HTTP Server๋ ์์ฒญ์ ๋ํ ์๋ต๋ง ํ๋ค.
181์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
๊ทธ๋ฆผ 1-15 HTTP Server
WebBrowser
# HTML ์์ฒญ #Web Server
HTTP Server
Web Container
<<HTTP Request>>
<<HTTP Response>>
<<HTTP>>
<head>
<body>
<head>
<body>
Servlet
JSP
DB
Dog.html
<HTML>
HTTPD
โ ์น ์๋ฒ ๊ตฌ์กฐ
์์ฒญ์ด ๋ค์ด์ค๋ฉด ํ์ฅ์(.jsp)๋ฑ์ ํ์ธํ์ฌ ์๋ฒ์ฌ์ด๋ ๋ฌธ์๋ฅผ ์์ฒญํ๋์ง ํ๋จ
ํ๋ค. HTTPD๋ ์์ฒญ๋ ๋ฌธ์๊ฐ ํด๋ผ์ด์ธํธ ์ฌ์ด๋์ธ์ง ์๋ฒ์ฌ์ด๋์ธ์ง ํ๋จํ
๋ค. ์๋ฒ์ฌ์ด๋๋ผ๋ฉด ์น ์ปจํ ์ด๋์์ JSP/Servlet์ ์คํ์ํจ ๋ค์, ์์ฒญ ๊ฒฐ๊ณผ๋ฅผ
ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ๋ฌธ์(HTML)๋ก ๋ง๋ค์ด HTTP Server๋ก ๋ณด๋ด๋ฉด HTTP Server
๊ฐ ์น ๋ธ๋ผ์ฐ์ ๋ก ๋ณด๋ธ๋ค.
191์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
๊ทธ๋ฆผ 1-16 ์น ์๋ฒ ๊ตฌ์กฐ
WebBrowser
# JSP/Servlet ์์ฒญ #Web Server
HTTP Server
<<HTTP Request>>
<<HTTP Response>>
<<HTTP>>
<head>
<body>
<head>
<body>
Web Container
Servlet
JSP
DB
Custlist.jsp
<HTML>
HTTPD
โ ์น ์ปจํ ์ด๋(Web Container)
์น ์๋ฒ์๋ HTML์ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ด๋ HTTP Server, JSP/Servlet์ ์คํํ
๋ ์์ง, ์์ง๊ณผ JSP/Servlet๋ฅผ ์คํํ๋๋ฐ ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ์ ํฌํจํ ์น ์ปจ
ํ ์ด๋๊ฐ ์๋ค. ์์ง์ JSP/Servlet์ ์คํํด ๊ฒฐ๊ณผ๋ฌผ์ธ HTML์ ๋ง๋ ๋ค. ์ปค๋ฅํฐ
connector๋ HTML์ HTTP Server๋ก ๋ณด๋ด ์น ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ตํ๊ฒ ํ๋ค. Tomcat
์น ์๋ฒTomcat web server์๋ ์นดํ๋ฆฌ๋catalina ์ปจํ ์ด๋, ์์คํผjasper ์์ง, ์ปจํ ์ด๋
์ HTTP Server๋ฅผ ์ฐ๊ฒฐํ๋ ์ฝ์ํ coyote ์ปค๋ฅํฐ๊ฐ ์๋ค. ์น ํ๋ก๊ทธ๋๋ฐ์๋ ์น
์ปจํ ์ด๋๊ฐ ๋ฐ๋์ ์์ด์ผ ํ๋ค. HTTP Server๋ ์๋ฐ๋ก, Apache HTTP Server
๋ C๋ก ๋ง๋ค์ด์ก๋ค๋ ์ ๋ ์์๋์.
201์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
๊ทธ๋ฆผ 1-17 ์น ์ปจํ ์ด๋
Web Server
Web Container
JNDI JavaMail
javax.sqlDataSource
ConnectionPooling
JMS
<<Request>>
HTTPServer
CONNECTOR
<<Response>>
HTML
HTML
S
DB
HTTPD
HTML
P
Engine
โ ํ๋ผ๋ฏธํฐ ์ฒ๋ฆฌ
ํด๋ผ์ด์ธํธ์์ ์๋ฒ๋ก ์์ฒญํ ๋ ์์ฒญ๊ฒฝ๋ก์ ๋ฐ์ดํฐ๋ฅผ ํจ๊ป ๋ณด๋ผ ์ ์๋ค. ์ด ๋ฐ
์ดํฐ๋ โํค=๊ฐโํํ๋ก ์ ์ก๋๋ฉฐ ํ๋ผ๋ฏธํฐ๋ผ๊ณ ํ๋ค. ์น ์๋ฒ์์ ํ๋ผ๋ฏธํฐ๋ฅผ ๋ฐ์
๋๋
String ๊ฐ = reuest.getParameter("ํค");
๋ก ๋ฐ๋๋ค. โํคโ์ ์ด๋ฆ์ผ๋ก โ๊ฐโ์ ๋ฐ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค. ํ๋ผ๋ฏธํฐ์ โํคโ์ โ๊ฐโ์
๋ชจ๋ String์ด๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ id๊ฐ โcust003โ์ธ ํ์ ์ญ์ ํ๊ณ ์ถ๋ค๋ฉด ๋ค์
์ฒ๋ผ ์์ฒญ์ ํ๋ผ๋ฏธํฐ๋ฅผ ํจ๊ป ๋ณด๋ธ๋ค.
pagecentric01_comp01/custusercontrol.jsp?command=delete&id=cust003
์๋ฒ๋ id๋ฅผ ์ด์ฉํ์ฌ ์์ฒญํ ํ์ ์ญ์ ํ๋ค. ์์ฒญ ์ค ์์ธ๋ด์ฉ์ ํ์ธํ๊ธฐ ์ํด
command๋ฅผ ๋ฐ๊ณ , if๋ฌธ์์ command๊ฐ ์ญ์ , ์ฝ์ , ๋ณ๊ฒฝ์ธ์ง ํ์ธํ๊ณ ์์ฒญ๋ณ
๋ก ์ฒ๋ฆฌํ๋ค.
211์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
String command = request.getParameter(โcommandโ);
if( command.equals(โdeleteโ) )
String id = request.getParameter(โidโ);
โฆ
//DB์์ id์ ํด๋นํ๋ ๋ด์ฉ(ํ)์ ์ญ์ ํ๋ค.
๊ทธ๋ฆผ 1-18 ํ๋ผ๋ฏธํฐ ์ฒ๋ฆฌ
Web Server
Web container
JSP
DB
WebBrowser
pagecentric01_comp01/custusercontrol.jsp? command=delete&id=cust090
String Command =
request.getParameter("command");
if( command.equals("delete":) ){
String id = request.getParameter("id");
...
//DB์์ id์ ํด๋นํ๋ ๋ด์ฉ(ํ)์ ์ญ์
}
โ ์๋ธ๋ฆฟ(Servlet)
์๋ธ๋ฆฟ์ โServlet = Server + letโ์ด๋ฉฐ, 'let'๋ ์ปจํ ์ด๋์์ ์คํ๋๋ ํ๋ก๊ทธ๋จ
์ด๋ค. ๋ค์ ๋งํด ์๋ธ๋ฆฟ์ ์น ์๋ฒ(Tomcat)์ ์ปจํ ์ด๋(์นดํ๋ฆฌ๋)์์ ์คํ๋๋
์น ํ๋ก๊ทธ๋๋ฐ์ด๋ค. ์์ฒญ ๋๋ ์์ฒญ๊ณผ ๋๋ฐํ๋ ํ๋ผ๋ฏธํฐ๋ฅผ ์๋ธ๋ฆฟ์์ ๋ฐ์ ์์ฒญ
์ ์ฒ๋ฆฌํ๊ณ ๊ฒฐ๊ณผ๋ฅผ HTML๋ก ๋ง๋ ๋ค. ์น ๋ธ๋ผ์ฐ์ ๋ ์๋ต์ผ๋ก ๋ณด๋ด์ง HTML์ ๋ฐ
์์ ํ๋ฉด์ ์ถ๋ ฅํ๋ค.
221์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
โletโ๊ฐ ๋ถ์ ๋ค๋ฅธ ํ๋ก๊ทธ๋จ๋ ์๋ค. ์ ํ๋ฆฟapplet์ applet = application + let๋ก
์ปดํ์ผ๋ ํ๋ก๊ทธ๋๋ฐ์ด ์น ๋ธ๋ผ์ฐ์ ์ ์ปจํ ์ด๋์์ ์คํ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ฉฐ,
์ ํ๋ฆฟ์ ํด๋ผ์ด์ธํธ์ฌ์ด๋ ํ๋ก๊ทธ๋๋ฐ์ด๋ค. ๋ฏธ๋ค๋ฆฟmiddlet์ midMobile Information
Device Profile+let๋ฅผ ๋งํ๋ฉฐ ๋ชจ๋ฐ์ผ ์ ๋ณด๊ธฐ๊ธฐ ํ๋กํ์ผ์ ์ฌ์ฉํ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ผ
๋ก ํธ๋ํฐ ์ปจํ ์ด๋์์ ์คํ๋๋ค.
โ ๋ผ์ดํ์ฌ์ดํด(Life Cycle)
JSP/Servlet์ ์น ํ๋ก๊ทธ๋๋ฐ์ด๋ค. ์น ํ๋ก๊ทธ๋๋ฐ์ ์ปจํ ์ด๋๊ฐ ๋ฐ๋์ ํ์ํ๋ฉฐ,
ํ๋ก๊ทธ๋๋ฐ์ ์์ง์์ ์คํํ์ฌ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๋ค. ๊ฒฐ๊ณผ๋ฌผ์ HTML๋ก ๋ง
๋ค์ด์ ์น ๋ธ๋ผ์ฐ์ ์ ์๋ตํ๋ค. ์๋ธ๋ฆฟ์ โletโ๋ ์๋ธ๋ฆฟ์ด ์ปจํ ์ด๋์์ ์คํ๋
๋ ํ๋ก๊ทธ๋๋ฐ์ด๋ผ๋ ์ ์ ์๋ ค์ค๋ค. โletโ๊ฐ ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ปจํ ์ด๋์ ๋ช
๋ น์ ๋ฐ๋ผ ์์ฑ, ์ด๊ธฐํ, ์คํ, ์๋ฉธ ๋ฑ ์ ํด์ง ํ๋์ ํ๋ค. ์ด๋ ๊ฒ ํ๋ ๊ฒ์ ๋ผ์ด
ํ์ฌ์ดํด์ด๋ผ๊ณ ํ๋ค. ์ปจํ ์ด๋๋ ์์ฒญ์ ๋ฐ๋ผ ์ ํด์ง ๋ฉ์๋๋ฅผ ํธ์ถํ๋ค. ์์ฒญ์
์ฒ์์ผ๋ก ๋ฐ์ผ๋ฉด ์๋ธ๋ฆฟ์ ์์ฑํ๋ค. ์ด๊ธฐํ(init( )) ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์์ฑ๋ ์
๋ธ๋ฆฟ์ ์คํํ๋ ๋ฐ ํ์ํ ๋ฐ์ดํฐ๋ ๊ฐ์ ์ป๋๋ค. ์คํ(service( )) ๋ฉ์๋๋ฅผ ํธ์ถ
ํ์ฌ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์๋ตํด์ค๋ค. ๋ ๋ฒ์งธ ์์ฒญ๋ถํฐ๋ ์คํ(service( )) ๋ฉ
์๋๋ง ํธ์ถํ๋ค. ๋ ์ด์ ์์ฒญ์ด ์๋ค๋ฉด ์๋ฉธ(destroy( )) ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ์์
์ ํ์ํ๊ณ , ์๋ธ๋ฆฟ์ ๊ฐ์ฒดinstnace๋ฅผ ์ ๊ฑฐํ๋ค. ์ปจํ ์ด๋๋ ์ด๊ธฐํ์ ์๋ฉธ ๋ฉ์๋
๋ฅผ ํ ๋ฒ๋ง ํธ์ถํ๋ค.
์์ฒญ์ ๋ฐ๋ผ ํ์ํ ๋ก์ง์ ์คํํ๋ ค๋ฉด ์๋์ ๊ฐ์ด service( ) ๋ฉ์๋ ๋ฐ๋( )์ ํ
๋ก๊ทธ๋๋ฐํ๋ฉด ๋๋ค.
public void service(request, response)
//์คํ๋ก์ง
์์ฒญ์ ๋ฐ์ผ๋ฉด ์ปจํ ์ด๋๋ ์๋ธ๋ฆฟ์ service( ) ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๋ก์ง์ ์คํํ
231์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
๋ค.
๊ทธ๋ฆผ 1-19 ์น ๋ผ์ดํ ์ฌ์ดํด
web.xmlํ๋์ค๋น/์์์ด๊ธฐํ
์ปจํ ์ด๋๊ฐ๋ฉ์๋ ํธ์ถ
init ( )
service ( )
destroy ( )
init ( )
service ( )
Request ์ฒ๋ฆฌ ํResponse
์์ฒญ
์๋ตdestroy ( )
์์ํ์/๊ฐ์ฒด์๋ฉธ
Servlet
Servlet
Servlet
โ JSP(Java Server Page)
JSP ์ค Server Page๋ ์๋ฒ์์ ์คํ๋๋ ๋ผ์ดํ์ฌ์ดํด์ด ์๋ ์น ํ๋ก๊ทธ๋๋ฐ์ฉ
ํด๋์ค๋ฅผ ๋งํ๋ค. Java๋ ๊ฐ๋ฐ ์ธ์ด๋ฅผ ๊ฐ๋ฆฌํจ๋ค. Tomcat ์น ์๋ฒ์์ ์์คํผjasper
์์ง์ด JSP๋ฅผ ์๋ธ๋ฆฟ์ผ๋ก ๋ณํํ๋ค. ๋ผ์ดํ์ฌ์ดํด์ ๊ณ ๋ คํ์ง ์๊ณ ๊ฐ๋ฐํด๋ ์๋ธ
๋ฆฟ์ผ๋ก ๋ณํ๋ ๋ ๋ผ์ดํ์ฌ์ดํด ๋ฉ์๋๊ฐ ์๋์ผ๋ก ๋ง๋ค์ด์ ธ ์๋ธ๋ฆฟ์ฒ๋ผ ์คํ๋
๋ค. hello.jsp๋ฅผ ๋ง๋ค๋ฉด org.apache.jsp.hello_jsp.java์ ๊ฐ์ด ์๋ธ๋ฆฟ์ผ๋ก ๋ณํ
๋๊ณ org.apache.jsp.hello_jsp.class๋ก ์ปดํ์ผ๋ ๋ค์ ์คํ๋๋ค. JSP๋ ์๋ธ๋ฆฟ
์ด๋ฏ๋ก ์๋ธ๋ฆฟ์์ ์ฌ์ฉํ๋ ๊ฐ์ฒด๋ ๋ฉ์๋๋ฅผ JSP์์๋ ์ฌ์ฉํ ์ ์๋ค.
241์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
โ ์น ์ปดํฌ๋ํธ
์ปจํ ์ด๋์์ ์คํ๋ ์ ์๋๋ก ํ์ํ ๊ท์น์ ์ค์ํ ์น ํ๋ก๊ทธ๋จ ๋ฌถ์์ ์น ์ปด
ํฌ๋ํธ๋ผ๊ณ ํ๋ค. ์๋ฅผ ๋ค์ด ์ปดํจํฐ์ ๋ง๋๋ณด๋๋ ์ฌ๋ฌ ์นด๋๋ฅผ ๊ฝ์ ์ ์๋ ๊ตฌ๋ฉ
(์ฌ๋กฏ)์ด ์๊ณ , ๊ฐ ์นด๋๋ ์ ํด์ง ๋ชฉ์ ์ด ์๋ค. ๋ชฉ์ ์ ์ด๋ฃจ๊ธฐ ์ํด ์ฌ๋ฌ ๋ถ์ํ์ผ
๋ก ์ฌ๋ฌ ์นด๋๋ฅผ ๋ง๋ ๋ค. JSP๋ ์๋ธ๋ฆฟ์ ๋ถ์ํ์, ์น ์ปดํฌ๋ํธ๋ ๊ฐ ์นด๋์ ํด๋น
ํ๋ค. ๊ฐ ์นด๋๋ ๋ง๋๋ณด๋์ ๊ฝํ์ผ ์คํ๋๋ค. VGA ์นด๋๋ฅผ ๊ฝ์์ผ ํ๋ฉด์ด ๋์ค๋ฉฐ,
์ฌ์ด๋ ์นด๋๋ฅผ ๊ฝ์์ผ ์๋ฆฌ๊ฐ ๋์จ๋ค. ์นด๋๋ฅผ ๋ง๋๋ณด๋์ ๊ฝ์ ๋๋ ์ฌ๋กฏ์ ์์
๊ฐ ๋ง์์ผํ๋ค. ์ฌ๋กฏ ์ค์น ์ ๋ฐ๋์ ์ด ๊ท์น์ ์ง์ผ์ผ ํ๋๋ฐ, ์น ์ปดํฌ๋ํธ์์๋
API๋ผ๋ ๊ท์น์ ๋ฐ๋์ ์ง์ผ์ผํ๋ค. ๋ฐ๋ผ์ ์น ํ๋ก๊ทธ๋๋ฐ์ ์น ์ปดํฌ๋ํธ๋ฅผ ๋ง๋
๋ ๋ฐฉ๋ฒ, ์น ์ปดํฌ๋ํธ์ ์น ์ปจํ ์ด๋ ์ฌ์ด์ ๊ท์น์ ๋ฐฐ์ฐ๋ ๊ฒ์ด๋ผ ํ ์ ์๋ค.
๊ทธ๋ฆผ 1-20 ์น ์ปดํฌ๋ํธ
interface = slot
(๊ท์น์ ์งํค๋๋ก
๊ฐ์ ์ฑ์ด ์๋ค. = API
Web Component = Sound Card
(๊ฝ์์ผ ์๋ฆฌ๊ฐ ๋์จ๋ค.)
Web Component = VGA Card
(๊ฝ์์ผ ํ๋ฉด์ด ๋์จ๋ค.)
Web Component = Mother Board
(์ฌ๋ฌ ์นด๋๋ฅผ ๊ฝ์ ์ ์๋ค.)
251์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
โ ์ปจํ ์คํธ(Context)
๋ฐฐํฌ๋จ์, ์คํ๋จ์์ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ปจํ ์คํธ๋ผ๊ณ ํ๋ค. ๊ฐ๋ฐ ํ JSP๋ ์๋ธ๋ฆฟ, ๊ทธ
๋ฆผ, HTML, web.xml์ ์์ถํ์ฌ ๋ฌถ์ด์ (์์นด์ด๋ธ) war๋ฅผ ๋ง๋ ๋ค. ์ด war๋ฅผ ์น
์ปจํ ์ด๋์ ๋์ผ๋ฉด ์์ถ์ด ํ๋ ค ์คํ์ ์ํ ๋๋ ํฐ๋ฆฌ๊ฐ ๋๋ค. ์ด ๋๋ ํฐ๋ฆฌ๊ฐ ๋ฐ
๋ก ์ปจํ ์คํธ์ด๋ฉฐ ๋ชจ๋ ํ์ผ์ ๊ฐ ์ฉ๋์ ๋ง๊ฒ ์ปจํ ์คํธ ์์ ๋๋ ํฐ๋ฆฌ์ ๋์์ผ ํ
๋ค. ์๋ฅผ ๋ค์ด hello.war๋ฅผ ์น ์ปจํ ์ด๋์ ๋์ผ๋ฉด hello.war๊ฐ ํ์ด์ ธ hello ๋๋
ํฐ๋ฆฌ๊ฐ ๋๋ค. ์ปจํ ์คํธ ๋ฐ๋ก ์๋์๋ HTML, CSS, ์๋ฐ์คํฌ๋ฆฝํธ, ์ด๋ฏธ์ง, JSP,
WEB-INF ๋๋ ํฐ๋ฆฌ๊ฐ ์๋ค. WEB-INF ๋๋ ํฐ๋ฆฌ ์์๋ web.xml์ด ์๊ณ , ์๋ธ
๋ฆฟ๊ณผ ์ปดํ์ผ๋ ํด๋์ค๋ classes ๋๋ ํฐ๋ฆฌ์ ์์ด์ผ ํ๋ฉฐ, .jar๋ก ์์ถ๋ ๋ผ์ด๋ธ๋ฌ
๋ฆฌ๋ lib์ ์์ ์์ด์ผ ํ๋ค. ์ปจํ ์ด๋๋ ์ปจํ ์คํธ์ web.xml์ ๊ฐ์ฅ ๋จผ์ ํ ๋ฒ
์ฝ์ด๋ค์ธ๋ค.
๊ทธ๋ฆผ 1-21 ์ปจํ ์คํธ
Servlet
Web Engine
์์นด์ด๋ธ
hello.war
๋ฐฐํฌ
Web Container
jspcentric001context
jspcentric002context Web Component
Container์์ ์คํ๋๋๋ก์ปจํ ์ด๋์์ ๊ท์น์ ์ค์ํ์น ํ๋ก๊ทธ๋จ ๋ฌถ์
hellocontext์คํ
web.xml web.xml
web.xml
xml
261์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
๊ทธ๋ฆผ 1-22 ์ปจํ ์คํธ
hello.war
hello
HTML, IMAGE, CSS, JSP
WEB-INF
web.xml
classes
Servlet
lib .class(์ปดํ์ผ๋ ํด๋์ค)
.jar(๋ผ์ด๋ธ๋ฌ๋ฆฌ)
xml
โ WAS(Web Application Server-Java Enterprise Edition Server)
WAS(JEE)๋ โWeb Server + Application Server + Serviceโ์ ์๋ฏธ๋ค. ์น ์๋ฒ
๋ JSP/Servlet๋ฅผ ์ํ ์น ์ปจํ ์ด๋์ HTML์ ์๋น์คํ๋ HTTP Server๊ฐ ์
๋ค. Application Server์์๋ ๋น์ฆ๋์ค ๋ก์ง์ ์ํํ๋ EJB ์ปจํ ์ด๋๊ฐ ์๋ค.
์๋น์ค๋ JNDI, JMS, JTA, JavaMail์ ์ ๊ณตํ์ฌ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ์๋ฒ์ ์ฐ๊ฒฐํ์ฌ ์ฌ
์ฉํ๊ฒ ํ๊ฑฐ๋ ์๋ฒ ์์์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๊ฒ ํ๋ค. Enterprise Edition
์ ํ์์์๋ฅผ ๋ชจ๋ ๊ตฌํํ ์๋ฒ๋ฅผ Enterprise Edition Server ๋๋ WAS๋ผ ๋ถ
๋ฅธ๋ค. WAS์๋ WebLogic, WebSphere, JBoss, Zeus ๋ฑ ์๋ง์ ์ ํ์ด ์๋ค.
Tomcat์ WAS๋ก ๋ถ๋ฅด๊ธฐ๋ ํ๋ค. ์ด ์ฑ ์์๋ Tomcat ์น ์๋ฒ๋ฅผ Tomcat ์ ํ
๋ฆฌ์ผ์ด์ ์๋ฒ์ ๊ฐ์ ์๋ฏธ๋ก ์ฌ์ฉํ๋ค.
271์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
๊ทธ๋ฆผ 1-23 ์น ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ
WebContainer
javax.sqlDataSource
ConnectionPoolingJNDI JavaMail JMS ...
Web Application Server (WAS, JEE Server)
EJB Container
S
DB
HTTPD
HTTPServer
P
Web Server Application Server(EJB Server)
B
โ ๋ ์ด์ด/ํฐ์ด
๋ ์ด์ด๋ ํ๋ก๊ทธ๋จ์ ์ญํ ์ ๋ฐ๋ผ ๋ ผ๋ฆฌ์ ์ผ๋ก, ํฐ์ด๋ ์์คํ ์ ์ญํ ์ ๋ฐ๋ผ ๋ฌผ๋ฆฌ
์ ์ผ๋ก ๋๋ ๊ฒ์ด๋ค. ํผ์ฉ๋๊ธฐ๋ ํ์ง๋ง ๋ ผ๋ฆฌ์ ์ธ ๊ฒ๊ณผ ๋ฌผ๋ฆฌ์ ์ธ ๊ฒ์ผ๋ก ๊ตฌ๋ถ๋๋ค
๋ ์ ์ ๊ธฐ์ตํ์. ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ DVD ๋์ถ์ ๋ณด๋ฅผ ์ฐพ์ ์น ๋ธ๋ผ์ฐ์ ์ ์ถ๋ ฅํ
๋ ์น ํ๋ก๊ทธ๋๋ฐ์ ํ๋ค๊ณ ๊ฐ์ ํด๋ณด์. DVD ๋์ถ ํ๋ก๊ทธ๋จ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์
๊ทผํด ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ค๋ ๋ถ๋ถData Layer, ๊ณ ๊ฐ์ ๋ณด์ธ์ง ๋น๋์ค ์ ๋ณด์ธ์ง ์์ฒญ์ ํ๋จ
ํ๊ณ ์คํํ๋ ๋ถ๋ถBusiness Layer, HTML๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ค๊ณ ์๋ตํ๋ ๋ถ๋ถPresentation
Layer์ผ๋ก ๋๋ ์ ์๋ค. DVD ๋์ถ ํ๋ก๊ทธ๋จ์ ์ญํ ์ ๋ฐ๋ผ ๋๋ ์ ์์ผ๋ฉฐ ์ด๋ฅผ ๋
์ด์ดlayer๋ผ ํ๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ, ์น ์๋ฒ, ํด๋ผ์ด์ธํธ์ธ ์น ๋ธ๋ผ์ฐ์ ๋ฑ ์์คํ
์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋๋ ์ ์๋๋ฐ ์ด๊ฒ์ ํฐ์ดtier๋ผ ํ๋ค. ์น ํ๋ก๊ทธ๋๋ฐ์ ๊ธฐ๋ณธ์ ์ผ
๋ก 3ํฐ์ด๋ค. ๋ ์ด์ด๋ ๋ณดํต 4๊ฐ๋ก ๋๋๋ค. ์ด ์ฑ ์์๋ 3ํฐ์ด์ 4๋ ์ด์ด๋ฅผ ๊ธฐ๋ณธ์ผ
๋ก ์ฌ์ฉํ๋ค.
โ ํ๋ฉด ๋ ์ด์ดPresentation Layer : JSP์ ์๋ธ๋ฆฟ์ด ๋ด๋นํ๋ค. ์์ฒญ์ ๋ฐ์ ๋น์ฆ๋์ค ๋
์ด์ด์ ์ ๋ณด๋ฅผ ์์ฒญํ๋ค. ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ ์์ฒญํ ํ๋ฉด์ ๋์ ์ผ๋ก ๋ง๋ค๊ณ , ์์ฒญํ
281์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
ํ๋ฉด์ผ๋ก ์ฎ๊ธด๋ค.
โ ๋ฐ์ดํฐ ๋ ์ด์ดData Layer: ์์์ฑ ๋ ์ด์ดPersistence Layer๋ก๋ ์๋ ค์ง ๋ ์ด์ด๋ก, ๋ฐ์ด
ํฐ๋ฒ ์ด์ค์ ์ฟผ๋ฆฌ(CRUD)๋ฅผ ์คํํ๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ์ฌ ์ฟผ๋ฆฌ๋ฅผ ์คํํ
๊ธฐ ์ํด JDBC๋ฅผ ์ด์ฉํ๊ฑฐ๋, ํด๋น ์ฟผ๋ฆฌ์ ๋ํด JDBC ์์ ์ ์๋์ผ๋ก ์คํํด
์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ ํ๋ ์์ํฌ(ORM-iBatis, Hibernate)๋ฅผ ์ฌ์ฉํ๋ค.
โ ๋น์ฆ๋์ค ๋ ์ด์ดBusiness Layer: ํ๋ฉด ๋ ์ด์ด๋ ๋ฐ์ดํฐ ๋ ์ด์ด๋ฅผ ์ด์ฉํ๋ค. ๋น์ฆ๋
์ค ๋ ์ด์ด์์ ์ป์ ๊ฐ์ฒด๋ฅผ ๋น์ฆ๋์ค ๊ฐ์ฒด๋ผ๊ณ ํ๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ(์
ํฐํฐ)๊ณผ ๊ด๋ จ์ด ์๋ค. ๋ฐ์ดํฐ ๋ ์ด์ด์์ ์ป์ ๊ฒฐ๊ณผ๋ก ํ๋ฉด ๋ ์ด์ด์์ ํ์ํ
๋น์ฆ๋์ค ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด๋ ๋๋ค.
๊ทธ๋ฆผ 1-24 3ํฐ์ด ๊ตฌ์ฑ
Client Tier
Server Tier
EIS Tier
User
Presentation Layer(JSP/Servlet)
Business Layer(Service, EJB)
Data Layer(Persistence, Integration
Layer : DAO, ORM)
Resource Layer
DB
Browser Browser
์์ฒญ์ ๋์ ์ผ๋ก ์ฒ๋ฆฌํ์ฌ
HTML๋ก ์๋ตํ๋ค.
์์ฒญ์ ๋ฐ๊ณ , ๋ถ์, ์คํํ๋ค. SOL์
์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ป๊ธฐ๋ ํ๋ฉฐ ์์ฒญ์
๋ํ ๋ฐ์ดํฐ๋ฅผ ์๋ตํ๋ค.
SOL์ ์ด์ฉํ์ฌ ์ ๋ณด ๊ฒ์, ์ถ๊ฐ,
์์ , ์ญ์ (CRUD)๋ฅผ ํ๋ค.
์ ํ๋ฆฌ์ผ์ด์ ์๋ฒ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ 4ํฐ์ด๊ฐ ๋๋ค. 4ํฐ์ด์ผ ๋๋ ์น ์๋ฒ์ ์ ํ
๋ฆฌ์ผ์ด์ ์๋ฒ๊ฐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋๋์ด์ง ํฐ์ด๊ฐ ๋๋ฏ๋ก ๋ ์ด์ด๋ฅผ ํฐ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
291์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
๊ทธ๋ฆผ 1-25 4ํฐ์ด ๊ตฌ์ฑ
Client Tier
Application Tier
Server Tier
EIS Tier
User
Presentation Layer(JSP/Servlet)
Business Layer(Service, EJB)
Data Layer (Persistence, Integration
Layer : DAO, ORM)
Resource LayerDB
Browser Browser
Web Server
HTML ์๋ต
CRUD
Application Server
โ DAO(Data Access Object-๋ฐ์ดํฐ ์ ๊ทผ ๊ฐ์ฒด)
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ด๋ จ๋ ์์ (CRUD-Create, Retrieve, Update, Delete: SQL
DML+Select)์ ์ ๋ฌธ์ ์ผ๋ก ๋ด๋นํ๋ ๊ฐ์ฒด๋ค. DAO ์์ ๋ฉ์๋๋ ๋ชจ๋ ๋ฐ์ดํฐ
๋ฒ ์ด์ค์ ๊ด๋ จ๋ ์์ ์ ํ๋ค. ์๋์ ๊ฐ์ด CRUD๋ฅผ ์คํํ๋ ๋ฉ์๋๋ JDBC๋ฑ
์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํด์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ค. ๋ค๋ฅธ ๊ฐ๋ฐ์๋ ํด๋น ๋ฉ์
๋๋ฅผ ํธ์ถํ๋ฉด ํด๋น ์ฟผ๋ฆฌ๋ฅผ ์คํํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ค.
public CustUserDto getCustUser(String id) ํด๋น id์ ํด๋นํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ์ฟผ๋ฆฌ ์คํ
public int addCustUser(CustUserDto uDto)insert ์ฟผ๋ฆฌ ์คํ
public int updateCustUser(CustUserDto uDto)update ์ฟผ๋ฆฌ ์คํ
public int deleteCustUser(String id)delete ์ฟผ๋ฆฌ ์คํ
โ DTO(Data Transfer Object, ๋ฐ์ดํฐ ์ ์ก ๊ฐ์ฒด)
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ์ด๋ธ(์ํฐํฐ)์ ํด๋นํ๋ ๊ฐ์ฒด๋ก ํ ์ด๋ธ์ ์ปฌ๋ผ๋ค์ ์ผ๋์ผ๋ก
301์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
์ ์ฅํ ์ ์๋ ๋ฉค๋ฒํ๋๊ฐ ์๊ณ get/set ๋ฉ์๋๋ฅผ ๊ฐ๋๋ค. ์ฐํ๋ค(ํ ์ด๋ธ์ ์ปฌ
๋ผ๋ค)์ ์์ ํ๊ฒ ์ฎ๊ธธ ์ ์๋๋ก ๋ง๋ค์ด์ง ํํตDTO์ด๋ผ๊ณ ์๊ฐํ์. DTO๋ ๋ก
์ง์ด ์์ผ๋ฉฐ ์ผ๋ฐ์ ์ผ๋ก ํ๋์ DTO๊ฐ ํ๋์ ํROW์ ํด๋น๋๊ณ , ๋๋ถ๋ถ DAO
์ ๊ฐ์ด ์ฌ์ฉ๋๋ค. DAO์ ๋ฉ์๋๋ DTO๋ฅผ ๋ฐํํ๊ฑฐ๋ DTO๋ฅผ ๋์ ํ๋ค. ๋น์ฆ
๋์ค ๋ ์ด์ด์์ ๋ฐํํ๋ Business ๊ฐ์ฒด๋ฅผ DTO๋ก ๋ณด๋ฉด ๋๋ค. ์๋ ์์ค์์
CustUserDto๊ฐ DTO๋ค. getCustUser( ) ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ํ ์ด๋ธ์์ ํด๋น ํ
์ ํด๋นํ๋ ๋ฐ์ดํฐ๋ฅผ DTO์ ๋ด์์ ๋ฐํํ๋ค.
public CustUserDto getCustUser(String id) ํด๋น id์ ํด๋นํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ์ฟผ๋ฆฌ ์คํ
public int addCustUser(CustUserDto uDto)insert ์ฟผ๋ฆฌ ์คํ
public int updateCustUser(CustUserDto uDto)update ์ฟผ๋ฆฌ ์คํ
โ MVC ํจํด(Model-View-Controller)
MVC ํจํด์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์์ ๋ฐ์ํ๋ ์ฒ๋ฆฌ์์, ๋ฐ์ดํฐ ์ ์ก, ๊ด๋ฆฌ ์
์ ๊ณผ ๋ฐ์ดํฐ ์ถ๋ ฅ์ ๋ํ ์น์ ํ๋ฆฌ์ผ์ด์ ์์ ์ ๊ฐ๋จํ๊ฒ ๋์ํํ๋ค. ์์ฒญ์ ๋ฐ
์ ์ปจํธ๋กค๋ฌ๋ ์์ฒญ์ ๋ถ์ํ๋ค. ์์ฒญ์ ํด๋นํ๋ ๋ชจ๋ธ์ ์ด์ฉํ์ฌ ๋น์ฆ๋์ค ๋ก์ง
(๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ๊ด๋ จ๋ ์์ )์ ์คํํ๊ณ ๋น์ฆ๋์ค ๊ฐ์ฒด๋ฅผ ์ป๋๋ค. ํด๋น ๋ทฐ(ํ
๋ฉด)๋ก ์ ์ด๊ถ์ ๋๊ธด๋ค(ํฌ์๋). ๋ทฐ๋ ๋ฐ์ ๋น์ฆ๋์ค ๊ฐ์ฒด๋ฅผ ๋์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ
HTML๋ก ํ๋ฉด์ ๋ง๋ค์ด(๋ ๋๋ง) ์น ๋ธ๋ผ์ฐ์ ์ ์๋ตํ๋ค. ์๋ ๊ทธ๋ฆผ์ MVC ํจํด
์ ์น์ดํ๋ฆฌ์ผ์ ์์ ๊ตฌํํ MVC Model 2์ ์ฒ๋ฆฌ๊ณผ์ ์ด๋ค. ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
โ ์ปจํธ๋กค์ ์์ฒญ์ ํ๋ค.
โก ์ปจํธ๋กค์ ์์ฒญ์ ๋ถ์ํ๊ณ ํด๊ฒฐํ ๋ชจ๋ธ์ ์ฐพ์์ ์คํํ๋ค.
โข ๋ชจ๋ธ์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ป๋๋ค.
โฃ, โค ํด๋นํ๋ฉด์ผ๋ก ์ด๋ํ์ฌ ๋ชจ๋ธ์์ ์ป์ ๋ฐ์ดํฐ๋ฅผ ๋์ ์ผ๋ก ์ฒ๋ฆฌํ๋ค(HTML
๋ก ๋ ๋๋ง).
โฅ ๋ธ๋ผ์ฐ์ ๋ก ์์ฒญํ๋ ํ๋ฉด์ ๋ณด๋ด ์๋ตํ๋ค.
311์ฅ JSP ๋ฒ์์ JSP ์คํํ๊ฒฝ
๊ทธ๋ฆผ 1-26 MVC ํจํด
request
response
ํ ํ์ ๋ฐ์ดํฐ๋ฅผDTO์ ์ ์ฅํ์ฌ ์ฌ์ฉ
Controller
ModelDB
2
4
6
์์ฒญ
์ฒ๋ฆฌ๊ฒฐ๊ณผ์ ๋ฐ๋ผํด๋นํ๋ฉด์ผ๋ก forward
์ฒ๋ฆฌ๊ฒฐ๊ณผ์ ๋ฐ๋ผ ํด๋น Business ๊ฐ์ฒด๋ฅผ๋๊ฒจ์ ํ๋ฉด์ ์ถ๋ ฅํ๋ค
์๋ต ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ฑฐ๋ ์ป๋๋ค CRUD ์คํ1 32
4 5
6
3
5View
1
322์ฅ JSP ์คํํ๊ฒฝ
2 | JSP ์คํํ๊ฒฝ
2.1 JEE ๋ฒ์ ๊ณผ ๋ฐํ์ฐ๋
๊ทธ๋ฆผ 2-1 Java Platform Enterprise Edition(JEE)์ ๋ฒ์ ๊ณผ ๋ฐํ์ฐ๋
JAXP 1.3 JTS 1.0
EJB 3.0 JPA 1.0
JSF 1.2 JNDI 1.2
JTA 1.1 JAXB 2.0
Web Server ์ฃผ์๊ธฐ๋ฅ
Web Application
Server ์ฃผ์๊ธฐ๋ฅ
JSTL 1.2 JDBC 3.0
Servlet 2.5 JSP 2.1
Java 6 Tomcat 6.0x
Eclipe 3.5 Oracle 10g
JEE 6 2009.12
JEE 5 2006.5
JEE 1.4 2003.11
JEE 1.3 2001.9
JEE 1.2 1999.12
JEE 1998.5
๊ทธ๋ฆผ 2-1์ โJava Platform Enterprise Edition(์ค์ฌ์ JEE๋ผ๊ณ ํจ)โ์ ๋ฒ์ ๊ณผ
๋ฐํ์ฐ๋๋ค. JEE 5์ ๊ธฐ๋ฅ์ ๊ตฌํํ ์๋ฒ๋ฅผ Web Application Server(WAS-์
์ค)๋ผ๊ณ ํ๋ค. WAS๋ Servlet/JSP๋ฅผ ์ค์ฌ์ผ๋ก ํ ์น ์๋ฒWeb Server์ EJB๋ฅผ ์ค์ฌ
์ผ๋ก ํ ์ ํ๋ฆฌ์ผ์ด์ ์๋ฒApplication Server-EJB Server๋ก ๋๋ ์ ์๋ค. ์ด ์ฑ ์์๋
Servlet/JSP๋ฅผ ์ค์ฌ์ผ๋ก ํ ์น ์๋ฒ๋ฅผ ๋ค๋ฃฌ๋ค.
332์ฅ JSP ์คํํ๊ฒฝ
๊ทธ๋ฆผ 2-2 Java Platform Enterprise Edition(JEE)์ ๋ฒ์ ๊ณผ ๋ฐํ์ฐ๋
JEE 6 2009.12
JEE 5 2006.5
J2EE 1.4 2003.11
J2EE 1.3 2001.9
J2EE 1.2 1999.12
1997
JEE ๋ฒ์ /๋ฐํ๋ ๋
7.0x/
6.01x/2008.7
5.59/20055.0x/2004
4.1.12/20034.0x/2001
3.0x/2000
Tomcat์ฃผ์๋ฒ์ /๋ ๋
6
5
5.5(5)5.0(4)
1.3
1.2
Java์ต์ ๋ฒ์
3.0 / 22
2.5 / 2.1
2.4 / 2.0
2.3 / 1.2
2.2 / 1.1
1.0 /
Servlet/JSP ๋ฒ์
๊ทธ๋ฆผ 2-1์ JEE ๋ฒ์ ์ ๋ํ Servlet/JSP ๋ฒ์ ๊ณผ ์ฃผ์ Tomcat ์๋ฒ(์น ์๋ฒ)์
๋ฒ์ ์ ๋ณด์ฌ์ค๋ค. ์ด ์ฑ ์์ ๋ค๋ฃฐ JEE 5๋ 2006๋ 5์์ ๋ฐํ๋์๊ณ , Servlet/JSP
๋ฒ์ ์ 2.5/2.1์ด๋ค. Tomcat 6.0.0์ 2006๋ ์ ๋ฐํ๋์์ง๋ง 2008๋ 7์์
6.01๋ฒ์ ๋ถํฐ ๋ง์ด ์ฌ์ฉ๋๊ธฐ ์์ํ๋ค.
๊ทธ๋ฆผ 2-3 JSE, JEE, JSP, Servlet, Tomcat์ ์ฐ๋๋ณ๋ก ๊ธฐ์ ๋ฐ๋ฌ
1997 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010
JDK 1.01996.1
J2SE 1.21998.12
J2SE 1.32000.5
J2SE 1.42002.2
JSE 52004.9
JSE 62004.9.12
JSE 72010
JDK 1.11997.2 J2SE 1.2
1999.12J2EE 1.32001.9
J2EE 1.42003.11
JEE 52006.5
JEE 62009.12
JSP 1.11999.12
JSP 1.22001.9
JSP 2.02003.11
JSP 2.12006.5
JSP 3.02009.12
SERVLET2.2
1999.8
TOMCAT 3.0.X2.2/1.11999.12
TOMCAT 4.02.3/1.22001
TOMCAT 5.0.02.3/1.22002.10
TOMCAT 5.0.302.4/2.02004.8
TOMCAT 6.0.02.5/2.12006.12
TOMCAT 6.0.0.262.5/2.12010.3
TOMCAT 5.5.282.4/2.02009.9
TOMCAT 5.5.02.4/2.02004.8๊ฐ๋ฐ์ ์ฌ์ฉํ ์ฃผ์
TOMCAT ๋ฒ์
HTTP Server์ ์ฐ๋
4.1x๋ฅผ ์ ํธ
TOMCAT 3.3.22.2/1.12004.3
TOMCAT 4.4.312.3/1.22004.10
TOMCAT 4.1.402.3/1.22009.6
SERVLET1.0
1997.6
SERVLET2.3
2001.8
SERVLET2.4
2003.11
SERVLET2.5
2005.9
SERVLET3.0
2009.12
342์ฅ JSP ์คํํ๊ฒฝ
๊ทธ๋ฆผ 2-3์ JSE, JEE, JSP, Servlet, Tomcat์ ๋ฒ์ ๋ณ, ์ฐ๋๋ณ๋ก ํ์ํ ๊ฒ์ด๋ค.
Servlet/JSP ๋ฒ์ (JEE ๋ฒ์ )์ด ๋จผ์ ๋์ค๊ณ ๊ทธ ๋ฒ์ ์ ๊ตฌํํ Tomcat์ด ๊ณ์ํด์
๋ฐ์ ๋ ์ ์ ์ ์ ์๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋ฐ ์ ์ต์ ๋ฒ์ ์ ์ฌ์ฉํ์ง ์๋๋ค. ๋ฒ๊ทธ๋
๋ฌธ์ ์ ์ด ๊ฑฐ์ ์ ๊ฑฐ๋ ์์ ํstable ๋ฒ์ ์ ์ฌ์ฉํ๋ค.
2.1.1 ์ฐ๋๋ณ ๊ฐ๋ฐ ์ ํ
๊ทธ๋ฆผ 2-4๋ ์ฐ๋๋ณ ๊ฐ๋ฐ ์ ํ์ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํ ๊ฒ์ด๋ค. ์ฐ๋๋ณ ํ์๋ ์์์ด๋
๋์ด ์๋๋ผ ๋ง์ด ์ฌ์ฉํ๊ฑฐ๋ ์ ํ, ๊ด์ฌ์ด ๋ง์ ์๊ธฐ๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ์๋ฅผ ๋ค์ด 2008
๋ ~2010๋ ์ ์ฃผ์ ๊ฐ๋ฐ๊ธฐ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
โ MVC Model 2 ํํ
โ Servlet์ Controller๋ก ์ฌ์ฉํ๋ Servlet Centric ํ์ ์ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉ
โ Spring ํ๋ ์์ํฌ ์ฌ์ฉ
โ ํ๋ฉด ๋ชจ๋Moduleํ๋ Tiles ํ๋ ์์ํฌ์ ์ฌ์ฉ
โ ORM(iBatis, Hibernate, JPA) + Service + Dao๋ฅผ ์ฌ์ฉ
โ JSTL+EL์ ์ด์ฉํ์ฌ ํ๋ฉด์ ์ถ๋ ฅ
โ ๋น๋๊ธฐ ์์ฒญ์ฒ๋ฆฌ๋ฅผ ์ํด AJAX์ฌ์ฉ
โ ํ๋ คํ๊ฑฐ๋ ๊ธฐ๋ฅ์ด ๋ง์ ํ๋ฉด์ถ๋ ฅ์ฉ
โ X-Window ๊ณ์ด(Flex, MiPlatform)์ ์ฌ์ฉ
โ Spring+ORM ๋ฅผ ์ด์ฉํ CBD ๊ฐ๋ฐ
352์ฅ JSP ์คํํ๊ฒฝ
๊ทธ๋ฆผ 2-4 2008๋ ~2010๋ ์ ์ฃผ์ ๊ฐ๋ฐ ๊ธฐ์
1997 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010
OnlyServlet
JSPSpaghetti
JSPSeparation
JSPCentric
ServletCentric (Servlet Centric)
MVC FrameworkMVC
1(OLD)MVC
1.5(OLD) MVC2(OLD)
EJB MVC Model 2
MVC Model 2MVC Model 1
frameset Tiles
X -Window
Ajax
Service + ADOUseBean + ADO
WorkBean
์์๊ณผ ๋์ ์๋ฏธํ์ง ์๋๋ค.๋ง์ด ์ฌ์ฉํ๊ฑฐ๋ ์ ํ, ๊ด์ฌ์ด
๋ง์ ์๊ธฐ๋ฅผ ์๋ฏธํ๋ค.Custom Tag JSTL, EL
actioninclude
ORM
Struts Spring
๋ค์์ 2005๋ ~2007๋ ์ฃผ์ ๊ฐ๋ฐ ๊ธฐ์ ์ด๋ค.
โ MVC Model 2 ํํ
โ Servlet์ Controller๋ก ์ฌ์ฉํ๋ Servlet Centric ํ์ ์ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉ
โ Struts ํ๋ ์์ํฌ ์ฌ์ฉ
โ ํ๋ฉด Moduleํ๋ Tiles ํ๋ ์์ํฌ์ ์ฌ์ฉ
โ Struts + EJB + Service(EJB๋ฅผ ์จ๊ธฐ๊ณ Service๋ฅผ ํธ์ถ)๋ฅผ ์ฌ์ฉ
โ Struts ํ๊ทธ๋ Custom ํ๊ทธ๋ฅผ ์ฌ์ฉ
โ XHTML๊ณผ JS๋ฅผ ๋ง์ด ์ฌ์ฉ
โ` Struts + EJB ๋ฅผ ์ด์ฉํ CBD ๊ฐ๋ฐ
362์ฅ JSP ์คํํ๊ฒฝ
๊ทธ๋ฆผ 2-5 2005 ~ 2007๋ ์ฃผ์ ๊ฐ๋ฐ ๊ธฐ์ ์ด๋ค
1997 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010
OnlyServlet
JSPSpaghetti
JSPSeparation
JSPCentric
ServletCentric (Servlet Centric)
MVC FrameworkMVC
1(OLD)MVC
1.5(OLD) MVC2(OLD)
EJB MVC Model 2
MVC Model 2MVC Model 1
frameset Tiles
X -Window
Ajax
UseBean + ADO
WorkBean
์์๊ณผ ๋์ ์๋ฏธํ์ง ์๋๋ค.๋ง์ด ์ฌ์ฉํ๊ฑฐ๋ ์ ํ, ๊ด์ฌ์ด
๋ง์ ์๊ธฐ๋ฅผ ์๋ฏธํ๋ค.Custom Tag JSTL, EL
actioninclude
ORM
Struts Spring
Service + ADO
์ด ํ ์ญ์ ์ ํ์ด๋ ๊ด์ฌ ์๊ธฐ์ ์ค์ ์ ๋๊ณ ํ๊ธฐํ๋ค. JSTL์ ์ฌ์ฉํ๋ฉด์๋
Custom Tag๋ฅผ ์ฌ์ฉํ๋ค. JSP๊ฐ controller๋ผ๊ณ ํด์ ๋ชจ๋ MVC Model 1์ ์
๋๋ค. Frameset์ด๋ Action include๋ ์ฌ์ฉํ๊ณ ์๋ค. ๋จ์ง Tiles์ ๊ฐ์ ๋ชจ๋ํ
์ฉ ํ๋ ์์ํฌ๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ ์ถ์ธ์ธ ๊ฒ์ ์๋ฏธํ๋ค.
๊ทธ๋ฆผ 2-6 JSP/Servlet ๊ตฌ์ฑ
Listener
FilterPattern
ํ๋ฆ์ ์ด๊ธฐ๋ณธ๊ฐ์ฒด
๋ชจ๋ํ์ํ์ ์ง
ํ๊ฒฝ๋ณ์์ฝ๊ธฐ
์์ธ์ฒ๋ฆฌ
MVC์น์ฉ์ด/HTML
JDBC
์ปจํ ์ด๋JSP
๊ตฌ์ฑ ์์ORM
LifeCycle
๊ฐ์ฒด์ ๋ฌ(Scope)
๊ณ์ธต๊ตฌ์กฐ(Servlet)
XML๊ธฐ๋ณธ
# JSP/Servlet ๊ตฌ์ฑ #
372์ฅ JSP ์คํํ๊ฒฝ
๊ทธ๋ฆผ 2-6์ Servlet/JSP๋ฅผ ๊ตฌ์ฑํ๋ ์ฃผ์ ์์๋ฅผ ์ ๋ฆฌํ ๊ฒ์ด๋ค. ๋ง์ด ์์๋ก ๊ฐ
๋ฐ์ ์ฝ๊ณ ์ ํํ๊ฒ ํ ์ ์๋ค.
1. ์น ์ฉ์ด/HTML
2. JSP ๊ตฌ์ฑ์์
3. ๊ธฐ๋ณธ ๊ฐ์ฒด, ํ๋ฆ์ ์ด, ๊ฐ์ฒด์ ๋ฌScope
4. ๋ชจ๋ํ, ์ํ์ ์ง
5. JDBC
์์ 5๊ฐ์ง๋ฅผ ์๋ฉด ์ฌ๋งํ ๊ฐ๋ฐ์ ํ ์ ์๋ค. ๊ทธ๋ ์ง๋ง ์ฑ๋ฅ์ ์ข๊ฒ ํ๊ฑฐ๋, ๋น ๋ฅด
๊ณ ์ ํํ๊ฒ ๊ฐ๋ฐํ๊ฑฐ๋, ํฐ ํ๋ก์ ํธ๋ฅผ ์ํํ๋ ค๋ฉด ๋ค์์ 5๊ฐ์ง๋ ํ์คํ๊ฒ ์
์์ผ ํ๋ค.
6. ์ปจํ ์ด๋ ๊ตฌ์กฐ์ ์๋์๋ฆฌ, ๋ผ์ดํ์ธ์ดํดLife Cycle
7. ๊ณ์ธต๊ตฌ์กฐ
8. ํ๊ฒฝ์ฝ๊ธฐ, XML ๊ธฐ๋ณธ
9. MVC
10. ๊ฐ๋จํ ํจํด
2.2 ์ค์น์ ํ๊ฒฝ์ค์
2.2.1 JDK 7.X ์ค์น์ ํ๊ฒฝ์ค์
Java ํ๋ก๊ทธ๋๋ฐ ํ๊ฒฝ์ ๊ตฌํํ๊ธฐ ์ํด JDK1.6์ ๋ค์ด๋ก๋ํ๊ณ ์ค์นํ์.
1. ์น ๋ธ๋ผ์ฐ์ ๋ฅผ ์คํํ๊ณ , ์ฃผ์์ฐฝ์ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฅํ๋ค.
โ ์น ์ฃผ์: http://www.oracle.com/technetwork/java/index.html
382์ฅ JSP ์คํํ๊ฒฝ
2. ๋ฉ๋ด๋ฐ์์ [DOWNLOADS]-[Java for Developers]๋ฅผ ์ ํํ๋ค.
3. Java์ [DOWNLOAD] ๋ฒํผ์ ํด๋ฆญํ๋ค.
392์ฅ JSP ์คํํ๊ฒฝ
4. [Accept License Agreement]๋ฅผ ์ฒดํฌํ ํ, ์์ ์ PC์์ ์ฌ์ฉํ๋ ์ด์์ฒด
์ ์ ๋ง๋ JDK๋ฅผ ๋ค์ด๋ก๋ํ๋ค.
5. ๋ค์ด๋ก๋ํ ํ์ผ์ ์คํํ๋ค.
402์ฅ JSP ์คํํ๊ฒฝ
6. ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ด ๋ํ๋๋ฉด, [Change] ๋ฒํผ์ ์ ํํ์ฌ, ์ค์นํ๊ธฐ ์ํ๋ ์
์น๋ฅผ ์ง์ ํ๋ค.
ํ์๋ โC\Javaโ์ ์ค์นํ ๊ฒ์ด๋ค.
7. JDK๊ฐ ์ค์น๋๋ฉด, ๋ค์๊ณผ ๊ฐ์ด JRE๋ฅผ ์ค์น ๊ด๋ จ ์ฐฝ์ด ๋ณด์ฌ์ง ๊ฒ์ด๋ค. [Change]
๋ฒํผ์ ์ ํํ์ฌ ์ํ๋ ์์น์ ์ ์ฅํ๋ค. ํ์๋ โC:\Java\jreโ์ ์ค์นํ ๊ฒ์ด๋ค.
412์ฅ JSP ์คํํ๊ฒฝ
8. ๋ค์๊ณผ ๊ฐ์ ์ฐฝ์ด ๋ํ๋๋ฉด JDK ์ค์น๊ฐ ๋๋ ๊ฒ์ด๋ค.
์ด์ ํ๊ฒฝ๋ณ์๋ฅผ ์ค์ ํ๊ณ , ์ค์น๊ฐ ์ ๋๋ก ๋์๋์ง ํ์ธํด๋ณด์.
9. [์์]-[์ ์ดํ]-[์์คํ ]์ ์ ํํ๋ค(๋๋ [์์]-[์ปดํจํฐ]์์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ
๋ฒํผ์ ํด๋ฆญํ์ฌ [์์ฑ]์ ์ ํํ๋ค).
422์ฅ JSP ์คํํ๊ฒฝ
10. '์ ์ดํ ํ' ์ฐฝ์์ [์ค์ ๋ณ๊ฒฝ]์ ํด๋ฆญํ๋ฉด ์์คํ ์ฐฝ์ด ๋ํ๋๋ค.
11. ์์คํ ์ฐฝ์์ [๊ณ ๊ธ] ํญ์ ์๋ [ํ๊ฒฝ ๋ณ์]๋ฅผ ํด๋ฆญํ๋ค.
12. ์์คํ ๋ณ์์์ [์๋ก ๋ง๋ค๊ธฐ] ๋ฒํผ์ ์ ํํ์ฌ ํ๊ฒฝ๋ณ์๋ฅผ ์ ๋ ฅํ๋ค. ์ ์
์คํ ๋ณ์์ โ๋ณ์์ด๋ฆโ๊ณผ โ๋ณ์๊ฐโ์ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฅํ๋ค.
โ ๋ณ์ ์ด๋ฆ: JAVA_HOME
432์ฅ JSP ์คํํ๊ฒฝ
โ ๋ณ์๊ฐ: C:\Java\jdk1.7.0_15
13. JAVA_HOME ๋ณ์๋ฅผ ์ ์ฉํ๊ธฐ ์ํด ์์คํ ๋ณ์๋ฅผ ํด๋ฆญํ๊ณ [ํธ์ง] ๋ฒํผ์
๋๋ฌ, โPathโ ๊ฐ์ ๋ค์์ ์ถ๊ฐํ๋ค.
โ ๋ณ์ ์ด๋ฆ: Path
โ ๋ณ์๊ฐ: %JAVA_HOME%\bin;
442์ฅ JSP ์คํํ๊ฒฝ
14. Java Library๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ [์๋ก ๋ง๋ค๊ธฐ] ๋ฒํผ์ ํด๋ฆญํ ๋ค์, CLASSPATH
๋ฅผ ์ถ๊ฐํ๋ค.
โ ๋ณ์์ด๋ฆ: CLASSPATH
โ ๋ณ์๊ฐ: .;
15. ํ๊ฒฝ๋ณ์๊ฐ ์ ํํ๊ฒ ์ค์ ๋์๋์ง ํ์ธํ๊ธฐ ์ํด ๋ช ๋ นํ๋กฌํํธ๋ฅผ ์คํํ๋ค.
[๋ชจ๋ ํ๋ก๊ทธ๋จ]-[์์]-[๋ณด์กฐํ๋ก๊ทธ๋จ]-[๋ช ๋ น ํ๋กฌํํธ] ๋๋ [์์]-[์คํ]์
์ โcmd' ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ๋ค.
16. ์ง๊ธ๊น์ง ์ค์นํ ์๋ฐ ๋ฒ์ ์ด ๋ง๋์ง ํ์ธํ๋ค.
C:\>java -version // ์ ๋ ฅ ํ Enter
17. ํ๊ฒฝ์ค์ ์ด ์ด์ ์์ด ์ ์ ์ฉ๋์๋์ง ํ์ธํ๋ค.
C:\>javap java.lang.Object // ์ ๋ ฅ ํ Enter
452์ฅ JSP ์คํํ๊ฒฝ
2.2.2 Tomcat 7.X ์ค์น์ ํ๊ฒฝ์ค์
JSP/Servlet ์คํ์ ์ํ ์น ์๋ฒ ์ค, ์คํ ์์ค๋ฉด์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ Apache
Tomcat์ ์ค์นํ๋ค.
1. Apache Tomcat ์น ์ฌ์ดํธ(http://tomcat.apache.org/)๋ก ์ด๋ํ ๋ค์,
[Download] ํญ๋ชฉ์ ์๋ [Tomcat 7.X]๋ฅผ ํด๋ฆญํ๋ค.
2. [Binary Distributions]-[Core]์ ์๋ ๋ฆฌ์คํธ ์ค [32-bit/64-bit Windows
Service Installer]๋ฅผ ํด๋ฆญํ์ฌ ์คํ ํ์ผ์ ๋ค์ด๋ฐ๋๋ค.
462์ฅ JSP ์คํํ๊ฒฝ
3. ๋ฐ์ ํ์ผ์ ์คํํ๋ค. ์ค์น์ฐฝ์ด ๋ํ๋๋ฉด [Next] ๋ฒํผ์ ํด๋ฆญํ๋ค. ๊ทธ๋ฌ๋ฉด ๋ผ
์ด์ผ์ค์ฐฝ์ด ๋ณด์ฌ์ง๋๋ฐ, [I Agree] ๋ฒํผ์ ์ ํํ์ฌ ๋ผ์ด์ผ์ค๋ฅผ ์ป๋๋ค.
4. โChoose Comprenetsโ ์ฐฝ์ด ๋ํ๋๋ฉด, ์ต์ ์ ๋ชจ๋ ์ ํํ ๋ค์ [Next] ๋ฒํผ
์ ํด๋ฆญํ๋ค.
5. โConfigurationโ ์ฐฝ์ด ๋ํ๋๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ์ต์ ์ ์ค์ ํ๋ค.
โ HTTP/1.1 Connector Port: 8080
โ User Name: admin
472์ฅ JSP ์คํํ๊ฒฝ
โ Password: 11111111
6. โJava Virtual Machineโ ์ฐฝ์ด ๋ํ๋๋ฉด, JRE ์์น๋ฅผ ์ ํํ๋ค.
โ C:\Java\jre7
7. โChoose Install Locationโ ์ฐฝ์ด ๋ํ๋๋ฉด, Apache Tomcat์ ์ค์นํ ํด๋
๋ฅผ ์ ํํ๋ค. ํด๋ ์ด๋ฆ์ ๊ณต๋ฐฑ์ด ๋ค์ด๊ฐ์ง ์๊ฒ ๋ณ๊ฒฝํด์ผ ํ๋ค. ์ค์ ์ด ๋๋๋ฉด
[Install] ๋ฒํผ์ ํด๋ฆญํ์ฌ ์ค์น๋ฅผ ์งํํ๋ค.
482์ฅ JSP ์คํํ๊ฒฝ
โ Destination Folder: C:\Tomcat7.0
8. Apache Tomcat 7.0 ์ค์น์๋ฃ ์ฐฝ์ด ๋ํ๋๋ฉด Run Apache Tomcat์ ์ฒดํฌ
ํ ๋ค์ [Finish]๋ฒํผ์ ๋๋ฌ Apache Tomcat Server๋ฅผ ํ ์คํธํ๋ค.
9. Apache Tomcat 7.0 Server๊ฐ ์คํ๋๋ค. Apache Tomcat 7.0์ด ์คํ๋๋์ง
ํ์ธํ๋ ค๋ฉด ์๋์ฐ ์์ ํ์์ค ๋งจ ์ค๋ฅธ์ชฝ์ ์์ด์ฝ( )์ ๋ น์ ๋๋ ๋นจ๊ฐ์์ด ํ
์๋๋์ง ์ดํด๋ณธ๋ค.
โ ๋ น์: Apache Tomcat 7.0 Server ์คํ ์ํ
492์ฅ JSP ์คํํ๊ฒฝ
โ ๋นจ๊ฐ์: Apache Tomcat 7.0 Server ์ค์ง ์ํ
10. ๋ง์ง๋ง์ผ๋ก Apache Tomcat 7.0 Server๊ฐ ์ ์์ ์ผ๋ก ์ค์น๋์๋์ง ํ์ธํ๋ค.
[์น ๋ธ๋ผ์ฐ์ ์คํ] - [http://localhost:8090 ์ฃผ์ ์ ๋ ฅ]
๋ค์๊ณผ ๊ฐ์ด ๊ณ ์์ด ํ๋ฉด์ด ๋ณด์ด๋ฉด, Apache Tomcat Server๊ฐ ์ ๋๋ก ์ค์น๋
๊ฒ์ด๋ค.
2.2.3 ์ดํด๋ฆฝ์ค 4.X ์ค์น์ ํ๊ฒฝ์ค์
JSP/Servlet ๊ธฐ์ ์ด ์ ์ฉ๋ Web Application ๊ฐ๋ฐ์ ํ์ํ ํ๋ก๊ทธ๋จ์ธ ์ดํด๋ฆฝ
์ค๋ฅผ ๋ค์ด๋ฐ์ ์ค์นํ๋ค.
1. ์ดํด๋ฆฝ์ค ํ ํ์ด์ง(http://www.eclipse.org)์ ์ ์ํ ํ, [Downloads]๋ฅผ
ํด๋ฆญํ๋ค.
502์ฅ JSP ์คํํ๊ฒฝ
2. ์ฌ์ฉํ๋ ์ด์์ฒด์ ๊ฐ 32bit์ธ์ง 64bit์ธ์ง ํ์ธํ ๋ค์ ์ดํด๋ฆฝ์ค๋ฅผ ๋ด๋ ค๋ฐ์.
์ฌ๊ธฐ์๋ ์ผ๋ฐ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ 32bit ๊ธฐ์ค์ผ๋ก ์งํํ๋ค.
โ Eclipse IDE for Java EE Developers. 221MB [Windows 32 Bit]๋ฅผ ์ ํ
ํ๋ค.
3. ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ด ๋ํ๋๋ฉด ๋ น์ ํ์ดํ๋ฅผ ํด๋ฆญํ๋ค.
512์ฅ JSP ์คํํ๊ฒฝ
4. ์์ถ๋์ด ์๋ ์ดํด๋ฆฝ์ค ํ์ผ์ ์ฌ์ฉํ ์์น์ ํผ๋ค. ํ์๋ ๋ค์ ์์น์ ์์ถ
์ ํ์๋ค.
โ ์ดํด๋ฆฝ์ค ํ์ผ ์์ถํด์ ์์น: C:\Java\
5. ์ดํด๋ฆฝ์ค๊ฐ ์ค์น๋ ํด๋(C:\Java\eclipse)์์ โeclipse.exeโ๋ฅผ ์คํํ๋ค. ์ด
ํด๋ฆฝ์ค๋ฅผ ์คํํ๋ฉด workspace๋ฅผ ์ ๋ ฅํ๋ผ๋ ํ๋ฉด์ด ๋ํ๋๋ค. ํ๋ก๊ทธ๋จ์ ์
์ฑํ ์์น๋ฅผ ์ ๋ ฅํ ๋ค์ [OK] ๋ฒํผ์ ํด๋ฆญํ๋ค.
โ Workspace : C:\exam\workspace
6. ๋ค์๊ณผ ๊ฐ์ด ํ๋ฉด์ด ๋์ค๋ฉด ์ดํด๋ฆฝ์ค๊ฐ ์ ์์ ์ผ๋ก ์ค์น๋ ๊ฒ์ด๋ค.
522์ฅ JSP ์คํํ๊ฒฝ
2.2.4 Tomcat๊ณผ ์ดํด๋ฆฝ์ค ์ฐ๋
Apache Tomcat์ ์ดํด๋ฆฝ์ค์ ์ ์ฉํ์ฌ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด์. ์ดํด๋ฆฝ์ค๋ฅผ
์คํํ๊ณ Web Application ๊ตฌํ ์ ๊ฐ๋ฐํ ์์ ๊ณต๊ฐworkspace์ ์ง์ ํ๋ค.
โ Workspace: C:\exam\workspace
1. ์ฒ์ ์คํํ๋ฉด Welcome tab์ด ์์ฑ๋๊ณ ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ด ๋ํ๋๋ค. Welcome
์์ [X] ๋ฒํผ์ ํด๋ฆญํ์ฌ ํ๋ฉด์ ๋ซ๋๋ค.
2. ๋ค์๊ณผ ๊ฐ์ ํ๋ฉด์ด ๋์ค๋ฉด Web Application ์ ์ฉ ํ๊ฒฝ์ด ์ค์ ๋ ๊ฒ์ด๋ค.
3. [Project Explorer] ์์ญ์์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ์ ํด๋ฆญํ ํ, [New]-[Dynamic
532์ฅ JSP ์คํํ๊ฒฝ
Web Project]๋ฅผ ์ ํํ๋ค.
4. โDynamic Web Projectโ ์ฐฝ์ด ๋ํ๋๋ฉด, ExamWebApplication ํ๋ก์ ํธ
๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํ ํ๊ฒฝ์ ์ค์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ [New Runtime] ๋ฒํผ์ ํด๋ฆญํ์ฌ
Apache Tomcat 7.0์ ์ ์ฉํ๋ค.
โ Project name: ExamWebApplication
542์ฅ JSP ์คํํ๊ฒฝ
5. ์ค์น๋ Apache Tomcat ๋ฒ์ ์ ์ ํํ ํ, [NEXT] ๋ฒํผ์ ํด๋ฆญํ๋ค.
โ Apache Tomcat v7.0 ์ ํ
โ Create a new local server ์ฒดํฌ
6. Apache Tomcat v7.0์ ์ค์น ๊ฒฝ๋ก๋ฅผ ์ง์ ํ๊ณ Apache Tomcat ์ค์น ๋๋ ํฐ
๋ฆฌ๋ฅผ ์ค์ ํ๋ค. ๊ทธ๋ฐ ๋ค์ [Finish] ๋ฒํผ์ ํด๋ฆญํ์ฌ Apache Tomcat ์ ์ฉ์
๋ง์น๋ค.
โ Tomcat installation directory: C:\Java\Tomcat7.0
โ JRE: jdk1.7_15 ์ ํ
552์ฅ JSP ์คํํ๊ฒฝ
7. ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํ๊ฒฝ์ด ์ค์ ๋์๋์ง ํ์ธํ ํ [Finish]๋ฒํผ์ ์ ํํ์ฌ ์น
์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๋ค.
562์ฅ JSP ์คํํ๊ฒฝ
8. ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์์ฑ๋์๋ค๋ฉด ์น ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์์ ์ผ๋ก ๋ง๋ค์ด์ง ๊ฒ์ด๋ค.
9. ์ด์ ๋ง๋ค์ด์ง ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ๊ธฐ ์ํ, index.jsp ํ์ด์ง๋ฅผ ์์ฑํ๋ค.
โ [ExamWebApplication]-[WebContent]์์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ ํด๋ฆญ ํ
ํ [New]-[JSP file]์ ์ ํํ๋ค.
572์ฅ JSP ์คํํ๊ฒฝ
10. File name์ โindex.jsp'๋ฅผ ์ ๋ ฅํ์ฌ jspํ์ผ์ ์์ฑํ ํ, [Finish] ๋ฒํผ์
ํด๋ฆญํ์ฌ ํ์ผ ์์ฑ์ ์๋ฃํ๋ค.
11. ์์ฑ๋ ํ์ผ์ <body>์ </body> ์ฌ์ด์ ๋ค์ ๋ด์ฉ์ ์ ๋ ฅํ๊ณ ์ ์ฅํ๋ค.
โ ์ ๋ ฅํ ๋ด์ฉ: JSP ํ์ด์ง ํ ์คํธ์ ๋๋ค.
12. ์์ฑ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํด๋ณธ๋ค.
โ [ExamWebApplication]์์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ์ ํด๋ฆญํ ํ, [Run As]-
[Run on Server] ์ ํํ๋ค.
582์ฅ JSP ์คํํ๊ฒฝ
13. ์คํํ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํํ๋ค. [Next]๋ฒํผ์ ํด๋ฆญํ๋ค.
592์ฅ JSP ์คํํ๊ฒฝ
14. Configured ์์ญ์ ์๋ ์ ์ฉํ project๋ฅผ ์ ํํ ๋ค์ [Finish] ๋ฒํผ์ ๋
๋ฌ ์คํํ๋ค.
15. ๋ค์๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋ณด์ธ๋ค๋ฉด ์ดํด๋ฆฝ์ค์ Apache Tomcat์ด ์ ์์ ์ผ๋ก ์ค
์ ๋ ๊ฒ์ด๋ค.
602์ฅ JSP ์คํํ๊ฒฝ
์คํ ์, ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด, Tomcat ์๋ฒ๊ฐ ์คํ๋๊ณ ์๋์ง ์ดํด๋ณธ๋ค(์คํ ์ฐฝ์ โservices.
mscโ๋ฅผ ์ ๋ ฅํ๋ฉด ์๋น์ค๊ด๋ฆฌ ์ฐฝ์ด ๋ํ๋๋ค. Apache Tomcat ์์ฑ์ผ๋ก ๋ค์ด๊ฐ์ ์๋น์ค๊ฐ ์คํ๋๊ณ
์๋์ง ํ์ธํ๋ค). ์๋น์ค๊ฐ ์์ ์ํ๋ผ๋ฉด ์ค์ง ์ํ๋ก ๋ง๋ค๊ณ [์์ ์ ํ]์ โ์๋โ์ผ๋ก ์ค์ ํ๋ค.
2.3 ์ดํด๋ฆฝ์ค ํ์ฉ๋ฐฉ๋ฒ
2.3.1 JSP ์์ฑํ๊ธฐ
1. JSP ์์ฑ์ฉ ์น ํ๋ก์ ํธ๋ฅผ ๋ง๋ ๋ค.
โ [File]-[New]-[Dynamic Web Project]
2. ์น ํ๋ก์ ํธ์ ์ด๋ฆ์ ์ ๋ ฅํ๋ค. ์คํํ๊ฒฝ(Target runtime), ๋ฒ์ (Dynamic web
module version), ์ปจํ ์ด๋ ํ๊ฒฝ(Configuration)์ ํ์ธํ๊ณ [Finish] ๋ฒํผ
์ ๋๋ฅธ๋ค.
โ Project name: fristProject
612์ฅ JSP ์คํํ๊ฒฝ
3. JSP ํ์ผ์ ๋ง๋ ๋ค. [ํ๋ก์ ํธ]์์ ์ค๋ฅธ์ชฝ ๋ง์ฐ์ค๋ฅผ ์ด์ฉํ์ฌ [New]-[JSP]๋ฅผ
์ ํํ๋ค. ํ์ผ ์ด๋ฆ์ โindex.jspโ๋ก ํ๊ณ <body>์ </body> ์ฌ์ด์ ๋ค์๊ณผ
๊ฐ์ด ์ถ๊ฐํ๋ค.
<%@ page contentType="text/html; charset=EUC-KR"%>
<html>
<head>
<title>first</title>
</head>
<body>
<%
for(int i=0; i<3 ;i++){
out.println("์๋ ํ์ธ์.<br/>");
}
%>
</body>
</html>
5. ํ๋ก์ ํธ๋ฅผ ์คํํ๋ฉด, ๋ค์๊ณผ ๊ฐ์ ์คํ๊ฒฐ๊ณผ ํ๋ฉด์ด ๋ํ๋ ๊ฒ์ด๋ค
โ [ํ๋ก์ ํธ]์์ ์ค๋ฅธ์ชฝ ๋ง์ฐ์ค๋ฅผ ์ด์ฉํ์ฌ [Run AS]-[Run on Server]๋ฅผ ์ ํ
622์ฅ JSP ์คํํ๊ฒฝ
2.3.2 JSP์ useBean ์ก์ ํ๊ทธ ๋ง๋ค๊ธฐ
1. cust.jsp๋ฅผ ๋ง๋ค๊ณ id, name, height๋ฅผ ์ ๋ ฅํ ์ ์๋ <input> ํ๊ทธ๋ฅผ ๋ง๋ ๋ค.
<%@ page contentType="text/html; charset=EUC-KR"%>
<html>
<head>
<title>useBean</title>
</head>
<body>
<form action="custshow.jsp" method='post'>
<table border="1" bgcolor="#ffeeee">
<col width="200"/><col width="400"/>
<tr>
<td>์์ด๋</td>
<td><input type='text' name='id' size="60"></td>
</tr>
<tr>
<td>์ด ๋ฆ</td>
<td><input type='text' name='name' size="60"></td>
</tr>
<tr>
<td>ํค</td>
<td><input type='text' name='height' size="60"></td>
</tr>
<tr>
<td colspan="2"><input type='submit' value="๋ณด๋ด๊ธฐ"></td>
</tr>
</table>
</form>
<a href='index.jsp'>HOME</a>
</body>
</html>
632์ฅ JSP ์คํํ๊ฒฝ
2. CustomerBean ํด๋์ค๋ฅผ ๋ง๋ ๋ค.
ํจํค์งPackage์ ํด๋์ค ์ด๋ฆ(Name)์ ์ ๋ ฅํ๊ณ [Finish] ๋ฒํผ์ ํด๋ฆญํ๋ค.
โ Package: com.hanb
โ Name: CustUserBean
642์ฅ JSP ์คํํ๊ฒฝ
3. ๋ฉค๋ฒํ๋์ id, name, height์ ์ ๋ ฅํ๋ค.
package com.hanb;
public class CustUserBean {
private String id;
private String name;
private int height;
}
4. ์์ฑ์์ get/set ๋ฉ์๋๋ฅผ ๋ง๋ ๋ค. [Source]-[Generate Getters and Setters]
๋ฅผ ํด๋ฆญํ๋ค.
652์ฅ JSP ์คํํ๊ฒฝ
โGenerate and Setteraโ ์ฐฝ์์ [Select All] ๋ฒํผ์ ํด๋ฆญํ ํ [OK] ๋ฒํผ์ ํด
๋ฆญํ๋ค.
5. custshow.jsp๋ฅผ ๋ง๋ค๊ณ <jsp:useBean> ํ๊ทธ๋ฅผ ์ ๋ ฅํ๋ค. class=""์ ํจํค์ง
๊น์ง๋ง ์ ๋ ฅํด๋ ๋ค์ด๊ฐ์ผ ํ ํด๋์ค๋ฅผ ์ฐพ์ ์ ์๋ค. ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฅํ๋ค
<jsp:useBean id="custbean" class="com.CustUserBean" />
<jsp:s์์ ๊ธฐ๋ค๋ฆฌ๊ฑฐ๋ [CTRL+SPACE BAR]๋ฅผ ๋๋ฅด๋ฉด ๋ค์ ๊ทธ๋ฆผ์ฒ๋ผ <jsp:setProperty>ํ
๊ทธ๋ฅผ ์ ํํ ์ ์๋ค.
662์ฅ JSP ์คํํ๊ฒฝ
6. โcustshow.jspโ์์ id, name, height ํ๋ผ๋ฏธํฐ๋ฅผ useBean ์ก์ ํ๊ทธ๋ก ๋ฐ๋
๋ค. ๋ฐ์ ๋๋ setProperty๋ฅผ ์ด์ฉํ๊ณ ์ถ๋ ฅํ ๋๋ getProperty๋ฅผ ์ด์ฉํ๋ค.
<%@ page contentType="text/html; charset=EUC-KR"%>
<% request.setCharacterEncoding("euc-kr"); %>
<html>
<head>
<title>useBean</title>
</head>
<jsp:useBean id="custbean" class="com.hanb.CustUserBean"/>
<jsp:setProperty name="custbean" property="id" />
<jsp:setProperty name="custbean" property="name" />
<jsp:setProperty name="custbean" property="height" />
<body>
<table border="1" bgcolor="#ffeeee">
<col width="200"/><col width="400"/>
<tr>
<td>์์ด๋</td>
<td><jsp:getProperty name="custbean" property="id" /></td>
</tr>
<tr>
<td>์ด ๋ฆ</td>
<td><jsp:getProperty name="custbean" property="name" /></td>
</tr>
<tr>
<td>ํค</td>
<td><jsp:getProperty name="custbean" property="height" /></td>
</tr>
</table>
<a href='cust.jsp'>์ ๋ ฅํ๊ธฐ</a>
</body>
672์ฅ JSP ์คํํ๊ฒฝ
</html>
7. ํ๋ก์ ํธ๋ฅผ ์คํํ ํ id, name, height๋ฅผ ์ ๋ ฅํ๊ณ custshow.jsp๋ก ์ ์กํ๋ค.
โ โhttp://localhost:8080/fristProject/cust.jspโ ์ฃผ์๊ฐ ๋ง๋์ง ํ์ธํ๋ค.
id, name, height ํ๋ผ๋ฏธํฐ๋ฅผ setProperty๋ก ๋ฐ์์ getProperty๋ก ์ถ๋ ฅํ๋ค.
683์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
3 | ์น ๊ฐ๋ฐ ํ๊ฒฝ
3.1 ์ปจํ ์คํธ
์ปจํ ์คํธContext๋ ์น ํ๋ก๊ทธ๋๋ฐ์ ์ํ ๋ฌผ๋ฆฌ์ ์ธ ๋๋ ํฐ๋ฆฌ๋ก ์คํ๋จ์, ๋ฐฐํฌ๋จ์
(๋๋ ํฐ๋ฆฌ)๋ค. ์น ํ๋ก๊ทธ๋๋ฐ์ ํ๋ฉด์, ์ ํด์ง ์ปจํ ์คํธ ๊ตฌ์กฐ(๊ทธ๋ฆผ 3-1)๋ฅผ ์งํค์ง
์์ผ๋ฉด ์๋ง์ ์ค๋ฅ๋ฅผ ๋ง๋๊ฒ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ ์ดํด๋ฆฝ์ค ์น ๊ฐ๋ฐํ๊ฒฝ์ ์ปจํ
์คํธ์ ๋น์ทํ ๊ตฌ์กฐ๋ก ๋์ด์๋ค(๊ทธ๋ฆผ 3-2). ์ฆ, ๊ฐ๋ฐํ ๋๋ ์ดํด๋ฆฝ์ค ๊ฐ๋ฐํ๊ฒฝ ๊ตฌ
์กฐ, ๋ฐฐํฌ๋์ด ์คํ๋ ๋๋ ์ปจํ ์คํธ ๊ตฌ์กฐ๊ฐ ๋๋ค.
๊ทธ๋ฆผ 3-1 ์ปจํ ์คํธ ๊ตฌ์กฐ
helo001 ์ปจํ ์คํธ ์ด๋ฆ
WEB-INF
lib
classes
com.hanb.Hello.class
web.xml
h16.html
h16.jsp
h16class.jsp
index.jsp
http://localhost:8090/hello001/
693์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
๊ทธ๋ฆผ 3-2 ์ดํด๋ฆฝ์ค ์น ๊ฐ๋ฐํ๊ฒฝ
์ปจํ ์คํธ hello001์ ์๋ JSP, ์๋ธ๋ฆฟ, ํด๋์ค, ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ
๋ก ๋์ด ์์ด์ผ ํ๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์คํํ ์๊ฐ ์๋ค.
hello001 : ์ปจํ ์คํธ
+ HTML, JSP, Image๋ฅผ ๋๋๋ค.
+ WEB-INF ๋๋ ํฐ๋ฆฌ
+ lib : ~.jar๋ก ๋๋๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํฌํจํจ
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํด๋์ค์ ๋ฌถ์์
+ classes : ํจํค์ง ์ปดํ์ผ๋ ํด๋์ค(~.class). ์๋ธ๋ฆฟ(Servlet)
์น ํด๋์ค๋ ๋ฐ๋์ ํจํค์ง๊ฐ ์์ด์ผ ํจ
+ web.xml : ํ๊ฒฝ๋ณ์ ์ค์ ์ ์ํ XMl ํ์ผ
web.xml์ ์ปจํ ์คํธ ํ๊ฒฝ์ ์ค๋ช ํ๋ ๋ฐฐํฌ์ค๋ช ์(DDDeployment Descriptor)๋ก, ์ค
ํ๋ ๋ ์ปจํ ์ด๋๊ฐ ๊ฐ์ฅ ๋จผ์ ์ฝ๋๋ค.
703์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
์ฝ๋ 3-1 web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>hello001</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
โhttp://localhost:8090/hello001โ๋ฅผ ์คํํ๋ฉด โhttp://localhost:8090/
hello001/index.jspโ๋ก ์คํ๋๋ค. ์ฌ๊ธฐ์ hello001์ ์ปจํ ์คํธ์ ์ด๋ฆ์ด๋ค. ์ปจ
ํ ์ด๋๋ ์ด๋ฆ๋ณ๊ฒฝ, ๊ฒฝ๋ก๋ณ๊ฒฝ, ํ๊ฒฝ๋ณ์ ์ค์ ๋ฑ ์คํํ๊ฒฝ์ด ๊ท์ ๋ web.xml์
๊ฐ์ฅ ๋จผ์ ์ฝ๋๋ค.
3.2 ๊ฒฝ๋ก
request.getXXX() ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด ๊ฒฝ๋ก ๊ด๋ จ ์ ๋ณด๋ฅผ ๊ตฌ์ฒด์ ์ผ๋ก ์ป์ ์ ์
๋ค. ๋ค์ ์น ๋ธ๋ผ์ฐ์ ๊ฒฝ๋ก์ ๋ํ ์์ธ ์ ๋ณด๋ ํ 3-1๊ณผ ๊ฐ๋ค.
โ ์น ๋ธ๋ผ์ฐ์ ๊ฒฝ๋ก: http://localhost:8090/headers/requestinfor.jsp?id=
cust001&name=jack
713์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
ํ 3-1 ์น ๋ธ๋ผ์ฐ์ ๊ฒฝ๋ก์ ๋ํ ์์ธ ์ ๋ณด
request ๋ฉ์๋ ์์ฒญ๋ด์ฉ ์์ธ์ ๋ณด
getRequestURL() ์์ฒญ URL http://localhost:8090/headers/requestinfor.jsp
getRequestURI() ์์ฒญ URI /headers/requestinfor.jsp
getServerName() ์๋ฒ์ด๋ฆ localhost
getServerPort() ์๋ฒํฌํธ 8090
getScheme() ํ๋กํ ์ฝ http
getContextPath() /์ปจํ ์คํธ์ด๋ฆ /headers
getServletPath() /JSP ํ์ผ ์ด๋ฆ /requestinfor.jsp
getQueryString() ํ๋ผ๋ฏธํฐ id=cust001&name=jack
3.3 ์ ์ ๋ฌธ์์ ๋์ ๋ฌธ์
์คํ ๊ฒฐ๊ณผ๋ง ๋ณด๋ฉด ์ฌ์ฉ์๋ html๊ณผ jsp์ ์ฐจ์ด๋ฅผ ์ ์ ์๋ค. ๊ฐ๋จํ ๊ฐ๋ ์ฐจ์ด๋ถํฐ
์ง๊ณ ๋์ด๊ฐ์.
ํ์ฅ์๊ฐ html์ด๋ htm์ผ๋ก ๋๋๋ ๋ฌธ์๋ ์ ์ ๋ฌธ์๋ค. ์คํฌ๋ฆฝํธ(์๋ฐ์คํฌ๋ฆฝํธ,
VB์คํฌ๋ฆฝํธ, ์ก์ ์คํฌ๋ฆฝํธ)๋ ํด๋ผ์ด์ธํธ์ฌ์ด๋ ๋์ ๋ฌธ์๋ก ์น ๋ธ๋ผ์ฐ์ ์์ ์ค
ํ๋๋ค. ์๋ฒ์ฌ์ด๋ ๋ฌธ์๋ ๋์ ๋ฌธ์๋ก, ํ์ฅ์๊ฐ jsp(๋๋ class)๋ก ๋๋๋ค. JSP/
Servlet ์น ํ๋ก๊ทธ๋๋ฐ์ ์๋ฒ์ฌ์ด๋ ๋์ ๋ฌธ์๋ก ์๋ฒ์ ์ปจํ ์ด๋๊ฐ ๋ฐ๋์ ํ์
ํ๋ค.
์ธํฐ๋ท์ผ๋ก ํ๋์ ๋ฌธ์๋ฅผ ์ฌ๋ฌ ์ฌ๋์๊ฒ ๋ณด์ฌ์ฃผ๋ ค๋ฉด, ์๋ฒ๊ฐ ํ์ํ๋ค. ํด๋ผ์ด์ธ
ํธ์ฌ์ด๋ ๋ฌธ์๋ ์๋ฒ๊ฐ ์์ด๋ ์คํํ๊ฑฐ๋ ๋ณผ ์ ์๋ค. ์น ๋ธ๋ผ์ฐ์ ๊ฐ HTML์
์ ํด์ง ํํ๋ก ๋ณํํ์ฌ ๋ณด์ฌ์ฃผ๋๋ฐ, <table> ํ๊ทธ๊ฐ ์์ผ๋ฉด ํ ์ด๋ธ ๋ชจ์์ผ๋ก ๋ณ
ํํด์ฃผ๋ ์ฝ์(ํ๋กํ ์ฝ)์ด ์๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ฉด ์๋ฒ์ฌ์ด๋ ๋ฌธ์(jsp/servlet)๋
์๋ฒ์ jsp/servlet์ ์คํํด์ html๋ก ๋ณํํด์ฃผ๋ ์ปจํ ์ด๋๊ฐ ๋ฐ๋์ ํ์ํ๋ค.
723์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
gugudan.html์ด ์๋ ์๋ฒ์ ์ฌ์ฉ์๊ฐ ๊ตฌ๊ตฌ๋จ์ ์์ฒญrequestํ๋ฉด, ์๋ฒ๋ html๋ก
๋ง๋ ๊ตฌ๊ตฌ๋จ์ ์ฌ์ฉ์์๊ฒ ๊ทธ๋๋ก ๋ณด๋ด(response, ๋๋ โ์๋ตโ์ด๋ผ๊ณ ํ๋ค)์ค๋ค.
์๋ฒ๊ฐ ๋ณด๋ด์ค html์ด ์น ๋ธ๋ผ์ฐ์ ์ ๋ง๋ ๊ตฌ๊ตฌ๋จ ํ๊ฐ ๋๋ค.
๊ทธ๋ฆผ 3-3 ์๋ฒ์ฌ์ด๋ ๋์ ํ๋ฆ๋
Browser
๊ตฌ๊ตฌ๋จ ๋ชจ์์์ฌ์ฉ์(์์ฒญ์)์๊ฒ๋ณด์ฌ์ค
๊ตฌ๊ตฌ๋จ ๋ชจ์์html tag๋ก์ค๋น
Browser์์๋ณด์ด๋ ๋ชจ์
Server ๋ด์ ์ํฉ
Server
๊ตฌ๊ตฌ๋จํ๋น๋ฏธ๋์ดโ click
or importRequest
HTTPD
Container
Responsegugudan.html(gugudan.html ํ์ผ์์๋ฒ์ ๋์ ๊ฒฝ์ฐ)
โป Browser๊ฐ html tag๋ฅผ ๊ตฌ๊ตฌ๋จ ๋ชจ์์ผ๋ก ๋ณํํด์ ๋ณด์ฌ์ค 1 2 9
1 1 9 92 2 4 18
9 1 18 81
<table> <tr> <tb>1</td>
<td>81</d> </tr></table>
gugudan.jsp๋ฅผ ์๋ฒ์ ์ปจํ ์คํธ์ ๊ฐ๋ค ๋์ผ๋ฉด, gugudan.jsp๋ ์๋ฒ์ ์ปจ
ํ ์ด๋์ ๋ฐฐํฌ๋ ๊ฒ์ด๋ค. ์ฌ์ฉ์๊ฐ gugudan.jsp๋ฅผ ์์ฒญํ๋ฉด gugudan.jsp๋
gugudan_jsp.java์ ๋น์ทํ ํํ์ ์๋ฐํด๋์ค๊ฐ ๋๊ณ , ์ด๊ฒ์ด ์คํ๋์ด ๊ตฌ๊ตฌ๋จ
์ html๋ก ๋ณ๊ฒฝํ ํ ์ฌ์ฉ์์๊ฒ ๋ณด๋ด์ค๋ค.
์ฌ์ฉ์๋ ๊ฒฐ๊ณผ๋ง ๋ณด์์ ๋ gugudan.html๊ณผ gugudan.jsp์ ์ฐจ์ด๋ฅผ ์ ์ ์๋ค.
gugudan.html์ ๊ตฌ๊ตฌ๋จ ํ๋ฅผ html๋ก ๋ฏธ๋ฆฌ ๋ง๋ค์ด ๋์ ๊ฒ์ด๊ณ (์ ์ ), jsp๋ ํ๋ก
๊ทธ๋๋ฐ์ ์ํด ๊ตฌ๊ตฌ๋จ์ด html๋ก ๋ง๋ค์ด์ง ๊ฒ์ด๋ค(๋์ ). <h>๋ ๊ธ์จํฌ๊ธฐ๋ฅผ ์กฐ์ ํ
๋ html ํ๊ทธ๋ก ๊ฐ์ฅ ํฐ <h1>๋ถํฐ ๊ฐ์ฅ ์์ <h6>๊น์ง ์๋ค. ๋ค์ ์์ ๋ฅผ ํตํด ์
์ ๋ฌธ์์ ๋์ ๋ฌธ์์ ์ฐจ์ด๋ฅผ ์ข ๋ ์ดํดํด ๋ณด์.
733์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
์์ 3-2 ์ ์ ๋ฌธ์ HTML ์์ (h16.html)
01: <html>
02: <head>
03: <title>๊ธ์จ ํฌ๊ธฐ</title>
04: </head>
06: <body>
07: ๊ธ์จํฌ๊ธฐ-์ ์ ๋ฌธ์ HTML ์์ ์ ๋๋ค.<hr/>
09: <h1>์๋ ํ์ธ์. h1 ํฌ๊ธฐ์ ๋๋ค.</h1><br/>
10: <h2>์๋ ํ์ธ์. h2 ํฌ๊ธฐ์ ๋๋ค.</h2><br/>
11: <h3>์๋ ํ์ธ์. h3 ํฌ๊ธฐ์ ๋๋ค.</h3><br/>
12: <h4>์๋ ํ์ธ์. h4 ํฌ๊ธฐ์ ๋๋ค.</h4><br/>
13: <h5>์๋ ํ์ธ์. h5 ํฌ๊ธฐ์ ๋๋ค.</h5><br/>
14: <h6>์๋ ํ์ธ์. h6 ํฌ๊ธฐ์ ๋๋ค.</h6><br/>
15: <a href='index.jsp'>HOME</a>
16: </body>
17: </html>
1๋ฒ์งธ ์ค: <html>ํ๊ทธ๋ <head>, <body> ํ๊ทธ๋ก ๊ตฌ์ฑ๋๋ค. <head>์๋ ์ ๋ชฉ๊ณผ
์๋ฐ ์คํฌ๋ฆฝํธ๊ฐ ๋ค์ด์๋ค. <body>๋ ์๋ต์ผ๋ก ๋ณด์ฌ์ค ๋ด์ฉ์ ํฌํจํ๊ณ
์๋ค.
<html>
<head>
์ ๋ชฉ, ์๋ฐ์คํฌ๋ฆฝํธ
</head>
<body>
์ค์ ๋ด์ฉ
</body>
</html>
743์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
9~14๋ฒ์งธ ์ค: <h1>์ด ๊ธ์จ๊ฐ ๊ฐ์ฅ ํฌ๊ณ <h6>๊ฐ ๊ฐ์ฅ ์๋ค.
15๋ฒ์งธ ์ค: 'HOME'์ ์ ํํ๋ฉด index.jsp๋ฅผ ๋ณด์ฌ์ค๋ค.
๊ทธ๋ฆผ 3-4 ์์ 3-2 ์คํ ๊ฒฐ๊ณผ ํ๋ฉด
์์ 3-3 ๋์ ๋ฌธ์ JSP ์์ (h16.jsp)
01: <%@ page contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>
02: <%--ํ๊ธ์ด ๊นจ์ง์ง ์๋๋ก ํ๋ค.--%>
03: <% request.setCharacterEncoding("euc-kr"); %>
04: <html>
05: <head>
08: <title>๊ธ์จ ํฌ๊ธฐ</title>
09: </head>
753์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
10: <body>
11: ๊ธ์จํฌ๊ธฐ-๋์ ๋ฌธ์ JSP ์์ ์ ๋๋ค.<hr/>
12: <%
13: for(int i=1; i<=6 ;i++){
14: %>
15: <%="<h"+i+">"%>์๋ ํ์ธ์. h<%=i%> ํฌ๊ธฐ์ ๋๋ค.<%="</h"+i+">"%>
16: <br/>
17: <%
18: }
19: %>
20: <a href='index.jsp'>HOME</a>
21: </body>
22: </html>
โ โhtml์ด๋ ์๋ฐ์ฝ๋๊ฐ html์ด ๋๋๋โ์ ์ค์ํ ์ฐจ์ด๊ฐ ์๋ค.
โ ์ปจํ ์ด๋ ์์์ ์๋ฐ์ฝ๋๊ฐ html๋ก ๋ณํ๋ ๋ค์ ์ฌ์ฉ์์๊ฒ ์ ์ก๋๋ค.
โ <%=โ<h"+1+">"%>๋ <h1> html ํ๊ทธ๊ฐ ๋๋ค.
1๋ฒ์งธ ์ค: <%@ page contentType="text/html; charset=EUC-KR" %>์์ @
page๋ jsp์ ๊ธ์ํ์ ๋ฑ ํ์ด์ง์ ํน์ง์ ์ ์ธํ๋ ํ์ด์ง ๋๋ ํฐ๋ธ
page directive๋ค.
2๋ฒ์งธ ์ค: <%-- --%>๋ ํ๋ก๊ทธ๋๋ฐ์ ์ํฅ์ ์ฃผ์ง ์๋ jsp ์ฝ๋ฉํธ๋ค.
3๋ฒ์งธ ์ค: <% request.setCharacterEncoding("euc-kr"); %>๋ jsp์์ ํ๊ธ์ด
๊นจ์ง์ง ์๊ฒ ์ค์ ํ ๋ถ๋ถ์ด๋ค. ์ฌ๊ธฐ๊น์ง๋ ํ์ด์ง์ ํน์ง์ ์ ์ธํ๋ ๋ถ
๋ถ์ด๋ค.
12๋ฒ์งธ ์ค: <% %>๋ ์คํฌ๋ฆฝํธ๋ scriptlet(์๋ฐ์ฝ๋๋ถ๋ถ)์ผ๋ก ์๋ฐ ํ๋ก๊ทธ๋๋ฐ์ ํ
์ ์๋ ๋ถ๋ถ์ด๋ค. for ๋ฐ๋ณต๋ฌธ์ 1์์ 6๊น์ง, 1์ฉ ์ฌ๋ฆฌ๋ฉด์ ์คํํ๊ณ
763์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
์๋ค. <% %> ์ฌ์ด๋ ์๋ฐ๋ฅผ ์ฌ์ฉํ ์ ์๋ ๋ถ๋ถ์ด๊ณ ๊ทธ ์ธ๋ html ๋ถ
๋ถ์ด๋ค.
15๋ฒ์งธ ์ค: <%= %>๋ ์ต์คํ๋ ์ expression(๋๋ ํํ์)์ผ๋ก, html๋ก ๋ณํํ๋ค.
<%= (1+2)%>๋ 3์ด ๋๋ค. html์ด๋ ์๋ฐ์ฝ๋๊ฐ html์ด ๋๋๋์ ์ค
์ํ ์ฐจ์ด๊ฐ ์๋ค. ๋จผ์ jsp๊ฐ ์ปจํ ์ด๋ ์์์ ์๋ฐ์ฝ๋๋ฅผ ์คํํ ๋ค
์, ๊ฒฐ๊ณผ์ธ html์ ์ฌ์ฉ์์๊ฒ ๋ณด๋ธ๋ค. โ<h"+1+">โ์ด ์ต์คํ๋ ์ ์
์ <h1>์ด ๋๋ฏ๋ก โ<h1>์๋ ํ์ธ์ h1 ํฌ๊ธฐ์ ๋๋ค.</h1><br/>โ์ด
๋๊ณ , i๊ฐ ์ฆ๊ฐํ์ฌ 2๊ฐ ๋๋ฉด์ โ<h2>์๋ ํ์ธ์ h2 ํฌ๊ธฐ์ ๋๋ค.</
h2><br/>โ๊ฐ ๋๋ค. ์ด๋ ๊ฒ <h6>๊น์ง ๋ฐ๋ณต๋์ด ๋ชจ๋ html๋ก ๋ณํ๋
๋ค์ ์ฌ์ฉ์์๊ฒ ์ ์ก๋๋ค.
๊ทธ๋ฆผ 3-5 JSP ์๋์์
Browser
Browser Server
HTTPDRequest
Server
๊ตฌ๊ตฌ๋จโ click โก
Requestโข
โฃ
HTTPDContainer
}
gugudan.JSP
โคResponse
์์ฒญ์์ ๋ณด์ฌ์ค
๋ก์ง์ ์ด์ฉ๊ตฌ๊ตฌ๋จ html tag๋ฅผ ๋ง๋ฌ
gugudan.JSP
gugudan.jsp๋ฅผ ์คํ์์ผ์html tag๋ฅผ ๋ง๋๋ ๊ณผ์ ์๋ฐ๋์ Container๊ฐ ํ์ํ๋ค.
<table> <tr> <tb>1</td>
<td>81</d> </tr></table>
1 2 9
1 1 9 9
2 2 4 18
9 81
http://hanb/gugudan.jsp
for(โฆ) {
<table> <% for( ) {
} %></table>
773์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
JSP ์๋์์๋ฅผ ์ ๋ฆฌํด๋ณด์.
โ , โก ์ฌ์ฉ์๊ฐ ์๋ฒ์ ์๋ h6.jsp๋ฅผ ์์ฒญ(http://ip:port/context/h16.jsp)ํ๋ค.
โข HTTPD(์ปจํ ์ด๋์์ ์ฒ๋ฆฌํด์ผํ ๊ฒ์ด ์๋ ๊ฐ๋ฅผ ํ๋จํ๋ ์ญํ )๊ฐ ํ์ฅ์
jsp๋ฅผ ๋ณด๊ณ ์ปจํ ์ด๋์๊ฒ ์์ ์ ์์ฒญํ๋ค.
โฃ ์๋ฐ์ฝ๋๋ฅผ ์คํํ์ฌ html๋ก ๋ง๋ ๋ค.
โค ์์ฑ๋ html์ ์ฌ์ฉ์์๊ฒ ๋ณด๋ธ๋ค(์๋ต).
JSP์ ์๋์๋ฆฌ๋ฅผ ์ดํดํ๊ธฐ ์ํด h16class.jsp๋ฅผ ์ดํด๋ณด์. JSP์ ํ์ด์ง ๋๋
ํฐ๋ธ ์ค import="com.hanb.Hello"๋ ์๋ฐ์ import com.hanb.Hello;์ ๋
์ผํ๋ค. com.hanb ํจํค์ง์ Hello ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ฒ ๋ค๋ ๋ป์ด๋ค. <%=hello.
hx(i)%>์์ i=1 ์ผ ๋ hx(1)๊ฐ ์คํ๋๋ฉด <%=โ<h1>์๋ ํ์ธ์. h1 ํฌ๊ธฐ์ ๋๋ค.
</h1><br/>โ%>๊ฐ ๋๋ค. ๋ค์ html ๋ฌธ์์ด โ<h1>์๋ ํ์ธ์. h1 ํฌ๊ธฐ์ ๋๋ค. </
h1><br/>โ์ด ๋๊ณ , ์ฌ์ฉ์์๊ฒ ์ ๋ฌ๋๋ฉด ํฐ ๊ธ์จ๋ก โ์๋ ํ์ธ์. h1 ํฌ๊ธฐ์ ๋๋ค.โ
๋ก ๋ณด์ธ๋ค.
์์ 3-4 ๋์ ๋ฌธ์ JSP/Class ์์ (h16class.jsp)
01: <%@ page contentType="text/html; charset=EUC-KR"%>
02: <%@ page import="com.hanb.Hello"%>
03: <% request.setCharacterEncoding("euc-kr"); %>
04: <html>
05: <head>
06: <title>๊ธ์จ ํฌ๊ธฐ</title></head>
07: <body>
08: ๊ธ์จํฌ๊ธฐ-๋์ ๋ฌธ์ JSP/Class ์์ ์ ๋๋ค.<hr/>
09: <%
10: Hello hello=new Hello();
11: for(int i=1; i<=6 ;i++){
12: %>
783์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
13: <%=hello.hx(i)%>
14: <%
15: }
16: %>
17: <a href='index.jsp'>HOME</a>
18: </body>
19: </html>
9๋ฒ์งธ ์ค: ์๋ฐ์ฝ๋์์ญ. ์คํฌ๋ฆฝํธ๋ฆฟ
10๋ฒ์งธ ์ค: Hello ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
13๋ฒ์งธ ์ค: HTML ์์ญ์์ ์ต์คํ๋ ์ ์ ์ด์ฉํ์ฌ ๋ฌธ์์ด์ HTML๋ก ์ถ๋ ฅํ๋ค.
i๊ฐ 1์ผ ๋ <%=hello.hx(1)%>์์ hx(1) ๋ฉ์๋๋ <h1>์๋ ํ์ธ์.
h1 ํฌ๊ธฐ์ ๋๋ค.</h1><br/>์ ๋ฐํํ๋ค. ๊ทธ๋ฆฌ๊ณ <%=โ<h1>์๋ ํ์ธ
์. h1 ํฌ๊ธฐ์ ๋๋ค.</h1><br/>โ%>์ <h1>์๋ ํ์ธ์. h1 ํฌ๊ธฐ์ ๋
๋ค.</h1><br/>์ ์ถ๋ ฅํ๋ค. ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก h2~h6๊น์ง ๋ฐ๋ณตํ๋ค.
์์ 3-5 ์น ํ๋ก๊ทธ๋๋ฐ์ ํด๋์ค ํ์ ์์ (Hello.java)
1: package com.hanb; //์น ํ๋ก๊ทธ๋๋ฐ->ํจํค์ง ํ์
2: public class Hello {
3: public String hx(int i){
4: //String t=String.format("<h%d>์๋ ํ์ธ์. h%d ํฌ๊ธฐ์ ๋๋ค.</h%d>
<br/>",i,i,i);
5: String t=String.format("<h%1$d>์๋ ํ์ธ์. h%1$d ํฌ๊ธฐ์ ๋๋ค.</h%1$d>
<br/>",i);
6: return t;
7: }
8: }//class
793์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
1๋ฒ์งธ ์ค: ์น ํ๋ก๊ทธ๋๋ฐ์์ ํด๋์ค๋ ๋ฐ๋์ ํจํค์ง ํํ๋ก ์ ์ธํด์ผ ํ๋ค. jsp
์์ ์ฌ์ฉํ ๋๋ <%@ page import="com.hanb.Hello"%>์ ๊ฐ์ด
ํ์ด์ง ๋๋ ํฐ๋ธ๋ฅผ ์ด์ฉํ์ฌ ํฌํจํ๋ค.
4๋ฒ์งธ ์ค: String.format()์ ์ด์ฉํ์ฌ ๋ฌธ์์ด ์ถ๋ ฅํ์์ ๊ฒฐ์ ํ๋ค. %d์ ๊ฐ์
์ ํ๋ผ๋ฏธํฐ(i) ๊ฐ์๊ฐ ๋์ผํ๋ฏ๋ก $๊ฐ ํ์ํ์ง ์๋ค. i๊ฐ 1์ผ ๋ ํ๋ผ
๋ฏธํฐ i๊ฐ 3๊ฐ์ด๋ฏ๋ก %d๋์ 1์ด ๋์ ๋์ด <h1>์๋ ํ์ธ์. h1 ํฌ๊ธฐ์
๋๋ค.</h1><br/>๊ฐ ๋๋ค.
5๋ฒ์งธ ์ค: String.format()์ ์ด์ฉํ์ฌ ๋ฌธ์์ด ์ถ๋ ฅํ์์ ๊ฒฐ์ ํ๋ค. %d๋ ์ ์,
%s๋ ๋ฌธ์์ด์ ์๋ฏธํ๋ค. ์ถ๋ ฅํ ํ๋ผ๋ฏธํฐ์ ์ถ๋ ฅ ํ์%์ ๊ฐ์๊ฐ ๋ค
๋ฅด๋ฉด $๋ฅผ ์ฌ์ฉํ๋ค. $1์ ์ฒซ ๋ฒ์งธ ํ๋ผ๋ฏธํฐ i์ ์์น๋ฅผ ์๋ฏธํ๋ค. i๊ฐ 1
์ผ ๋ ํ๋ผ๋ฏธํฐ i๊ฐ 1๊ฐ ์ด๋ฏ๋ก %1$d๋์ 1์ด ๋์ ๋์ด <h1>์๋ ํ์ธ
์. h1 ํฌ๊ธฐ์ ๋๋ค.</h1><br/>๊ฐ ๋๋ค.
3.4 JSP ์คํฌ๋ฆฝํธ ์์
JSP๋ html ํ๊ทธ๋ถ๋ถ๊ณผ ์คํฌ๋ฆฝํธ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋๋ค. ์คํฌ๋ฆฝํธ๋ถ๋ถ์ ์ปจํ ์ด๋์
์ html ํ๊ทธ๋ก ๋ณํ๋ ํ ์ฌ์ฉ์์๊ฒ ์ ๋ฌ๋๋ค. ์ฌ์ฉ์๊ฐ ๋ณด๋ ๊ฒฐ๊ณผํ๋ฉด์์๋
์ ์ ๋ฌธ์์ธ์ง ํน์ ๋์ ๋ฌธ์์ธ์ง ์ ์ ์๋ค.
ํ 3-2 ์คํฌ๋ฆฝํธ ์์
ํ ๊ธฐ ์ด ๋ฆ ์ฌ์ฉ์ฉ๋
<%! %> ์ ์ธ(declaration) ํ ํ์ด์ง ๋ด์์ ์ฌ์ฉํ๋ ค๊ณ ์ ์ธํ ๋ฉ์๋๋ ํ๋
<% %> ์คํฌ๋ฆฝํธ๋ (์คํ-scriptlet) ์๋ฐ์ฝ๋๋ฅผ ์คํํ๋ ๋ถ๋ถ
<%= %> ์ต์คํ๋ ์ (ํํ-expression) ๋ฉ์๋ ์คํ๊ฒฐ๊ณผ๋ ์ฐ์ฐ๊ฒฐ๊ณผ๋ฅผ ๋ฌธ์์ด๋ก ๋ณํ
803์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
ํ 3-3 ์คํฌ๋ฆฝํธ ์์ ์
ํ ๊ธฐ ์ด ๋ฆ ์ ๋ฏธ
<%! %>
<%!
public String dehx(int i)
{
..
}
%>
dehx() ๋ฉ์๋๋ฅผ ์ ์ธํ๋ค.
<% %>
<%
Hello hello=new Hello();
for(int i=1; i<=6; i++){
...
}
%>
๊ฐ์ฒด ์์ฑ, ๋ฉ์๋ํธ์ถ, ๋ก์ง ์คํ์ ํ๋ค.
<%= %> <%=dehx(1)%>, <%= (1+2)%>
๋ฉ์๋ ์คํ๊ฒฐ๊ณผ์์ด๋ ์ฐ์ฐ๊ฒฐ๊ณผ๋ฅผ html ๋ฌธ์์ด๋ก
๋ง๋ ๋ค. <h1>์๋ ํ์ธ์. h1 ํฌ๊ธฐ์ ๋๋ค.</h1>๊ณผ 3์ด
๋๋ค.
์์ 3-6 HTML์ ์คํฌ๋ฆฝํธ ์ฌ์ฉ ์(h16sample.jsp)
01: <%@ page contentType="text/html; charset=EUC-KR"%>
02: <%@ page import="com.hanb.Hello"%>
03: <% request.setCharacterEncoding("euc-kr"); %>
04: <html>
05: <head>
06: <title>๊ธ์จ ํฌ๊ธฐ</title>
07: </head>
08: <%! //์ ์ธ
09: public String dehx(int i){
10: return
11: String.format("<h%1$d>์๋ ํ์ธ์. h%1$d ํฌ๊ธฐ์ ๋๋ค.</h%1$d><br/>",i);
12: }
13: %>
813์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
14: <body>
15: ๊ธ์จํฌ๊ธฐ-๋์ ๋ฌธ์ JSP/Class ์์ ์ ๋๋ค.<hr/>
16: <% //์คํฌ๋ฆฝํธ๋ฆฟ
17: Hello hello=new Hello(); //๊ฐ์ฒด ์์ฑ ํ ๋ฉ์๋ ํธ์ถ
18: for(int i=1; i<=6 ;i++){
19: out.print(hello.hx(i));
20: }
21:
22: %>
23: <hr/>
24: <% //์ต์คํ๋ ์
25: for(int i=1; i<=6 ;i++){
26: %>
27: <%=dehx(i)%>
28: <%
29: }
30: %>
31: <a/ href='index.jsp'>HOME</a>
32: </body>
33: </html>
2๋ฒ์งธ ์ค: Hello ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ํ์ด์ง ๋๋ ํฐ๋ธ์ ํฌํจํ๋ค.
8๋ฒ์งธ ์ค: JSP ํ ํ์ด์ง ๋ด์์ ์ฌ์ฉํ ๋ฉ์๋๋ฅผ ์ ์ธdeclarationํ๋ค.
9~12๋ฒ์งธ ์ค: ์ ๋ ฅ๋ ํ๋ผ๋ฏธํฐ i๊ฐ์ ๋ฐ๋ผ <h1>~<h6>ํฌ๊ธฐ์ ๋ฌธ์์ด์ ๋ง๋ ๋ค.
i๊ฐ 1์ผ ๋ %1$d ๋์ 1์ด ๋์ ๋์ด โ<h1>์๋ ํ์ธ์. h1 ํฌ๊ธฐ์
๋๋ค.</h1><br/>โ๋ฅผ ๋ฐํํ๋ค.
20๋ฒ์งธ ์ค: ์ถ๋ ฅ ๋ฉ์๋๋ค. ์ต์คํ๋ ์ ์ ์ด์ฉํ๋ฉด ์๋ฐ ์์ญ์ด ๋๋์ผ ํ๊ธฐ ๋๋ฌธ
์ %><%๊ฐ ํ์ํ๋ค. ๊ทธ๋์ %><%=hello.hx(i)%><%์ ๋์ผํ๋ค.
823์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
24~30๋ฒ์งธ ์ค: ์คํฌ๋ฆฝํธ ์์ ์๋ฐ์ฝ๋ ์์ญ์ด๋ค. ๋ฐ๋ณต๋ฌธ for๋ฅผ ์ด์ฉํ์ฌ ์ต์คํ
๋ ์ ์์ dehx()๋ฅผ ํธ์ถํ๋ค. ์ต์คํ๋ ์ ์ ์คํฌ๋ฆฝํธ๊ฐ ๋๋์ผ
ํ๋ค.
โ ์คํฌ๋ฆฝํธ(<% %>)์์ ์๋ ์๋ฐ์ฝ๋๋ ๋ชจ๋ _jspService() ๋ฉ์๋ ์์ผ๋ก ๋ค์ด
๊ฐ๋ค.
โ ์ฝ์๋ ์คํฌ๋ฆฝํธ ํ๊ทธ๋ค์ด ์๋์ผ๋ก html ์ฝ๋๋ก ๋ณํ๋์ด ์คํ๋๋ค.
โ JSP๋ ๊ฐ๋จํ ํ๊ธฐ(ํ๊ทธ)๋ ์ ์ธ์ ์ด์ฉํ์ฌ ์ํ๋ ๊ฒ์ ์ฝ๊ฒ ๋ง๋ค ์ ์๊ฒ ํ๋ค.
jsp๋ ์ปจํ ์ด๋์ ์ํด ์๋์ผ๋ก ํด๋์ค๋ก ๋ณํ๋๋ค. jsp๋ java server page๋ก
์๋ฒ์์ ์คํ๋๋ ์๋ฐ๋ก ๋ง๋ ํ์ด์ง(์น์ฉ ํด๋์ค)๋ฅผ ๋งํ๋ค. ๋ฐ๋ผ์ jsp๋ ํด๋
์ค๋ก ๋ณํ๋๋ค. [์์ค-h16sample.jsp]์ [์์ค-h16sample_jsp.java]๋ฅผ ๋น๊ตํด
๋ณด์. ํจํค์ง๋ ์๋์ผ๋ก ์ ํด์ง org.apache.jsp(Tomcat)๋ก ์ ์ธ๋๊ณ ํด๋์ค๊ฐ
import๋๋ค. ์ ์ธ(<%! %>)์ ์ ์ธ๋์๋ dehx()๋ฉ์๋๋ ๋ฉค๋ฒ๋ฉ์๋๋ก ์ ์ธ๋
๋ค. ์คํฌ๋ฆฝํธ(<% %>)์์ ์๋ ์๋ฐ์ฝ๋๊ฐ ๋ชจ๋ _jspService() ๋ฉ์๋ ์์ผ๋ก ๋ค
์ด๊ฐ๋ค๋ ์ ์ด ์ค์ํ๋ค. ๋ํ <%=%>๋ out.print()๋ก ๋ณํ๋๋ค. ๊ฐ๋จํ๊ฒ ์ฌ์ฉ
ํ๋ ์คํฌ๋ฆฝํธ๋ (<% %>)์ด๋ ํํ(<%=%>), ์ ์ธ(<%! %>)์ด ๋ณต์กํ ์ฝ๋๋ก ๋ณํ
๋๊ณ ์คํ๋๊ฒ ํ์ฌ ๋ด๋ถ๋ก์ง์ ์จ๊ธฐ๋ ์ถ์์ (๊ตฌ์ฒด์ ์ ๋ฐ๋) ์น ํ๋ก๊ทธ๋๋ฐ์ ํ
์ ์๋ค.
๋ค์ ์ฝ๋๋ h16sample.jsp๊ฐ Tomcat ์๋ฒ์์ ํด๋์ค(์๋ธ๋ฆฟ)๋ก ์๋ ๋ณํ๋
์ฝ๋๋ค. jsp๊ฐ ์๋์ ๊ฐ์ด ๋ณํ๋์ด ์คํ๋๋ค๋ ์ ์ ์๋ฉด ๋๋ค.
์์ 3-7 JSP์ ์คํฌ๋ฆฝํธ ์ฌ์ฉ ์(h16sample_jsp.java)
001: package org.apache.jsp;
003: import javax.servlet.*;
004: import javax.servlet.http.*;
005: import javax.servlet.jsp.*;
833์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
006: import com.hanb.Hello;
007:
008: public final class h16sample_jsp
extends org.apache.jasper.runtime.HttpJspBase
009: implements org.apache.jasper.runtime.JspSourceDependent {
010:
011: //์ ์ธ
012: public String dehx(int i){
013: return
014: String.format("<h%1$d>์๋ ํ์ธ์. h%1$d ํฌ๊ธฐ์ ๋๋ค.</h%1$d><br/>",i);
015: }
...
036: public void _jspService(HttpServletRequest request,
HttpServletResponse response)
037: throws java.io.IOException, ServletException {
038:
043: JspWriter out = null;
050: response.setContentType("text/html; charset=EUC-KR");
057: out = pageContext.getOut();
062: request.setCharacterEncoding("euc-kr");
..
071: //์คํฌ๋ฆฝํธ๋ฆฟ
072: Hello hello=new Hello(); //๊ฐ์ฒด ์์ฑ ํ ๋ฉ์๋ ํธ์ถ
073: for(int i=1; i<=6 ;i++){
077: out.print(hello.hx(i));
078: }
079:
080: out.write("\r\n");
081: out.write("<hr/> \r\n");
082: // ์ต์คํ๋ ์
083: for(int i=1; i<=6 ;i++){
084:
843์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
085: out.write("\r\n");
086: out.write("\t ");
087: out.print(dehx(i));
088: out.write(" \r\n");
089: out.write("\t");
...
095: } //_jspService
1๋ฒ์งธ ์ค: Tomcat ์๋ฒ์์ jsp๋ 'org.apache.jsp.jsp'๊ฐ _jsp.java๋ก ๋ณํ๋
๋ค. Tomcat ์๋ฒ์์๋ org.apache.jsp๊ฐ ๊ธฐ๋ณธ ํจํค์ง๋ค.
3~5๋ฒ์งธ ์ค: jsp์์ ์ฌ์ฉ๋๋ ๊ธฐ๋ณธ ๊ฐ์ฒด ํจํค์ง๋ค.
6๋ฒ์งธ ์ค: jsp์ ํ์ด์ง ๋๋ ํฐ๋ธ์ <%@ page import="com.hanb.Hello"%>๊ฐ
๋ณํ๋ ๊ฒ์ด๋ค.
8๋ฒ์งธ ์ค: ์ปจํ ์ด๋์์ ์ด๋ฃจ์ด์ง๋ ์์ ์ HttpJspBase๊ฐ ํ๋ฏ๋ก ์์์ ํ์ฌ
์์ธํ ๋ด์ฉ์ ์จ๊ฒจ์ง๊ณ jsp์์ ์์ฑํ๋ ์์ ๋ง ๋ณด์ธ๋ค.
12~15๋ฒ์งธ ์ค: <%! %> ์ ์ธ ์์ญ์์ ์ ์ธํ๋ dehx() ๋ฉ์๋๊ฐ ํด๋์ค์์ ์
์ธ๋๋ค.
36๋ฒ์งธ ์ค: ๋ชจ๋ ์คํฌ๋ฆฝํธ(<%%>)์์ ์ฝ๋๋ ์๋์ผ๋ก _jspService() ๋ฉ์๋ ์
์ ๋ค์ด๊ฐ๋ค.
43~57๋ฒ์งธ ์ค: ํด๋์ค์์ ํ์ํ ๊ธฐ๋ณธ ๊ฐ์ฒด๋ค์ด ์๋์ผ๋ก ์ ์ธ๋๊ณ ์ค๋น๋๋ค.
72~78๋ฒ์งธ ์ค: ๋ฐ๋ณต๋ฌธ for ๋ฌธ์ ์คํํ์ฌ ์ํ๋ ๋ฌธ์์ด์ ์ถ๋ ฅํ๋ค.
87๋ฒ์งธ ์ค: ์ ์ธ์์ญ์ ์ ์ธํ๋ ๋ฉ์๋ dehx()๋ฅผ ํธ์ถํ๋ค.
๊ตฌ๊ตฌ๋จ์ ์ด์ฉํ์ฌ ์ ์ ๋ฌธ์(ํด๋ผ์ด์ธํธ์ชฝ ๋ฌธ์)์ ๋์ ๋ฌธ์(์๋ฒ์ชฝ ๋ฌธ์)์ ์ฐจ์ด
853์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
์ ๋ฐ ์๋ฒ์ชฝ ๋ฌธ์์ ๋์์๋ฆฌ๋ฅผ ํ์ธํ์. ์ ์ ๋ฌธ์ gugudan.html์ ๊ตฌ๊ตฌ๋จ์
๊ฒฐ๊ณผ๋ฅผ ์ด๋ฏธ ํ ์ด๋ธ๋ก ๋ง๋ค์ด ๋์ ๊ฒ์ด๋ค. <table>์์ <tr>๊ณผ <td>๋ฅผ ์ด์ฉํ์ฌ
์ ์ฌ๊ฐํ์ ํ ์ด๋ธ์ ๋ง๋ค๊ณ 1X1๋ถํฐ 9X9๊น์ง์ 81์นธ์ ๊ณต๊ฐ์ ๊ณฑ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฃ
์ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ gugudan.jsp๋ ์ปจํ ์ด๋ ์์์ ์ค์ฒฉ for๋ฅผ ์ด์ฉํ์ฌ ๊ณฑ์ ์
ํ ๋ค์, <table>์์ <tr>๊ณผ <td> ํ๊ทธ๋ฅผ ์ด์ฉํ์ฌ html ๊ตฌ๊ตฌ๋จํ๋ฅผ ๋ง๋ค์ด ์ฌ์ฉ
์์๊ฒ ๋ณด๋ธ๋ค. ๊ฒฐ๊ณผ ํ๋ฉด์์๋ ์ด๋ฐ ์ฐจ์ด์ ์ ์ ์ ์๋ค.
HTML์ ๊ตฌ๊ตฌ๋จ์ ๋ง๋ค์ด ํ ์ด๋ธ ํ์์ผ๋ก ์ถ๋ ฅํ๋ค. 10X10 ํ ์ด๋ธ์ ๋ง๋ค๊ณ ํค
๋, ๋จ์, ๊ตฌ๊ตฌ๋จ ๊ฒฐ๊ณผ๋ฅผ ํ ์ด๋ธ๋ก ๋ง๋ค๋ฏ๋ก ์์ ๋ฐ๊พธ๊ธฐ๋ ์ด๋ ต๋ค. jsp๋ ์ค์ฒฉ for
๋ฅผ ์ด์ฉํ๊ณ ๊ณฑ์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค. ์ค์ฒฉ for๋ฅผ ์ฌ์ฉํ ์ ๋์ ์ค๋ ฅ์ด๋ผ๋ฉด ๊ฐ๋จ
ํ๊ฒ ๊ตฌ๊ตฌ๋จ์ ๋ง๋ค ์ ์์ผ๋ฉฐ ์ฝ๋ฉ ๋ถ๋๋ ์ ๋ค. ์์๋ ์ฝ๊ฒ ๋ฐ๊ฟ ์ ์๋ค.
์์ 3-8 HTML ํ์์ ๊ตฌ๊ตฌ๋จ(gugudan.html)
001: <html>
002: <head>
003: <title>๊ตฌ๊ตฌ๋จ</title>
004: </head>
005: <body>
006: <center>
007: <p>๊ตฌ๊ตฌ๋จ</p><hr/>
008: <table border='0' bgcolor='#aaaaaa' width='50%'>
009: <tr>
010: <td bgcolor='#ffffaa'>X</td>
011: <td bgcolor='#ffffaa'>1๋จ</td>
012: <td bgcolor='#ffffaa'>2๋จ</td>
013: <td bgcolor='#ffffaa'>3๋จ</td>
014: <td bgcolor='#ffffaa'>4๋จ</td>
015: <td bgcolor='#ffffaa'>5๋จ</td>
016: <td bgcolor='#ffffaa'>6๋จ</td>
017: <td bgcolor='#ffffaa'>7๋จ</td>
863์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
018: <td bgcolor='#ffffaa'>8๋จ</td>
019: <td bgcolor='#ffffaa'>9๋จ</td>
020: </tr>
021: <tr>
022: <td bgcolor='#ffffaa'>1๋จ</td>
023: <td bgcolor='#dddddd'>1</td>
024: <td bgcolor='#dddddd'>2</td>
025: <td bgcolor='#dddddd'>3</td>
026: <td bgcolor='#dddddd'>4</td>
027: <td bgcolor='#dddddd'>5</td>
028: <td bgcolor='#dddddd'>6</td>
029: <td bgcolor='#dddddd'>7</td>
030: <td bgcolor='#dddddd'>8</td>
031: <td bgcolor='#dddddd'>9</td>
032: </tr>
033: <tr>
034: <td bgcolor='#ffffaa'>2๋จ</td>
035: <td bgcolor='#ddffaa'>2</td>
036: <td bgcolor='#ddffaa'>4</td>
037: <td bgcolor='#ddffaa'>6</td>
038: <td bgcolor='#ddffaa'>8</td>
039: <td bgcolor='#ddffaa'>10</td>
040: <td bgcolor='#ddffaa'>12</td>
041: <td bgcolor='#ddffaa'>14</td>
042: <td bgcolor='#ddffaa'>16</td>
043: <td bgcolor='#ddffaa'>18</td>
044: </tr>
...
117: <tr>
118: <td bgcolor='#ffffaa'>9๋จ</td>
119: <td bgcolor='#dddddd'>9</td>
120: <td bgcolor='#dddddd'>18</td>
873์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
121: <td bgcolor='#dddddd'>27</td>
122: <td bgcolor='#dddddd'>36</td>
123: <td bgcolor='#dddddd'>45</td>
124: <td bgcolor='#dddddd'>54</td>
125: <td bgcolor='#dddddd'>63</td>
126: <td bgcolor='#dddddd'>72</td>
127: <td bgcolor='#dddddd'>81</td>
128: </tr>
129: </table>
130: <a href='index.jsp'>HOME</a>
131: </center>
132: </body>
133: </html>
์์ 3-8๋ฅผ ์คํํ ๋ค์, ์น ๋ธ๋ผ์ฐ์ ์์ ์์ค๋ณด๊ธฐ๋ฅผ ํ๋ฉด 3-7๊ณผ ๋์ผํ ๊ฒ์ ์
์ ์๋ค. ์๋ฒ์ ์ปจํ ์ด๋๊ฐ jsp ๋ก์ง์ ์คํํ ๋ค์ html๋ก ๋ง๋ค๊ณ , ํด๋ผ์ด์ธํธ์ธ
์น ๋ธ๋ผ์ฐ์ ๋ก ๋ณด๋ธ๋ค. html๋ก ๊ตฌ๊ตฌ๋จ์ ๋ชจ๋ ๋ง๋ ํ ์น ๋ธ๋ผ์ฐ์ ์ html๋ก ์ถ๋ ฅ
ํ๋ฏ๋ก ๋ด์ฉ์ด ๋ณ๊ฒฝ๋์ง ์๋๋ค. ๊ทธ๋์ ์ ์ ๋ฌธ์๋ผ๊ณ ํ๋ค. jsp๋ ์ปจํ ์ด๋์์
๋ก์ง์ ์คํํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ html๋ก ๋ง๋ค์ด ๋๊ฐ๋ค. html ๋ณํ์ด ์๋ฃ๋๋ฉด ์น ๋ธ๋ผ
์ฐ์ ๋ก ๋ณด๋ธ๋ค. ๋ก์ง์ ์ํด ๊ฒฐ๊ณผ๊ฐ ๋ณ๊ฒฝ๋ ์ ์๊ณ , ๋ก์ง์ ์คํํ๋ฉด์ html๋ก ๋ณ
ํ๋๊ธฐ ๋๋ฌธ์ jsp๋ ๋์ ๋ฌธ์๋ค.
์์ 3-9 JSP ํ์์ ๊ตฌ๊ตฌ๋จ(gugudan.jsp)
01: <%@ page contentType="text/html; charset=EUC-KR" %>
02: <%--ํ๊ธ์ด ๊นจ์ง์ง ์๋๋ก ํ๋ค.--%>
03: <% request.setCharacterEncoding("euc-kr"); %>
04: <html>
05: <head>
06: <title>๊ตฌ๊ตฌ๋จ</title>
07: </head>
883์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
08: <body>
09: <center>
10: <p>๊ตฌ๊ตฌ๋จ</p><hr/>
11: <table border='0' bgcolor='#aaaaaa' width='50%'>
12: <%
13: for( int i=0; i<10; i++){ //ํ(row)์ ๋ํ for
14: %><tr>
15: <%for( int j=0; j<10; j++){ //์ด(column)์ ๋ํ for
16: if(i==0){
17: if(j==0){
18: %><td bgcolor='#ffffaa'>X</td>
19: <%
20: }else{
21: %><td bgcolor='#ffffaa'><%= j %>๋จ</td>
22: <%
23: }
24: }else{
25: if(j==0){
26: %><td bgcolor='#ffffaa'><%= i %>๋จ</td>
27: <%
28: }else{
29: %><td bgcolor='<%=( i%2==0)?"#ddffaa":"#dddddd" %>'><%= i*j %></td>
30: <%
31: }
32: }
33: }
34: %></tr>
35: <%
36: }
37: %>
38: </table>
39: <a href='index.jsp'>HOME</a>
893์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ
40: </center>
41: </body>
42: </html>
11๋ฒ์งธ ์ค: ๊ฒฝ๊ณ์ ์ด ์๊ณ ๋ฐฐ๊ฒฝ์bgcolor์ด '#aaaaaa'์ด๋ฉด์ ์ ์ฒด ํ๋ฉด์ 50%๋ฅผ
์ฐจ์งํ๋ ํ ์ด๋ธ์ ๋ง๋ ๋ค.
13~14, 34๋ฒ์งธ ์ค: ํ ์ด๋ธ์ ํ(row)์ 10๊ฐ ๋ง๋ ๋ค. ํ์ <tr></tr>๋ก ๋ง๋ ๋ค.
15๋ฒ์งธ ์ค: <tr></tr> ์์ ์ด(column-<td></td>)์ 10๊ฐ ๋ง๋ ๋ค. <tr><td></
td></tr>๊ณผ ๊ฐ์ด <tr>์์ <td>๋ฅผ ์ ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
16~19๋ฒ์งธ ์ค: ์ฒซ ํ์ ์ฒซ ์ด(0,0 ์ )์์น์ X๋ฅผ ์ถ๋ ฅํ๋ค.
20~23๋ฒ์งธ ์ค: ์ฒซ ํ์ ๋ค๋ฅธ ์ด(0,1์ ~0,9์ )์๋ โ1๋จโ~โ9๋จโ์ ์ถ๋ ฅํ๋ค. ์ ๋ฆฌ
ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
X 1๋จ 2๋จ 3๋จ ... 9๋จ
25~27๋ฒ์งธ ์ค: 1ํ๋ถํฐ 9ํ์ ๋ํด ์ฒซ ์ด(j==0)์ 1๋จ~9๋จ์ ์ถ๋ ฅํ๋ค.
28~31๋ฒ์งธ ์ค: ์ฒซ ์ด์ ์ ์ธํ 1ํ๋ถํฐ 9ํ์ ๋ํด ํ๊ณผ ์ด์ ๊ณฑ(i=1~9, j=1~9)
์ผ๋ก ๊ตฌ๊ตฌ๋จ์ ๋ง๋ ๋ค. ๋ง์ฝ i=5๋ผ๋ฉด โ5๋จ 5 10 15 ...
45โ์ ๊ฐ์ด 5๋จ์ ์ถ๋ ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ ํ์๋จ์ด๋ฏ๋ก ์ ์ ๋ฐฐ๊ฒฝ์์
โ#ddddddโ๊ฐ ๋๋ค.
<% %>๋ ์ด๊ณ ๋ซ๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ต๋ค. ์๋ฐ์ฝ๋๋ ๋ฐ๋์ ์คํฌ๋ฆฝํธ๋ฆฟ ์์ญ์ ์์ด์ผ ํ๋ค. html
์์ญ์์ ๋ฌธ์์ด์ ์ถ๋ ฅํ ๋๋ ์ต์คํ๋ ์ (<%=%>)์ ์ฌ์ฉํ๋ค.
๊ทธ๋ฆผ 3-6 ๊ตฌ๊ตฌ๋จ ๊ฒฐ๊ณผํ๋ฉด
903์ฅ ์น ๊ฐ๋ฐ ํ๊ฒฝ