98
Hanbit eBook Realtime 18 ์กฐํšจ์€ ์ง€์Œ JSP ๋ฐ”์ด๋ธ” STEP 01 JSP ์‹œ์ž‘๊ณผ ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•

Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

Hanbit eBook

Realtime 18

์กฐํšจ์€ ์ง€์Œ

JSP ๋ฐ”์ด๋ธ”STEP 01

JSP ์‹œ์ž‘๊ณผ ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•

Page 2: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

JSP ๋ฐ”์ด๋ธ”STEP 01: JSP ์‹œ์ž‘๊ณผ ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์ถ•

Page 3: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

์ง€์€์ด_ ์กฐํšจ์€

์•Œ๊ณ ๋ฆฌ์ฆ˜/์ตœ์ ํ™”๋ฅผ ์ด์šฉํ•œ ๊ฒŒ์ž„ ์—”์ง„, ์ฆ๊ถŒ/์ฃผ์‹ ๋ถ„์„ ์—”์ง„ , 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])๋กœ ๋ณด๋‚ด์ฃผ์„ธ์š”.

ํ•œ๋น›๋ฏธ๋””์–ด(์ฃผ)๋Š” ์—ฌ๋Ÿฌ๋ถ„์˜ ์†Œ์ค‘ํ•œ ๊ฒฝํ—˜๊ณผ ์ง€์‹์„ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Page 4: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

๋Œ€์ƒ ๋…์ž ๋ฐ ์‚ฌ์šฉ ํˆด

์ดˆ๊ธ‰ ์ดˆ์ค‘๊ธ‰ ์ค‘๊ธ‰ ์ค‘๊ณ ๊ธ‰ ๊ณ ๊ธ‰

โ— JDK 7.X : http://www.oracle.com/technetwork/java/index.html

โ— Apache Tomcat : http://tomcat.apache.org/

โ— ์ดํด๋ฆฝ์Šค : http://www.eclipse.org

Page 5: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

ํ•œ๋น› eBook ๋ฆฌ์–ผํƒ€์ž„

ํ•œ๋น› eBook ๋ฆฌ์–ผํƒ€์ž„์€ IT ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ eBook ์ž…๋‹ˆ๋‹ค.

์š”์ฆ˜ IT ์—…๊ณ„์—๋Š” ํ•˜๋ฃจ๊ฐ€ ๋ฉ€๋‹ค ํ•˜๊ณ  ์ˆ˜๋งŽ์€ ๊ธฐ์ˆ ์ด ๋‚˜ํƒ€๋‚˜๊ณ  ์‚ฌ๋ผ์ ธ ๊ฐ‘๋‹ˆ๋‹ค. ์ธํ„ฐ๋„ท์„

์•„๋ฌด๋ฆฌ ๋’ค์ ธ๋„ ์กฐ๊ธˆ์ด๋‚˜๋งˆ ์ •๋ฆฌ๋œ ์ •๋ณด๋ฅผ ์ฐพ๋Š” ๊ฒƒ๋„ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ž˜ ์ •๋ฆฌ๋˜์–ด

์ฑ…์œผ๋กœ ๋‚˜์˜ค๊ธฐ๊นŒ์ง€๋Š” ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์กฐ๊ธˆ์ด๋ผ๋„ ๋” ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ

๋น ๋ฅด๊ฒŒ ์–ป์„ ์ˆ˜ ์žˆ์„๊นŒ์š”? ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๋‚จ๋ณด๋‹ค ์กฐ๊ธˆ ๋” ๋นจ๋ฆฌ ๊ฒฝํ—˜ํ•˜๊ณ  ์Šต๋“ํ•œ ์ง€์‹์„ ๊ณต

์œ ํ•˜๊ณ  ๋ฐœ์ „์‹œ์ผœ ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ์„๊นŒ์š”? ์„ธ์ƒ์—๋Š” ์ˆ˜๋งŽ์€ ์ข…์ด์ฑ…์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ข…

์ด์ฑ…์„ ๊ทธ๋Œ€๋กœ ์˜ฎ๊ธด ์ „์ž์ฑ…๋„ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ „์ž์ฑ…์—๋Š” ์ „์ž์ฑ…์— ์ ํ•ฉํ•œ ์ฝ˜ํ…์ธ ์™€ ์ „์ž์ฑ…

์˜ ํŠน์„ฑ์„ ์‚ด๋ฆฐ ํ˜•์‹์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ•œ๋น›์ด ์ง€๊ธˆ ์ƒ๊ฐํ•˜๊ณ  ์ถ”๊ตฌํ•˜๋Š”, ๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ๋ฆฌ์–ผํƒ€์ž„ ์ „์ž์ฑ…์€ ์ด๋ ‡์Šต๋‹ˆ๋‹ค.

1. eBook Only - ๋น ๋ฅด๊ฒŒ ๋ณ€ํ™”ํ•˜๋Š” IT ๊ธฐ์ˆ ์— ๋Œ€ํ•ด ํ•ต์‹ฌ์ ์ธ ์ •๋ณด๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

500ํŽ˜์ด์ง€ ๊ฐ€๊นŒ์šด ๋ถ„๋Ÿ‰์˜ ์ž˜ ์ •๋ฆฌ๋œ ๋„์„œ(์ข…์ด์ฑ…)๊ฐ€ ์•„๋‹ˆ๋ผ, ํ•ต์‹ฌ์ ์ธ ๋‚ด์šฉ์„ ๋น ๋ฅด๊ฒŒ

์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด ์กฐ๊ธˆ์€ ๊ฑฐ์น ์ง€๋งŒ 100ํŽ˜์ด์ง€ ๋‚ด์™ธ์˜ ์ „์ž์ฑ… ์ „์šฉ์œผ๋กœ ๊ฐœ๋ฐœํ•œ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

๋…์ž์—๊ฒŒ๋Š” ์ƒˆ๋กœ์šด ์ •๋ณด๋ฅผ ๋นจ๋ฆฌ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ ๋˜๊ณ , ์ž์‹ ์ด ๋จผ์ € ๊ฒฝํ—˜ํ•œ ์ง€์‹๊ณผ ์ •๋ณด๋ฅผ

์ฑ…์œผ๋กœ ํŽด๋‚ด๊ณ  ์‹ถ์ง€๋งŒ ๋„ˆ๋ฌด ๋ฐ”๋น ์„œ ์—„๋‘๋ฅผ ๋ชป ๋‚ด์‹œ๋Š” ์„ ๋ฐฐ, ์ „๋ฌธ๊ฐ€, ๊ณ ์ˆ˜๋ถ„์—๊ฒŒ๋Š” ๋ณด๋‹ค ์‰ฝ๊ฒŒ

์ง‘ํ•„ํ•˜์‹ค ๊ธฐํšŒ๊ฐ€ ๋˜๋ฆฌ๋ผ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ์ƒˆ๋กœ์šด ์ •๋ณด์™€ ์ง€์‹์„ ๋น ๋ฅด๊ฒŒ ์ „๋‹ฌํ•˜๊ธฐ ์œ„ํ•ด

O'Reilly์˜ ์ „์ž์ฑ… ๋ฒˆ์—ญ ์„œ๋น„์Šค๋„ ์ค€๋น„ ์ค‘์ด๋ฉฐ, ์กฐ๋งŒ๊ฐ„ ์„ ๋ณด์ผ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

2. ๋ฌด๋ฃŒ๋กœ ์—…๋ฐ์ดํŠธ๋˜๋Š”, ์ „์ž์ฑ… ์ „์šฉ ์„œ๋น„์Šค์ž…๋‹ˆ๋‹ค.

์ข…์ด์ฑ…์œผ๋กœ๋Š” ๊ธฐ์ˆ ์˜ ๋ณ€ํ™” ์†๋„๋ฅผ ๋”ฐ๋ผ์žก๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฑ…์ด ์ผ์ •ํ•œ ๋ถ„๋Ÿ‰ ์ด์ƒ์œผ๋กœ

์ง‘ํ•„๋˜๊ณ  ์ •๋ฆฌ๋˜์–ด ๋‚˜์˜ค๋Š” ๋™์•ˆ ๊ธฐ์ˆ ์€ ์ด๋ฏธ ๋ณ€ํ•ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ž์ฑ…์œผ๋กœ ์ถœ๊ฐ„๋œ ์ดํ›„์—๋„

๋ฒ„์ „ ์—…์„ ํ†ตํ•ด ์ค‘์š”ํ•œ ๊ธฐ์ˆ ์  ๋ณ€ํ™”๊ฐ€ ์žˆ๊ฑฐ๋‚˜, ์ €์ž(์—ญ์ž)์™€ ๋…์ž๊ฐ€ ์†Œํ†ตํ•˜๋ฉด์„œ ๋ณด์™„๋˜๊ณ 

๋ฐœ์ „๋œ ๋…ธํ•˜์šฐ๊ฐ€ ์ •๋ฆฌ๋˜๋ฉด ๊ตฌ๋งคํ•˜์‹  ๋ถ„๊ป˜ ๋ฌด๋ฃŒ๋กœ ์—…๋ฐ์ดํŠธํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

Page 6: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

3. ๋…์ž์˜ ํŽธ์˜๋ฅผ ์œ„ํ•˜์—ฌ, DRM-Free๋กœ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๊ตฌ๋งคํ•œ ์ „์ž์ฑ…์„ ๋‹ค์–‘ํ•œ IT๊ธฐ๊ธฐ์—์„œ ์ž์œ ๋กญ๊ฒŒ ํ™œ์šฉํ•˜์‹ค ์ˆ˜ ์žˆ๋„๋ก DRM-Free PDF ํฌ๋งท์œผ๋กœ

์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋…์ž ์—ฌ๋Ÿฌ๋ถ„๊ณผ ํ•œ๋น›์ด ์ƒ๊ฐํ•˜๊ณ  ์ถ”๊ตฌํ•˜๋Š” ์ „์ž์ฑ…์„ ๋งŒ๋“ค์–ด ๋‚˜๊ฐ€๊ธฐ ์œ„ํ•ด,

๋…์ž ์—ฌ๋Ÿฌ๋ถ„์ด ์–ธ์ œ ์–ด๋””์„œ ์–ด๋–ค ๊ธฐ๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜์‹œ๋”๋ผ๋„ ํŽธ๋ฆฌํ•˜๊ฒŒ ์ „์ž์ฑ…์„ ๋ณด์‹ค ์ˆ˜ ์žˆ๋„๋ก

ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค.

4. ์ „์ž์ฑ… ํ™˜๊ฒฝ์„ ๊ณ ๋ คํ•œ ์ตœ์ ์˜ ํ˜•ํƒœ์™€ ๋””์ž์ธ์— ๋‹ด๊ณ ์ž ๋…ธ๋ ฅํ–ˆ์Šต๋‹ˆ๋‹ค.

์ข…์ด์ฑ…์„ ๊ทธ๋Œ€๋กœ ์˜ฎ๊ฒจ ๋†“์•„ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง€๊ณ  ์ฝ๊ธฐ ํž˜๋“  ์ „์ž์ฑ…์ด ์•„๋‹ˆ๋ผ, ์ „์ž์ฑ…์˜ ํ™˜๊ฒฝ์—

๊ฐ€๋Šฅํ•œ ์ตœ์ ํ™”ํ•˜์—ฌ ์พŒ์ ํ•œ ๊ฒฝํ—˜์„ ๋“œ๋ฆฌ๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค. ๋งํฌ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ ๊ทน์ ์œผ๋กœ ์ด์šฉํ• 

์ˆ˜ ์žˆ์Œ์€ ๋ฌผ๋ก ์ด๊ณ  ๊ธ€์ž ํฌ๊ธฐ๋‚˜ ํ–‰๊ฐ„, ์—ฌ๋ฐฑ ๋“ฑ์„ ์ „์ž์ฑ…์— ๊ฐ€์žฅ ์ตœ์ ํ™”๋œ ํ˜•ํƒœ๋กœ ์ƒˆ๋กญ๊ฒŒ

๋””์ž์ธํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์•ž์œผ๋กœ๋„ ๋…์ž ์—ฌ๋Ÿฌ๋ถ„์˜ ์ถฉ๊ณ ์— ๊ท€ ๊ธฐ์šธ์ด๋ฉฐ ์ง€์†ํ•ด์„œ ๋ฐœ์ „์‹œ์ผœ ๋‚˜๊ฐ€๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ๋ณด์‹œ๋Š” ์ „์ž์ฑ…์— ์†Œ์œ ๊ถŒํ•œ์„ ํ‘œ์‹œํ•œ ๋ฌธ๊ตฌ๊ฐ€ ์—†๊ฑฐ๋‚˜ ํƒ€์ธ์˜ ์†Œ์œ ๊ถŒํ•œ์„ ํ‘œ์‹œํ•œ

๋ฌธ๊ตฌ๊ฐ€ ์žˆ๋‹ค๋ฉด ์œ„๋ฒ•ํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ณ  ๊ณ„์‹ค ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์ €์ž‘๊ถŒ๋ฒ•์— ์˜ํ•ด

๋ถˆ์ด์ต์„ ๋ฐ›์œผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์–‘ํ•œ ๊ธฐ๊ธฐ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ํ•œ๋น›๋ฏธ๋””์–ด ์‚ฌ์ดํŠธ์—์„œ ๊ตฌ์ž…ํ•˜์‹  ํ›„์—๋Š” ํšŸ์ˆ˜์—

๊ด€๊ณ„์—†์ด ๋‹ค์šด๋ฐ›์œผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ•œ๋น›๋ฏธ๋””์–ด ์ „์ž์ฑ…์€ ์ธ์‡„, ๊ฒ€์ƒ‰, ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์ด๊ธฐ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์ „์ž์ฑ…์€ ์˜คํƒˆ์ž ๊ต์ •์ด๋‚˜ ๋‚ด์šฉ์˜ ์ˆ˜์ •๋ณด์™„์ด ์ด๋ค„์ง€๋ฉด ์—…๋ฐ์ดํŠธ ๊ด€๋ จ ๊ณต์ง€๋ฅผ ์ด๋ฉ”์ผ๋กœ

์•Œ๋ ค๋“œ๋ฆฌ๋ฉฐ, ๊ตฌ๋งคํ•˜์‹  ์ „์ž์ฑ…์˜ ์ˆ˜์ •๋ณธ์€ ๋ฌด๋ฃŒ๋กœ ๋‚ด๋ ค๋ฐ›์œผ์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ํŠน๋ณ„ํ•œ ๊ถŒํ•œ์€ ํ•œ๋น›๋ฏธ๋””์–ด ์‚ฌ์ดํŠธ์—์„œ ๊ตฌ์ž…ํ•˜์‹  ๋…์ž์—๊ฒŒ๋งŒ ์ œ๊ณต๋˜๋ฉฐ, ๋‹ค๋ฅธ

์‚ฌ๋žŒ์—๊ฒŒ ์–‘๋„๋‚˜ ์ด์ „๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Page 7: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

์ฐจ๋ก€

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

Page 8: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

0 3 ์›น ๊ฐœ๋ฐœ ํ™˜๊ฒฝ 68

3.1 ์ปจํ…์ŠคํŠธ 68

3.2 ๊ฒฝ๋กœ 70

3.3 ์ •์ ๋ฌธ์„œ์™€ ๋™์ ๋ฌธ์„œ 71

3.4 JSP ์Šคํฌ๋ฆฝํŠธ ์š”์†Œ 79

Page 9: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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

๋ฒ”์œ„

Page 10: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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)

Page 11: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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)

โ— ์ผ๋ฐ˜๊ฒŒ์‹œํŒ, ๋‹ต๋ณ€ํ˜• ๊ฒŒ์‹œํŒ, ํŽ˜์ด์ง•, ์„œ์นญ, ์ผ์ •๊ด€๋ฆฌ, ์ž…์‚ฌ์ง€์›๊ด€๋ฆฌ, ์ธ์‚ฌ๊ด€๋ฆฌ

Page 12: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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 ๊ตฌ์„ฑ์š”์†Œ๋‹ค.

Page 13: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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, ์„œ

๋น„์Šค ๊ฐ์ฒด๋„ ๋ฐฐ์šด๋‹ค.

Page 14: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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์—์„œ ์‚ฌ

์šฉํ•˜๋Š” ๊ธฐ๋ณธ ๋ฌธ๋ฒ•๋„ ํ•จ๊ป˜ ์„ค๋ช…ํ•œ๋‹ค.

Page 15: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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์ด๋ผ๋Š” ๊ฐ’์ด ๋„์ถœ๋˜์–ด ๋ฌธ์ œ๊ฐ€ ํ•ด

๊ฒฐ๋˜์—ˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ๋‹ฌ๋ผ๊ณ  ์š”์ฒญํ•˜๋Š” ์ชฝ์ด ํด๋ผ์ด์–ธํŠธ, ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์„œ ๋Œ๋ ค๋ณด๋‚ด๋Š” ์ชฝ

์ด ์„œ๋ฒ„๋‹ค.

Page 16: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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๋ผ๊ณ  ํ•œ๋‹ค.

Page 17: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต

์—๋Š” ๋ฉ”์‹œ์ง€๊ฐ€ ํฌํ•จ๋˜์–ด ์š”์ฒญ๊ณผ ์‘๋‹ต์— ๋Œ€ํ•œ ์ƒํƒœ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. ์„œ๋ฒ„๋Š” ์š”์ฒญ

ํ—ค๋” ๋ฉ”์‹œ์ง€๋ฅผ ์ฝ๊ณ  ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ ์‚ฌํ•ญ์„ ํŒŒ์•…ํ•œ ๋‹ค์Œ ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์‘๋‹ต

์„ ๋ณด๋‚ธ๋‹ค. ์‘๋‹ตํ—ค๋”์—๋Š” ์š”์ฒญ์ด ์ œ๋Œ€๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ๋Š”์ง€, ์‘๋‹ตํ•ด์ฃผ๋Š” ์„œ๋ฒ„์˜ ๊ฐ„๋‹จํ•œ

์ •๋ณด, ์‘๋‹ต ๋‚ด์šฉ์˜ ํƒ€์ž… ๋ฐ ์ธ์ฝ”๋”ฉ, ์‘๋‹ต ํฌ๊ธฐ ๋“ฑ์ด ํฌํ•จ๋œ๋‹ค. ์‘๋‹ตํ—ค๋”๊ฐ€ ๋ธŒ๋ผ์šฐ์ €

Page 18: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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/๋ฒ„์ „ ์‘๋‹ต์ƒํƒœ์ฝ”๋“œ ์ƒํƒœโ€™๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ๋‹ค์Œ

์ค„์€ ์„œ๋ฒ„, ์ปจํ…ํŠธํƒ€์ž…, ์‘๋‹ตํฌ๊ธฐ, ์‘๋‹ต์‹œ๊ฐ„ ๋“ฑ์„ ๋ณด์—ฌ์ค€๋‹ค.

Page 19: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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>์™€ ๊ฐ™์€ โ€˜์‹œ์ž‘ํƒœ๊ทธ-

Page 20: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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

Page 21: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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๋Š” ๊ฐ€๋” ์‚ฌ์šฉํ•œ๋‹ค.

Page 22: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

141์žฅ JSP ๋ฒ”์œ„์™€ JSP ์‹คํ–‰ํ™˜๊ฒฝ

ํ‘œ 1-1 HTTP ์ฃผ์š” ์š”์ฒญ ๋ฉ”์„œ๋“œ

์š”์ฒญ ๋ฉ”์„œ๋“œ ์„ค ๋ช…

GET

์„œ๋ฒ„์— ์š”์ฒญ ๋ฉ”์„œ๋“œ๋ฅผ ๋ณด๋‚ผ ๋•Œ ํ—ค๋“œ์—๋งŒ ๋‚ด์šฉ์ด ์žˆ๊ณ  ๋ฐ”๋””์—๋Š” ์ „์†ก๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค. ์š”์ฒญ์„ ๊ฐ„

๋‹จํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์œผ๋กœ ํ—ค๋“œ์— ํฌํ•จ๋˜๋Š” ๋‚ด์šฉ์˜ ํฌ๊ธฐ๋„ ์ œํ•œ์ ์ด๋‹ค. ๋˜ํ•œ URL์— ์ „์†ก๋ฐ

์ดํ„ฐ๊ฐ€ ๋…ธ์ถœ๋  ์ˆ˜ ์žˆ๋‹ค. HTTP Server๋Š” GET๊ณผ HEAD๋ฅผ ๋ฐ˜๋“œ์‹œ ์ง€์›ํ•ด์•ผ ํ•œ๋‹ค.

POST์„œ๋ฒ„์— ๋ณด๋‚ผ ์ „์†ก๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๋””์— ๋„ฃ์–ด์„œ ์š”์ฒญํ•œ๋‹ค. <FORM>์„ ์ด์šฉํ•˜์—ฌ ์ „์†ก๋ฐ์ดํ„ฐ๋ฅผ ์„œ

๋ฒ„๋กœ ๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์ „์†ก๋ฐ์ดํ„ฐ ํฌ๊ธฐ์— ์ œ์•ฝ์ด ์—†๋‹ค.

HEAD์‘๋‹ต์šฉ์œผ๋กœ ์‚ฌ์šฉ๋˜๋ฉฐ ํ—ค๋“œ์—๋งŒ ๋‚ด์šฉ์ด ์žˆ๋‹ค. ๋ฐ”๋”” ์—†์ด ํ—ค๋“œ์ •๋ณด, ์บ์‹œ์ •๋ณด๋ฅผ ํด๋ผ์ด์–ธํŠธ์—

๋ณด๋‚ผ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

โ–  ๋™๊ธฐ / ๋น„๋™๊ธฐ(Synchronous / Asynchronous) ์ „์†ก

์š”์ฒญ ํ›„ ์‘๋‹ต์ด ์˜ฌ ๋•Œ๊นŒ์ง€ ๋‹ค๋ฅธ ์š”์ฒญ์„ ํ•  ์ˆ˜ ์—†๋Š” ์ „์†ก์„ ๋™๊ธฐ๋ผ๊ณ  ํ•œ๋‹ค. ์ƒˆ๋กœ์šด

์š”์ฒญ์„ ํ•˜๋ฉด ํ•œ ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๋‹ค์‹œ ๋ถˆ๋Ÿฌ์˜จ๋‹ค. ์‘๋‹ตํ•  ๋•Œ๋งˆ๋‹ค ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๋‹ค์‹œ

๋ถˆ๋Ÿฌ์˜ค๊ณ  ํ”„๋กœ๊ทธ๋ ˆ์Šค๋ฐ”๊ฐ€ ์ž‘๋™ํ•œ๋‹ค. ์š”์ฒญํ•œ ๋‹ค์Œ ์‘๋‹ต์„ ๋ฐ›์•„ ํ™”๋ฉด์„ ๋ณด์—ฌ์ฃผ๋ฉด์„œ

๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›๋Š” ๋“ฑ ๋‹ค๋ฅธ ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋Š” ์ „์†ก์ƒํƒœ๋ฅผ

๋น„๋™๊ธฐ๋ผ๊ณ  ํ•œ๋‹ค. ๋น„๋™๊ธฐ ์ƒํƒœ์—์„œ ์„œ๋ฒ„๋Š” ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ์ „์†ก๋˜๋„๋ก ์‘๋‹ตํ•œ๋‹ค.

1991๋…„๋ถ€ํ„ฐ ๋น„๋™๊ธฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๊ณ , 1995๋…„ ์ดํ›„ AJAXAsynchronous Javascript

And XML๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค.

Page 23: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

151์žฅ JSP ๋ฒ”์œ„์™€ JSP ์‹คํ–‰ํ™˜๊ฒฝ

๊ทธ๋ฆผ 1-12 ์ƒˆ๋กœ์šด ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต

WebBrowser

WebBrowser

WebBrowser

WebBrowser

Background

Request ํ›„ Response๊ฐ€ ์˜ฌ๋•Œ๊นŒ์ง€๋‹ค๋ฅธ ์š”์ฒญ์„ ํ•  ์ˆ˜ ์—†๋‹ค. : Synchronous์ƒˆ๋กœ์šด ์š”์ฒญ์„ ํ•˜๋ฉด ์‘๋‹ต์œผ๋กœ ์ „์ฒด ํŽ˜์ด์ง€๊ฐ€๋ถˆ๋ ค์ง„๋‹ค.

Request ํ›„ Response๊ฐ€ ์˜ค๋Š” ๋„์ค‘์—๋„๋‹ค๋ฅธ ์š”์ฒญ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. : Asynchronousํ˜„์žฌ ๋ณด์—ฌ์ฃผ๋Š” ํ™”๋ฉด(์‘๋‹ต)์„ ๋ฐฉํ•ดํ•˜์ง€ ์•Š๊ณ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

โ–  ํŒŒ๋ผ๋ฏธํ„ฐ(parameter, ์ฟผ๋ฆฌ์ŠคํŠธ๋ง)

ํด๋ผ์ด์–ธํŠธ์—์„œ ์„œ๋ฒ„๋กœ ์š”์ฒญ์„ ํ•  ๋•Œ ์š”์ฒญ๊ฒฝ๋กœ ์ด์™ธ์—๋„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ

๋‹ค. ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ๋Š” โ€˜ํ‚ค=๋ฐธ๋ฅ˜โ€™ํ˜•ํƒœ๋กœ ์ „์†ก๋œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 'command=

detail&id=cust090'๊ณผ ๊ฐ™์ด ์„œ๋ฒ„๋กœ ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ๋ผ๊ณ  ํ•œ๋‹ค. GET ๋ฐฉ

์‹์€ ํ—ค๋“œ์— ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋‹ค. ํ—ค๋“œ๋ถ€๋ถ„์€ ์›น๊ฒฝ๋กœ์— ๋…ธ์ถœ๋˜๋ฏ€๋กœ ์›น ๋ธŒ๋ผ

์šฐ์ €์˜ ๊ฒฝ๋กœ ๋ถ€๋ถ„์—์„œ๋„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” โ€˜?โ€™๋กœ ์‹œ์ž‘์„ ํ‘œ์‹œํ•˜๊ณ  ํŒŒ๋ผ๋ฏธํ„ฐ

๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ๋ฉด โ€˜&โ€™๋ฅผ ์ด์šฉํ•˜์—ฌ ์—ฐ๊ฒฐํ•œ๋‹ค. ํ—ค๋“œ ๊ธธ์ด๋Š” ์ œํ•œ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ํŒŒ๋ผ๋ฏธํ„ฐ

ํฌ๊ธฐ์—๋„ ์ œํ•œ์ด ์žˆ๋‹ค. POST ๋ฐฉ์‹์€ ๋ฐ”๋””์— ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ํฌํ•จ๋˜๋ฏ€๋กœ ๊ฒฝ๋กœ์— ํŒŒ๋ผ

๋ฏธํ„ฐ๊ฐ€ ๋…ธ์ถœ๋˜์ง€ ์•Š๋Š”๋‹ค. ํŒŒ๋ผ๋ฏธํ„ฐ์˜ ํฌ๊ธฐ์—๋„ ์ œํ•œ์ด ์—†๋‹ค.

Page 24: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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

Page 25: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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๋Š” ์š”์ฒญ์— ๋Œ€ํ•œ ์‘๋‹ต๋งŒ ํ•œ๋‹ค.

Page 26: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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

๊ฐ€ ์›น ๋ธŒ๋ผ์šฐ์ €๋กœ ๋ณด๋‚ธ๋‹ค.

Page 27: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค๋Š” ์ ๋„ ์•Œ์•„๋‘์ž.

Page 28: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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๊ฐ€ ์‚ญ์ œ, ์‚ฝ์ž…, ๋ณ€๊ฒฝ์ธ์ง€ ํ™•์ธํ•˜๊ณ  ์š”์ฒญ๋ณ„

๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค.

Page 29: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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์„ ๋ฐ›

์•„์„œ ํ™”๋ฉด์— ์ถœ๋ ฅํ•œ๋‹ค.

Page 30: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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( ) ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ๋กœ์ง์„ ์‹คํ–‰ํ•œ

Page 31: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

Page 32: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

241์žฅ JSP ๋ฒ”์œ„์™€ JSP ์‹คํ–‰ํ™˜๊ฒฝ

โ–  ์›น ์ปดํฌ๋„ŒํŠธ

์ปจํ…Œ์ด๋„ˆ์—์„œ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ํ•„์š”ํ•œ ๊ทœ์น™์„ ์ค€์ˆ˜ํ•œ ์›น ํ”„๋กœ๊ทธ๋žจ ๋ฌถ์Œ์„ ์›น ์ปด

ํฌ๋„ŒํŠธ๋ผ๊ณ  ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ปดํ“จํ„ฐ์˜ ๋งˆ๋”๋ณด๋“œ๋Š” ์—ฌ๋Ÿฌ ์นด๋“œ๋ฅผ ๊ฝ‚์„ ์ˆ˜ ์žˆ๋Š” ๊ตฌ๋ฉ

(์Šฌ๋กฏ)์ด ์žˆ๊ณ , ๊ฐ ์นด๋“œ๋Š” ์ •ํ•ด์ง„ ๋ชฉ์ ์ด ์žˆ๋‹ค. ๋ชฉ์ ์„ ์ด๋ฃจ๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋ถ€์†ํ’ˆ์œผ

๋กœ ์—ฌ๋Ÿฌ ์นด๋“œ๋ฅผ ๋งŒ๋“ ๋‹ค. JSP๋‚˜ ์„œ๋ธ”๋ฆฟ์€ ๋ถ€์†ํ’ˆ์—, ์›น ์ปดํฌ๋„ŒํŠธ๋Š” ๊ฐ ์นด๋“œ์— ํ•ด๋‹น

ํ•œ๋‹ค. ๊ฐ ์นด๋“œ๋Š” ๋งˆ๋”๋ณด๋“œ์— ๊ฝ‚ํ˜€์•ผ ์‹คํ–‰๋œ๋‹ค. VGA ์นด๋“œ๋ฅผ ๊ฝ‚์•„์•ผ ํ™”๋ฉด์ด ๋‚˜์˜ค๋ฉฐ,

์‚ฌ์šด๋“œ ์นด๋“œ๋ฅผ ๊ฝ‚์•„์•ผ ์†Œ๋ฆฌ๊ฐ€ ๋‚˜์˜จ๋‹ค. ์นด๋“œ๋ฅผ ๋งˆ๋”๋ณด๋“œ์— ๊ฝ‚์„ ๋•Œ๋Š” ์Šฌ๋กฏ์˜ ์•”์ˆ˜

๊ฐ€ ๋งž์•„์•ผํ•œ๋‹ค. ์Šฌ๋กฏ ์„ค์น˜ ์‹œ ๋ฐ˜๋“œ์‹œ ์ด ๊ทœ์น™์„ ์ง€์ผœ์•ผ ํ•˜๋Š”๋ฐ, ์›น ์ปดํฌ๋„ŒํŠธ์—์„œ๋“œ

API๋ผ๋Š” ๊ทœ์น™์„ ๋ฐ˜๋“œ์‹œ ์ง€์ผœ์•ผํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ์€ ์›น ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“œ

๋Š” ๋ฐฉ๋ฒ•, ์›น ์ปดํฌ๋„ŒํŠธ์™€ ์›น ์ปจํ…Œ์ด๋„ˆ ์‚ฌ์ด์˜ ๊ทœ์น™์„ ๋ฐฐ์šฐ๋Š” ๊ฒƒ์ด๋ผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

๊ทธ๋ฆผ 1-20 ์›น ์ปดํฌ๋„ŒํŠธ

interface = slot

(๊ทœ์น™์„ ์ง€ํ‚ค๋„๋ก

๊ฐ•์ œ์„ฑ์ด ์žˆ๋‹ค. = API

Web Component = Sound Card

(๊ฝ‚์•„์•ผ ์†Œ๋ฆฌ๊ฐ€ ๋‚˜์˜จ๋‹ค.)

Web Component = VGA Card

(๊ฝ‚์•„์•ผ ํ™”๋ฉด์ด ๋‚˜์˜จ๋‹ค.)

Web Component = Mother Board

(์—ฌ๋Ÿฌ ์นด๋“œ๋ฅผ ๊ฝ‚์„ ์ˆ˜ ์žˆ๋‹ค.)

Page 33: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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

Page 34: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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 ์• ํ”Œ

๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„์™€ ๊ฐ™์€ ์˜๋ฏธ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

Page 35: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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์™€ ์„œ๋ธ”๋ฆฟ์ด ๋‹ด๋‹นํ•œ๋‹ค. ์š”์ฒญ์„ ๋ฐ›์•„ ๋น„์ฆˆ๋‹ˆ์Šค ๋ ˆ

์ด์–ด์— ์ •๋ณด๋ฅผ ์š”์ฒญํ•œ๋‹ค. ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์•„ ์š”์ฒญํ•œ ํ™”๋ฉด์„ ๋™์ ์œผ๋กœ ๋งŒ๋“ค๊ณ , ์š”์ฒญํ•œ

Page 36: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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ํ‹ฐ์–ด์ผ ๋•Œ๋Š” ์›น ์„œ๋ฒ„์™€ ์• ํ”Œ

๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„๊ฐ€ ๋ฌผ๋ฆฌ์ ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง„ ํ‹ฐ์–ด๊ฐ€ ๋˜๋ฏ€๋กœ ๋ ˆ์ด์–ด๋ฅผ ํ‹ฐ์–ด๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.

Page 37: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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, ๋ฐ์ดํ„ฐ ์ „์†ก ๊ฐ์ฒด)

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํ…Œ์ด๋ธ”(์—”ํ‹ฐํ‹ฐ)์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ์ฒด๋กœ ํ…Œ์ด๋ธ”์˜ ์ปฌ๋Ÿผ๋“ค์„ ์ผ๋Œ€์ผ๋กœ

Page 38: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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

๋กœ ๋ Œ๋”๋ง).

โ‘ฅ ๋ธŒ๋ผ์šฐ์ €๋กœ ์š”์ฒญํ–ˆ๋˜ ํ™”๋ฉด์„ ๋ณด๋‚ด ์‘๋‹ตํ•œ๋‹ค.

Page 39: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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

Page 40: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ํ•œ ์›น ์„œ๋ฒ„๋ฅผ ๋‹ค๋ฃฌ๋‹ค.

Page 41: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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

Page 42: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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 ๊ฐœ๋ฐœ

Page 43: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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 ๊ฐœ๋ฐœ

Page 44: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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 ๊ตฌ์„ฑ #

Page 45: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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

Page 46: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

382์žฅ JSP ์‹คํ–‰ํ™˜๊ฒฝ

2. ๋ฉ”๋‰ด๋ฐ”์—์„œ [DOWNLOADS]-[Java for Developers]๋ฅผ ์„ ํƒํ•œ๋‹ค.

3. Java์˜ [DOWNLOAD] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค.

Page 47: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

392์žฅ JSP ์‹คํ–‰ํ™˜๊ฒฝ

4. [Accept License Agreement]๋ฅผ ์ฒดํฌํ•œ ํ›„, ์ž์‹ ์˜ PC์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์šด์˜์ฒด

์ œ์— ๋งž๋Š” JDK๋ฅผ ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค.

5. ๋‹ค์šด๋กœ๋“œํ•œ ํŒŒ์ผ์„ ์‹คํ–‰ํ•œ๋‹ค.

Page 48: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

402์žฅ JSP ์‹คํ–‰ํ™˜๊ฒฝ

6. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™”๋ฉด์ด ๋‚˜ํƒ€๋‚˜๋ฉด, [Change] ๋ฒ„ํŠผ์„ ์„ ํƒํ•˜์—ฌ, ์„ค์น˜ํ•˜๊ธฐ ์›ํ•˜๋Š” ์œ„

์น˜๋ฅผ ์ง€์ •ํ•œ๋‹ค.

ํ•„์ž๋Š” โ€œC\Javaโ€์— ์„ค์น˜ํ•  ๊ฒƒ์ด๋‹ค.

7. JDK๊ฐ€ ์„ค์น˜๋˜๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด JRE๋ฅผ ์„ค์น˜ ๊ด€๋ จ ์ฐฝ์ด ๋ณด์—ฌ์งˆ ๊ฒƒ์ด๋‹ค. [Change]

๋ฒ„ํŠผ์„ ์„ ํƒํ•˜์—ฌ ์›ํ•˜๋Š” ์œ„์น˜์— ์ €์žฅํ•œ๋‹ค. ํ•„์ž๋Š” โ€œC:\Java\jreโ€์— ์„ค์น˜ํ•  ๊ฒƒ์ด๋‹ค.

Page 49: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

412์žฅ JSP ์‹คํ–‰ํ™˜๊ฒฝ

8. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฐฝ์ด ๋‚˜ํƒ€๋‚˜๋ฉด JDK ์„ค์น˜๊ฐ€ ๋๋‚œ ๊ฒƒ์ด๋‹ค.

์ด์ œ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์„ค์ •ํ•˜๊ณ , ์„ค์น˜๊ฐ€ ์ œ๋Œ€๋กœ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ด๋ณด์ž.

9. [์‹œ์ž‘]-[์ œ์–ดํŒ]-[์‹œ์Šคํ…œ]์„ ์„ ํƒํ•œ๋‹ค(๋˜๋Š” [์‹œ์ž‘]-[์ปดํ“จํ„ฐ]์—์„œ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ

๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ [์†์„ฑ]์„ ์„ ํƒํ•œ๋‹ค).

Page 50: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

422์žฅ JSP ์‹คํ–‰ํ™˜๊ฒฝ

10. '์ œ์–ดํŒ ํ™ˆ' ์ฐฝ์—์„œ [์„ค์ • ๋ณ€๊ฒฝ]์„ ํด๋ฆญํ•˜๋ฉด ์‹œ์Šคํ…œ ์ฐฝ์ด ๋‚˜ํƒ€๋‚œ๋‹ค.

11. ์‹œ์Šคํ…œ ์ฐฝ์—์„œ [๊ณ ๊ธ‰] ํƒญ์— ์žˆ๋Š” [ํ™˜๊ฒฝ ๋ณ€์ˆ˜]๋ฅผ ํด๋ฆญํ•œ๋‹ค.

12. ์‹œ์Šคํ…œ ๋ณ€์ˆ˜์—์„œ [์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ] ๋ฒ„ํŠผ์„ ์„ ํƒํ•˜์—ฌ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ์ž…๋ ฅํ•œ๋‹ค. ์ƒˆ ์‹œ

์Šคํ…œ ๋ณ€์ˆ˜์— โ€˜๋ณ€์ˆ˜์ด๋ฆ„โ€™๊ณผ โ€˜๋ณ€์ˆ˜๊ฐ’โ€™์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•œ๋‹ค.

โ— ๋ณ€์ˆ˜ ์ด๋ฆ„: JAVA_HOME

Page 51: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

432์žฅ JSP ์‹คํ–‰ํ™˜๊ฒฝ

โ— ๋ณ€์ˆ˜๊ฐ’: C:\Java\jdk1.7.0_15

13. JAVA_HOME ๋ณ€์ˆ˜๋ฅผ ์ ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋ฅผ ํด๋ฆญํ•˜๊ณ  [ํŽธ์ง‘] ๋ฒ„ํŠผ์„

๋ˆŒ๋Ÿฌ, โ€˜Pathโ€™ ๊ฐ’์— ๋‹ค์Œ์„ ์ถ”๊ฐ€ํ•œ๋‹ค.

โ— ๋ณ€์ˆ˜ ์ด๋ฆ„: Path

โ— ๋ณ€์ˆ˜๊ฐ’: %JAVA_HOME%\bin;

Page 52: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

442์žฅ JSP ์‹คํ–‰ํ™˜๊ฒฝ

14. Java Library๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ [์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ ๋‹ค์Œ, CLASSPATH

๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค.

โ— ๋ณ€์ˆ˜์ด๋ฆ„: CLASSPATH

โ— ๋ณ€์ˆ˜๊ฐ’: .;

15. ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์ •ํ™•ํ•˜๊ฒŒ ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ๋ช…๋ นํ”„๋กฌํ”„ํŠธ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

[๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ]-[์‹œ์ž‘]-[๋ณด์กฐํ”„๋กœ๊ทธ๋žจ]-[๋ช…๋ น ํ”„๋กฌํ”„ํŠธ] ๋˜๋Š” [์‹œ์ž‘]-[์‹คํ–‰]์—

์„œ โ€˜cmd' ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•œ๋‹ค.

16. ์ง€๊ธˆ๊นŒ์ง€ ์„ค์น˜ํ•œ ์ž๋ฐ” ๋ฒ„์ „์ด ๋งž๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

C:\>java -version // ์ž…๋ ฅ ํ›„ Enter

17. ํ™˜๊ฒฝ์„ค์ •์ด ์ด์ƒ ์—†์ด ์ž˜ ์ ์šฉ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

C:\>javap java.lang.Object // ์ž…๋ ฅ ํ›„ Enter

Page 53: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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]๋ฅผ ํด๋ฆญํ•˜์—ฌ ์‹คํ–‰ ํŒŒ์ผ์„ ๋‹ค์šด๋ฐ›๋Š”๋‹ค.

Page 54: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

462์žฅ JSP ์‹คํ–‰ํ™˜๊ฒฝ

3. ๋ฐ›์€ ํŒŒ์ผ์„ ์‹คํ–‰ํ•œ๋‹ค. ์„ค์น˜์ฐฝ์ด ๋‚˜ํƒ€๋‚˜๋ฉด [Next] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ผ

์ด์„ผ์Šค์ฐฝ์ด ๋ณด์—ฌ์ง€๋Š”๋ฐ, [I Agree] ๋ฒ„ํŠผ์„ ์„ ํƒํ•˜์—ฌ ๋ผ์ด์„ผ์Šค๋ฅผ ์–ป๋Š”๋‹ค.

4. โ€˜Choose Comprenetsโ€™ ์ฐฝ์ด ๋‚˜ํƒ€๋‚˜๋ฉด, ์˜ต์…˜์„ ๋ชจ๋‘ ์„ ํƒํ•œ ๋‹ค์Œ [Next] ๋ฒ„ํŠผ

์„ ํด๋ฆญํ•œ๋‹ค.

5. โ€˜Configurationโ€™ ์ฐฝ์ด ๋‚˜ํƒ€๋‚˜๋ฉด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์˜ต์…˜์„ ์„ค์ •ํ•œ๋‹ค.

โ— HTTP/1.1 Connector Port: 8080

โ— User Name: admin

Page 55: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

472์žฅ JSP ์‹คํ–‰ํ™˜๊ฒฝ

โ— Password: 11111111

6. โ€˜Java Virtual Machineโ€˜ ์ฐฝ์ด ๋‚˜ํƒ€๋‚˜๋ฉด, JRE ์œ„์น˜๋ฅผ ์„ ํƒํ•œ๋‹ค.

โ— C:\Java\jre7

7. โ€˜Choose Install Locationโ€™ ์ฐฝ์ด ๋‚˜ํƒ€๋‚˜๋ฉด, Apache Tomcat์„ ์„ค์น˜ํ•  ํด๋”

๋ฅผ ์„ ํƒํ•œ๋‹ค. ํด๋” ์ด๋ฆ„์— ๊ณต๋ฐฑ์ด ๋“ค์–ด๊ฐ€์ง€ ์•Š๊ฒŒ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค. ์„ค์ •์ด ๋๋‚˜๋ฉด

[Install] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ ์„ค์น˜๋ฅผ ์ง„ํ–‰ํ•œ๋‹ค.

Page 56: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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 ์‹คํ–‰ ์ƒํƒœ

Page 57: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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]๋ฅผ

ํด๋ฆญํ•œ๋‹ค.

Page 58: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

502์žฅ JSP ์‹คํ–‰ํ™˜๊ฒฝ

2. ์‚ฌ์šฉํ•˜๋Š” ์šด์˜์ฒด์ œ๊ฐ€ 32bit์ธ์ง€ 64bit์ธ์ง€ ํ™•์ธํ•œ ๋‹ค์Œ ์ดํด๋ฆฝ์Šค๋ฅผ ๋‚ด๋ ค๋ฐ›์ž.

์—ฌ๊ธฐ์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” 32bit ๊ธฐ์ค€์œผ๋กœ ์ง„ํ–‰ํ•œ๋‹ค.

โ— Eclipse IDE for Java EE Developers. 221MB [Windows 32 Bit]๋ฅผ ์„ ํƒ

ํ•œ๋‹ค.

3. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™”๋ฉด์ด ๋‚˜ํƒ€๋‚˜๋ฉด ๋…น์ƒ‰ ํ™”์‚ดํ‘œ๋ฅผ ํด๋ฆญํ•œ๋‹ค.

Page 59: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

512์žฅ JSP ์‹คํ–‰ํ™˜๊ฒฝ

4. ์••์ถ•๋˜์–ด ์žˆ๋Š” ์ดํด๋ฆฝ์Šค ํŒŒ์ผ์„ ์‚ฌ์šฉํ•  ์œ„์น˜์— ํ‘ผ๋‹ค. ํ•„์ž๋Š” ๋‹ค์Œ ์œ„์น˜์— ์••์ถ•

์„ ํ’€์—ˆ๋‹ค.

โ— ์ดํด๋ฆฝ์Šค ํŒŒ์ผ ์••์ถ•ํ•ด์ œ ์œ„์น˜: C:\Java\

5. ์ดํด๋ฆฝ์Šค๊ฐ€ ์„ค์น˜๋œ ํด๋”(C:\Java\eclipse)์—์„œ โ€˜eclipse.exeโ€™๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ์ด

ํด๋ฆฝ์Šค๋ฅผ ์‹คํ–‰ํ•˜๋ฉด workspace๋ฅผ ์ž…๋ ฅํ•˜๋ผ๋Š” ํ™”๋ฉด์ด ๋‚˜ํƒ€๋‚œ๋‹ค. ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘

์„ฑํ•  ์œ„์น˜๋ฅผ ์ž…๋ ฅํ•œ ๋‹ค์Œ [OK] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค.

โ— Workspace : C:\exam\workspace

6. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ™”๋ฉด์ด ๋‚˜์˜ค๋ฉด ์ดํด๋ฆฝ์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์„ค์น˜๋œ ๊ฒƒ์ด๋‹ค.

Page 60: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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

Page 61: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

532์žฅ JSP ์‹คํ–‰ํ™˜๊ฒฝ

Web Project]๋ฅผ ์„ ํƒํ•œ๋‹ค.

4. โ€˜Dynamic Web Projectโ€™ ์ฐฝ์ด ๋‚˜ํƒ€๋‚˜๋ฉด, ExamWebApplication ํ”„๋กœ์ ํŠธ

๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  [New Runtime] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ

Apache Tomcat 7.0์„ ์ ์šฉํ•œ๋‹ค.

โ— Project name: ExamWebApplication

Page 62: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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 ์„ ํƒ

Page 63: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

552์žฅ JSP ์‹คํ–‰ํ™˜๊ฒฝ

7. ๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ํ™˜๊ฒฝ์ด ์„ค์ •๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ ํ›„ [Finish]๋ฒ„ํŠผ์„ ์„ ํƒํ•˜์—ฌ ์›น

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑํ•œ๋‹ค.

Page 64: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

562์žฅ JSP ์‹คํ–‰ํ™˜๊ฒฝ

8. ๋‹ค์Œ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ƒ์„ฑ๋˜์—ˆ๋‹ค๋ฉด ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ƒ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด๋‹ค.

9. ์ด์ œ ๋งŒ๋“ค์–ด์ง„ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ, index.jsp ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

โ— [ExamWebApplication]-[WebContent]์—์„œ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ ํด๋ฆญ ํ•œ

ํ›„ [New]-[JSP file]์„ ์„ ํƒํ•œ๋‹ค.

Page 65: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

572์žฅ JSP ์‹คํ–‰ํ™˜๊ฒฝ

10. File name์— โ€˜index.jsp'๋ฅผ ์ž…๋ ฅํ•˜์—ฌ jspํŒŒ์ผ์„ ์ƒ์„ฑํ•œ ํ›„, [Finish] ๋ฒ„ํŠผ์„

ํด๋ฆญํ•˜์—ฌ ํŒŒ์ผ ์ƒ์„ฑ์„ ์™„๋ฃŒํ•œ๋‹ค.

11. ์ƒ์„ฑ๋œ ํŒŒ์ผ์˜ <body>์™€ </body> ์‚ฌ์ด์— ๋‹ค์Œ ๋‚ด์šฉ์„ ์ž…๋ ฅํ•˜๊ณ  ์ €์žฅํ•œ๋‹ค.

โ— ์ž…๋ ฅํ•  ๋‚ด์šฉ: JSP ํŽ˜์ด์ง€ ํ…Œ์ŠคํŠธ์ž…๋‹ˆ๋‹ค.

12. ์ƒ์„ฑ๋œ ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์‹คํ–‰ํ•ด๋ณธ๋‹ค.

โ— [ExamWebApplication]์—์„œ ๋งˆ์šฐ์Šค ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ ํ›„, [Run As]-

[Run on Server] ์„ ํƒํ•œ๋‹ค.

Page 66: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

582์žฅ JSP ์‹คํ–‰ํ™˜๊ฒฝ

13. ์‹คํ–‰ํ•  ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ ํƒํ•œ๋‹ค. [Next]๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค.

Page 67: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

592์žฅ JSP ์‹คํ–‰ํ™˜๊ฒฝ

14. Configured ์˜์—ญ์— ์žˆ๋Š” ์ ์šฉํ•  project๋ฅผ ์„ ํƒํ•œ ๋‹ค์Œ [Finish] ๋ฒ„ํŠผ์„ ๋ˆŒ

๋Ÿฌ ์‹คํ–‰ํ•œ๋‹ค.

15. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋ณด์ธ๋‹ค๋ฉด ์ดํด๋ฆฝ์Šค์— Apache Tomcat์ด ์ •์ƒ์ ์œผ๋กœ ์„ค

์ •๋œ ๊ฒƒ์ด๋‹ค.

Page 68: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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

Page 69: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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]๋ฅผ ์„ ํƒ

Page 70: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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>

Page 71: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

632์žฅ JSP ์‹คํ–‰ํ™˜๊ฒฝ

2. CustomerBean ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ ๋‹ค.

ํŒจํ‚ค์ง€Package์™€ ํด๋ž˜์Šค ์ด๋ฆ„(Name)์„ ์ž…๋ ฅํ•˜๊ณ  [Finish] ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ๋‹ค.

โ— Package: com.hanb

โ— Name: CustUserBean

Page 72: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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]

๋ฅผ ํด๋ฆญํ•œ๋‹ค.

Page 73: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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>ํƒœ

๊ทธ๋ฅผ ์„ ํƒํ•  ์ˆ˜ ์žˆ๋‹ค.

Page 74: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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>

Page 75: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

672์žฅ JSP ์‹คํ–‰ํ™˜๊ฒฝ

</html>

7. ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰ํ•œ ํ›„ id, name, height๋ฅผ ์ž…๋ ฅํ•˜๊ณ  custshow.jsp๋กœ ์ „์†กํ•œ๋‹ค.

โ— โ€œhttp://localhost:8080/fristProject/cust.jspโ€ ์ฃผ์†Œ๊ฐ€ ๋งž๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

id, name, height ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ setProperty๋กœ ๋ฐ›์•„์„œ getProperty๋กœ ์ถœ๋ ฅํ•œ๋‹ค.

Page 76: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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/

Page 77: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

693์žฅ ์›น ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

๊ทธ๋ฆผ 3-2 ์ดํด๋ฆฝ์Šค ์›น ๊ฐœ๋ฐœํ™˜๊ฒฝ

์ปจํ…์ŠคํŠธ hello001์— ์žˆ๋Š” JSP, ์„œ๋ธ”๋ฆฟ, ํด๋ž˜์Šค, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ

๋กœ ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์‹คํ–‰ํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค.

hello001 : ์ปจํ…์ŠคํŠธ

+ HTML, JSP, Image๋ฅผ ๋†“๋Š”๋‹ค.

+ WEB-INF ๋””๋ ‰ํ„ฐ๋ฆฌ

+ lib : ~.jar๋กœ ๋๋‚˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•จ

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ํด๋ž˜์Šค์˜ ๋ฌถ์Œ์ž„

+ classes : ํŒจํ‚ค์ง€ ์ปดํŒŒ์ผ๋œ ํด๋ž˜์Šค(~.class). ์„œ๋ธ”๋ฆฟ(Servlet)

์›น ํด๋ž˜์Šค๋Š” ๋ฐ˜๋“œ์‹œ ํŒจํ‚ค์ง€๊ฐ€ ์žˆ์–ด์•ผ ํ•จ

+ web.xml : ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ •์„ ์œ„ํ•œ XMl ํŒŒ์ผ

web.xml์€ ์ปจํ…์ŠคํŠธ ํ™˜๊ฒฝ์„ ์„ค๋ช…ํ•˜๋Š” ๋ฐฐํฌ์„ค๋ช…์ž(DDDeployment Descriptor)๋กœ, ์‹ค

ํ–‰๋  ๋•Œ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์ฝ๋Š”๋‹ค.

Page 78: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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

Page 79: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋‹ค.

Page 80: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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>๊นŒ์ง€ ์žˆ๋‹ค. ๋‹ค์Œ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์ •

์ ๋ฌธ์„œ์™€ ๋™์ ๋ฌธ์„œ์˜ ์ฐจ์ด๋ฅผ ์ข€ ๋” ์ดํ•ดํ•ด ๋ณด์ž.

Page 81: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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>

Page 82: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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>

Page 83: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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์”ฉ ์˜ฌ๋ฆฌ๋ฉด์„œ ์‹คํ–‰ํ•˜๊ณ 

Page 84: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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>

Page 85: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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: %>

Page 86: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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

Page 87: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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) ๋ฉ”์„œ๋“œ ์‹คํ–‰๊ฒฐ๊ณผ๋‚˜ ์—ฐ์‚ฐ๊ฒฐ๊ณผ๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜

Page 88: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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: %>

Page 89: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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)%><%์™€ ๋™์ผํ•˜๋‹ค.

Page 90: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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.*;

Page 91: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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:

Page 92: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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()๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

๊ตฌ๊ตฌ๋‹จ์„ ์ด์šฉํ•˜์—ฌ ์ •์ ๋ฌธ์„œ(ํด๋ผ์ด์–ธํŠธ์ชฝ ๋ฌธ์„œ)์™€ ๋™์ ๋ฌธ์„œ(์„œ๋ฒ„์ชฝ ๋ฌธ์„œ)์˜ ์ฐจ์ด

Page 93: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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>

Page 94: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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>

Page 95: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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>

Page 96: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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>

Page 97: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

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 ๊ตฌ๊ตฌ๋‹จ ๊ฒฐ๊ณผํ™”๋ฉด

Page 98: Hanbit eBook Realtime 18 - cfile1.uf.tistory.com

903์žฅ ์›น ๊ฐœ๋ฐœ ํ™˜๊ฒฝ