Study/JSP

[JSP] Ajax

hong- 2022. 11. 18. 13:42

์•ˆ๋…•ํ•˜์„ธ์š” !

JSP ๊ด€๋ จ ํ•™์Šต์ด ํ•„์š”ํ•˜๊ฒŒ ๋˜์–ด ๊ณต๋ถ€ ๊ฒธ ๊ธฐ๋ก์„ ์œ„ํ•ด ๋‹น๋ถ„๊ฐ„ ๊ด€๋ จ ํฌ์ŠคํŒ… ํ•  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค :)

๋จผ์ € ๋น„๋™๊ธฐ ํ†ต์‹ ์ธ AJAX์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค !

 

๐Ÿ™๐Ÿป AJAX : Asychronous Javascript and XML

 : ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„ ๊ฐ„ XML ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๋น„๋™๊ธฐ ํ†ต์‹ 

 

 ์‰ฝ๊ฒŒ ๋งํ•ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ†ตํ•ด ๋น„๋™๊ธฐ์‹์œผ๋กœ XML์„ ์ด์šฉํ•˜์—ฌ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๋Š” ๋ฐฉ์‹์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 ์ตœ๊ทผ์—๋Š” XML๋ณด๋‹ค JSON์„ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•˜๋Š”๋ฐ์š”

 

๐Ÿ’ก ์—ฌ๊ธฐ์„œ ๋น„๋™๊ธฐ์‹์ด๋ž€ ?

     ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ผ์ด ๋™์‹œ์ ์œผ๋กœ ๋ฐœ์ƒํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜๋ฉฐ ๋‹ค๋ฅธ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

 

๋น„๋™๊ธฐ๋ฐฉ์‹์€ ์›นํŽ˜์ด์ง€๋ฅผ Reload ํ•˜์ง€ ์•Š๊ณ ๋„ ๋ฐ์ดํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์–ด์„œ  AJAX๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„์— ์š”์ฒญํ•˜๋”๋ผ๋„ ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ์€ ๊ณ„์†ํ•ด์„œ ๋Œ์•„๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฆ‰, JSON ์ด๋‚˜ XML ํ˜•ํƒœ๋กœ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋ฐ›์•„ ๊ฐฑ์‹ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ทธ๋งŒํผ ์ž์›๊ณผ ์‹œ๊ฐ„์„ ์•„๋‚„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ“  AJAX  ํ•ต์‹ฌ ๊ธฐ์ˆ 

1) JavaScript, DOM

 

2) Fetch

 - Fetch๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํŽ˜์ด์ง€๋ฅผ ์ด๋™ํ•˜์ง€ ์•Š์•„๋„ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ฌ ์ˆ˜ ์žˆ์Œ

 - ์‚ฌ์šฉ์ž๊ฐ€ ํ˜„์žฌ ํŽ˜์ด์ง€์—์„œ ์ž‘์—…์„ ํ•˜๋Š” ๋™์•ˆ ์„œ๋ฒ„์™€ ํ†ต์‹ ์ด ๊ฐ€๋Šฅ

 - Fetch๋ฅผ ํ†ตํ•ด ํ•„์š” ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์™€ DOM์— ์ ์šฉ์‹œ์ผœ ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜์ง€ ์•Š๊ณ  ๊ธฐ์กด ํŽ˜์ด์ง€์—์„œ ํ•„์š” ๋ถ€๋ถ„๋งŒ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

 

๐Ÿ“  AJAX ๋™์ž‘๋ฐฉ์‹

 - ๋ธŒ๋ผ์šฐ์ €๋Š” AJAX ์š”์ฒญ์„ ๋‹ด๋‹นํ•˜๋Š” XMLHttpRequest ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 - ๋ธŒ๋ผ์šฐ์ €๋Š” ์ฝ˜ํ…์ธ ๋ฅผ ์ฒ˜๋ฆฌํ•˜์—ฌ ํŽ˜์ด์ง€์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

 

๐Ÿ“ AJAX ์žฅ๋‹จ์ 

[ AJAX ์žฅ์  ]

โ‘  ์›น ํŽ˜์ด์ง€ ์†๋„ ํ–ฅ์ƒ

โ‘ก ์„œ๋ฒ„์˜ ์ฒ˜๋ฆฌ๊ฐ€ ์™„๋ฃŒ๋˜์ง€ ์•Š์•„๋„ ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅ

โ‘ข ์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋งŒ ์ „์†กํ•˜๋ฉด ๋˜๋ฏ€๋กœ ์ฝ”๋“œ ์–‘ ๊ฐ์†Œ

โ‘ฃ ๊ธฐ์กด ์›น์—์„œ ๋ถˆ๊ฐ€๋Šฅํ–ˆ๋˜ ๋‹ค์–‘ํ•œ UI ๊ฐ€๋Šฅ

โ‘ค ์„œ๋ฒ„์—์„œ HTML์„ ์™„์„ฑํ•˜์—ฌ ๋ณด๋‚ด์ฃผ์ง€ ์•Š์•„๋„ ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Œ

 

[ AJAX ๋‹จ์  ]

โ‘  ํžˆ์Šคํ† ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ์•ˆ๋จ

โ‘ก ํŽ˜์ด์ง€๊ฐ€ ์ด๋™ํ•˜์ง€ ์•Š๋Š” ํ†ต์‹ ์ด๋ฏ€๋กœ ๋ณด์•ˆ ์ค‘์š”

โ‘ข ์—ฐ์†์œผ๋กœ ๋ฐ์ดํ„ฐ ์š”์ฒญํ•˜๋ฉด ์„œ๋ฒ„ ๋ถ€ํ•˜ ์ฆ๊ฐ€

โ‘ฃ XMLHttpRequest ๊ฐ์ฒด๋ฅผ ํ†ตํ•ด ํ†ต์‹ ํ•˜๊ฒŒ ๋˜๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ์•„๋ฌด๋Ÿฐ ์ง„ํ–‰ ์ •๋ณด๊ฐ€ ์ œ๊ณต๋˜์ง€ ์•Š์Œ

โ‘ค HTTP ํด๋ผ์ด์–ธํŠธ ๊ธฐ๋Šฅ, Charset ๊ธฐ๋Šฅ ํ•œ์ •์ 

โ‘ฅ ์Šคํฌ๋ฆฝํŠธ๋กœ ์ž‘์„ฑ๋˜๋ฏ€๋กœ ๋””๋ฒ„๊น…์ด ์–ด๋ ค์›€

โ‘ฆ Cross-Domain ๋ฌธ์ œ ๋ฐœ์ƒํ•˜์—ฌ ๋‹ค๋ฅธ ๋„๋ฉ”์ธ๊ณผ ํ†ต์‹  ๋ถˆ๊ฐ€๋Šฅ

 

๐Ÿ“ JQuery๋ฅผ ์ด์šฉํ•œ AJAX ์‚ฌ์šฉ

* JQuery๋ฅผ ์ด์šฉํ•œ AJAX
 - XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์ง์ ‘ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— JQuery๋ฅผ ์ด์šฉํ•˜๋ฉด ๊ฐ„๋‹จํ•˜๊ฒŒ ์„œ๋ฒ„์™€ ๋ฐ์ดํ„ฐ ํ†ต์‹  ๊ฐ€๋Šฅ
 - ํฌ๋กœ์Šค๋ธŒ๋ผ์šฐ์ง• ๋ฌธ์ œ๋ฅผ jQuery๊ฐ€ ์•Œ์•„์„œ ํ•ด๊ฒฐํ•ด์ฃผ๋ฉฐ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ํŽธ๋ฆฌ๊ธฐ๋Šฅ ์ œ๊ณต
$.ajax( {
    type: 'post',
    url: '/test',
    async: true,
    dataType: 'text',
    data: JSON.stringify({
    	"num" : num,
    	"name" : name }),
    dataSrc:
    success: function(result) {
    		 console.log(result) };
    error: function(request, status, error) {
    		~~ };
  });

(1) type : HTTP ์š”์ฒญ ๋ฐฉ์‹

(2) url : ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTTP ์š”์ฒญ์„ ๋ณด๋‚ผ ์„œ๋ฒ„์˜ URL ์ฃผ์†Œ

(3) async : ์š”์ฒญ์‹œ ๋™๊ธฐํ™” ์—ฌ๋ถ€ (๊ธฐ๋ณธ๊ฐ’ - true)

(4) dataType : ์‘๋‹ต ๋ฐ์ดํ„ฐ ํ˜•์‹

(5) data : HTTP ์š”์ฒญ๊ณผ ํ•จ๊ป˜ ์„œ๋ฒ„๋กœ ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ

(6) dataSrc : Ajax๋ฅผ ํ†ตํ•ด ๋ฐ›์•„์˜จ ๋ฐ์ดํ„ฐ ์ˆ˜์ • ๊ฐ€๋Šฅ

(7) success : ์ •์ƒ ์‘๋‹ต ์‹œ ์„ฑ๊ณต ์ฝœ๋ฐฑ

(8) error : ๋น„์ •์ƒ ์‘๋‹ต์‹œ ์—๋Ÿฌ ์ฝœ๋ฐฑ

 

๐Ÿ“  AJAX๋ฅผ ํ†ตํ•œ GET/POST ๋ฐฉ์‹

  GET ๋ฐฉ์‹ POST ๋ฐฉ์‹
์บ์‹œํ™” ์บ์‹œ ๊ฐ€๋Šฅ ์บ์‹œ ๋ถˆ๊ฐ€๋Šฅ
๋ธŒ๋ผ์šฐ์ € ํžˆ์Šคํ† ๋ฆฌ ํžˆ์Šคํ† ๋ฆฌ์— ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด ๊ธฐ๋ก ํžˆ์Šคํ† ๋ฆฌ์— ์ฟผ๋ฆฌ ๋ฌธ์ž์—ด ๊ธฐ๋ก x
๋ฐ์ดํ„ฐ ๊ธธ์ด ๋ฐ์ดํ„ฐ ๊ธธ์ด๊ฐ€ URL ์ฃผ์†Œ ๊ธธ์ด ์ด๋‚ด๋กœ ์ œํ•œ ์ œํ•œ x
๋ฐ์ดํ„ฐ ํƒ€์ž… ์˜ค์ง AScIi ๋ฌธ์ž ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋งŒ ์ „์†ก ๊ฐ€๋Šฅ ์ œํ•œ x
๋ณด์•ˆ์„ฑ ๋ฐ์ดํ„ฐ๊ฐ€ URL ์ฃผ์†Œ์— ํฌํ•จ๋˜์–ด ์ „์†ก๋˜๋ฏ€๋กœ
์•„๋ฌด๋‚˜ ๋ณผ ์ˆ˜ ์žˆ์–ด ๋ณด์•ˆ์— ์ทจ์•ฝ
๋ธŒ๋ผ์šฐ์ € ํžˆ์Šคํ† ๋ฆฌ์—๋„ ๊ธฐ๋ก๋˜์ง€ ์•Š๊ณ  ๋ฐ์ดํ„ฐ๊ฐ€
๋”ฐ๋กœ ์ „์†ก๋˜๋ฏ€๋กœ GET๋ณด๋‹ค ๋ณด์•ˆ์„ฑ ๋†’์Œ