[JSP] Ajax
์๋ ํ์ธ์ !
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๋ณด๋ค ๋ณด์์ฑ ๋์ |