๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Spring

์„œ๋ธ”๋ฆฟ ์ถœ๋ ฅํ˜•์‹๊ณผ, ์ฟผ๋ฆฌ์ŠคํŠธ๋ง(GET)

by ๋„์บ๋ฆฌ๐Ÿฑ 2022. 8. 14.
๋ฐ˜์‘ํ˜•

 

#๏ธโƒฃ1๏ธโƒฃ Annotation์„ ์ด์šฉํ•œ URL๋งคํ•‘ 

Annotation ๊ด€๋ จ: https://bangu4.tistory.com/199

 

์ด๋ ‡๊ฒŒ Annotation์„ ์‚ฌ์šฉํ•ด์„œ, ๋งคํ•‘ ์ •๋ณด๋ฅผ ์ „๋‹ฌ/์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•˜๋‹ค.

 

Annotation์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” 

web.xml ํŒŒ์ผ์˜ <metadata-complete=”true”> ๋ถ€๋ถ„์„, <metadata-complete=”false”>๋กœ ๋ฐ”๊พธ์–ด์•ผ ํ•œ๋‹ค. 

 

์ด ๋ถ€๋ถ„์ด ๋ฌด์Šจ ์˜๋ฏธ ์ด๋ƒ๋ฉด, ์šฐ๋ฆฌ๊ฐ€ mapping ์ •๋ณด๋ฅผ ์„ค์ •ํ•  ๋•Œ, xml๋กœ๋„ ์„ค์ •ํ•  ์ˆ˜๋„ ์žˆ๊ณ  annotation์œผ๋กœ ํ•  ์ˆ˜๋„ ์žˆ๋Š”๋ฐ,

 <metadata-complete=”true”> ์ด๋ ‡๊ฒŒ ๋˜๋ฉด “๋ชจ๋“  ์„ค์ •์ด xml์— ์žˆ๋‹ค” ๋ผ๊ณ  ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด๊ณ ,

 <metadata-complete=”false”> ์ด๋ ‡๊ฒŒ ๋˜๋ฉด “์—ฌ๊ธฐ ์™ธ์—๋„ ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ์„ค์ •ํ•œ๊ฒŒ ์žˆ์œผ๋‹ˆ ์ฐพ์•„๋ด๋ผ” ๋ผ๋Š” ์˜๋ฏธ์ด๋‹ค.

 

์ด๋ ‡๊ฒŒ, mapping์„ 2๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ ๊ฒŒ ๋˜์—ˆ๋‹ค. ์–ด๋–ค ๋ฐฉ์‹์ด ๋” ์ข‹์„๊นŒ?

Annotation์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด ์ข‹๋‹ค. ์ฝ”๋”ฉ๋Ÿ‰์ด ์ ์–ด์„œ ์ข‹๊ธฐ๋„ ํ•œ๋ฐ,

๊ธฐ์—…ํ˜• ์•ฑ ๊ฐ™์€ ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ๋ช…์ด ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์—, ์„œ๋กœ ์—‰์ผœ์„œ xml์— ์ ‘๊ทผํ•˜๋ ค๋Š” ๊ฒƒ๋ณด๋‹ค ๋ถ„๋ฆฌ๋˜์–ด์„œ ์—…๋ฌด๋ฅผ ๋‚˜๋ˆ„์–ด ํ•˜๋ฉด ๋”์šฑ ์ข‹๋‹ค. 

๋งŒ์•ฝ xml๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค๋ฉด ๋ชจ๋‘ ์ด ๊ณต์œ  ํŒŒ์ผ์— ์ ‘๊ทผํ•˜๋ ค๊ณ  ํ•  ๊ฒƒ์ด๋‹ค. 

ํ•˜์ง€๋งŒ Annotation์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ์ž์˜ ์ผ์„ ๊ฐ์ž ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ข‹๋‹ค.

 

 

 

#๏ธโƒฃ2๏ธโƒฃ Servlet ์ถœ๋ ฅ ํ˜•์‹์˜ ์ดํ•ด

Html์—์„œ๋Š” markup ์–ธ์–ด๋ฅผ ํ†ตํ•ด์„œ ํ™”๋ฉด์— rendering ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

 

๋ธŒ๋ผ์šฐ์ €๋Š” ์ž์˜์ ์œผ๋กœ ํ•ด์„ํ•œ๋‹ค. ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•ด์•ผ ํ• ๊นŒ?

์–ด๋–ค ๋‚ด์šฉ์„ Clientํ•œํ…Œ ๋ณด๋‚ผ ๋•Œ์—๋Š”๋ณด๋‚ด๋Š” ๊ฒƒ์ด ์–ด๋–ค ๋ฌธ์„œ์ธ์ง€๋ฅผ ๋ฐํ˜€์ฃผ๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค

๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด  ์ž์˜์ ์œผ๋กœ ํ•ด์„ํ•˜๊ฒŒ ๋œ๋‹ค

์•„๋ฌด๊ฒƒ๋„ ์•Œ๋ ค์ฃผ์ง€ ์•Š์„ ๋•Œ, edge ๋ธŒ๋ผ์šฐ์ €๋Š” html ๋กœ ํ•ด์„ํ•˜๊ณ , chrome ๋ธŒ๋ผ์šฐ์ €๋Š” text๋กœ ํ•ด์„ํ•œ๋‹ค.

 

 

 

#๏ธโƒฃ3๏ธโƒฃ Servlet ์›น ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ํ•œ๊ธ€๊ณผ ์ฝ˜ํ…์ธ  ํ˜•์‹ ์ถœ๋ ฅํ•˜๊ธฐ

ํ•œ๊ธ€์ด ๊นจ์ง€๋Š” ์ด์œ , ํด๋ผ์ด์–ธํŠธ๋กœ ๋ณด๋‚ผ ๋•Œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์›น ์„œ๋ฒ„๋Š” ISO-8859-1์ด๋ผ๋Š” ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•œ๋‹ค. 

์ด๋ ‡๊ฒŒ ์ „๋‹ฌ๋˜๋ฉด ํด๋ผ์ด์–ธํŠธ๋Š” 1byte์”ฉ ์ชผ๊ฐœ์ ธ์„œ ๋ฐ›์•„์ง€๊ธฐ ๋•Œ๋ฌธ์—, ๋ฌผ์Œํ‘œ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

 

ํ•œ๊ธ€ ํ•˜๋‚˜๋ฅผ 2byte์”ฉ ๋ฌถ์–ด์„œ ์ „๋‹ฌํ•ด์•ผ ํ•˜๋Š”๋ฐ, ISO-8859-1๋ฐฉ์‹์€ 1byte์”ฉ ๋ณด๋‚ธ๋‹ค. 

๊ทธ๋ž˜์„œ, ์›น์„œ๋ฒ„๊ฐ€ 2byte์”ฉ ๋ฌถ์–ด์„œ ์ „๋‹ฌํ•˜๋Š” UTF-8 ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•ด์„œ ๋ณด๋‚ด๋ฉด, 

'ํด๋ผ์ด์–ธํŠธ๋Š” ๋‹ค๋ฅธ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹์ธ์ง€๋ผ “๋พฑ์€“๋ฟˆ” ์ด๋Ÿฐ ์‹์œผ๋กœ ๋ณด์ด๊ฒŒ ๋œ๋‹ค.

 

์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ ๊ฐ™์€ ๊ฒฝ์šฐ ๋ธŒ๋ผ์šฐ์ € ํ™”๋ฉด์— ์šฐํด๋ฆญ ํ•˜๋ฉด์„œ ์–ด๋–ค ์ธ์ฝ”๋”ฉ์„ ์“ธ์ง€ ๊ณ ๋ฅผ ์ˆ˜ ์žˆ๋Š”๋ฐ, 

๊ธฐ๋ณธ์ ์œผ๋กœ “ํ•œ๊ตญ์–ด”๋ผ๋Š” ๊ฒƒ์œผ๋กœ ๋˜์–ด์žˆ๋‹ค. ๊ทผ๋ฐ UTF-8๋กœ ๋ฐ”๊พธ๋ฉด ์ •์ƒ์ ์œผ๋กœ ํ•œ๊ธ€์ด ์ž˜ ๋ณด์ธ๋‹ค.

์ฆ‰ ๋ธŒ๋ผ์šฐ์ €์˜ ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹๋งŒ ์ œ๋Œ€๋กœ ์ž˜ ๋œ๋‹ค๋ฉด์•ˆ ๊นจ์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

“๋‚ด๊ฐ€ ์ง€๊ธˆ utf๋กœ ๋ณด๋‚ผ๊ฑด๋ฐํ•œ๊ธ€ ์ •์ƒ์ ์œผ๋กœ ๋ณด๋‚ผ ๊ฑด๋ฐ, ํ•œ๊ธ€ ํ•ด์„ํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ์ฝ”๋“œ ํ…Œ์ด๋ธ” ์ค‘์—์„œ, 

utf๋กœ ์ฝ์–ด์•ผ ๋ผ ํ•˜๋Š” ๊ฒƒ์„ ์‹ฌ์–ด ์ฃผ๋ฉด ๋œ๋‹ค.”

 

 

 

#๏ธโƒฃ4๏ธโƒฃ GET์š”์ฒญ๊ณผ ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง

์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์€ ์–ด๋–ป๊ฒŒ ์ฒ˜๋ฆฌํ•  ๊ฒƒ์ธ๊ฐ€?

์‚ฌ์šฉ์ž ์ž…๋ ฅ์ด๋ผ๊ณ  ํ•˜๋Š” ๊ฒƒ์€ ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ์š”์ฒญํ•  ๋•Œ, ์š”์ฒญํ•˜๋Š” ๊ณผ์ •์—์„œ ์ž…๋ ฅ์ด ์ด๋ฃจ์–ด์ง„๋‹ค

๊ทธ๋ž˜์„œ ์ž…๋ ฅ๊ณผ ์š”์ฒญ์€ ํ•˜๋‚˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

http://localhost/hello?cnt=3 ?cnt=3์„ Query String์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

์ด ์ดํ›„์—๋Š” ์ € “cnt”๋ผ๋Š” ๊ฐ‘์„ ๋ฐ˜๋“œ์‹œ ๋ฐ›๊ฒŒ ๋˜์–ด์žˆ๋‹ค. 

์ด ๋ถ€๋ถ„์— ํ•ด๋‹นํ•˜๋Š” ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์ด ์ „๋‹ฌ๋˜์ง€ ์•Š์œผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚œ๋‹ค(Error code: 500).

 

 

 

#๏ธโƒฃ5๏ธโƒฃ GET์š”์ฒญ๊ณผ ์ฟผ๋ฆฌ ์ŠคํŠธ๋ง- ๊ธฐ๋ณธ๊ฐ’ ์‚ฌ์šฉํ•˜๊ธฐ

์ฟผ๋ฆฌ ์ŠคํŠธ๋ง์œผ๋กœ cnt ๊ฐ’์ด ์•ˆ ์ฃผ์–ด์งˆ ๋•Œ, ๋””ํดํŠธ ๊ฐ’์œผ๋กœ ์˜ค๋ฅ˜๊ฐ€ ์•ˆ๋‚˜๊ฒŒ๋” ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?

 

์•„๋ž˜ 4๊ฐ€์ง€ ๊ฒฝ์šฐ๋ฅผ ๋ณด๋ฉด, ์–ด๋–ป๊ฒŒ cnt ๊ฐ’์ด ์ฒ˜๋ฆฌ๋ ๊นŒ?

http://.../hello?cnt=3 “3”
http://.../hello?cnt= “”
http://.../hello? Null
http://.../hello null

๊ทธ๋ž˜์„œ ์ž„์‹œ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ null์ฒดํฌ์™€ ๋นˆ๋ฌธ์ž์—ด ์ฒดํฌ๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค.

( ์ž„์‹œ ๋ณ€์ˆ˜๋ฅผ ์“ธ ๋•Œ, temp ๋ณด๋‹ค ๊ธฐ์กด ๋ณ€์ˆ˜ ์ด๋ฆ„๋ช…์— ์–ธ๋”๋ฐ”๋ฅผ ๋ถ™์ธ ํ˜•ํƒœ๋กœ ์“ฐ์ž!)

 

 

์ฃผ์†Œ๋ฅผ, hyperlink ํ†ตํ•ด์„œ ์ „๋‹ฌํ•  ๋•Œ ์ด๋ ‡๊ฒŒ html ์—์„œ ์ˆ˜์ •์„ ํ•œ๋‹ค.

 

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€