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

[ jQuery ] ajax / ๋น„๋™๊ธฐ ํ†ต์‹ 

by haeun ํ•˜์€ 2022. 6. 15.
728x90

๐Ÿ“– AJAX(Asynchronous JavaScript And Xml)

๐Ÿ”น ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ XML์„ ์ด์šฉํ•œ ๋น„๋™๊ธฐ ํ†ต์‹  

โœ” ๋น ๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๋™์ ์ธ ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๊ฐœ๋ฐœ ๊ธฐ๋ฒ•

 

๐Ÿ“Œ ๋™๊ธฐ ํ†ต์‹ ์€ ๋™์‹œ์— ์—ฌ๋Ÿฌ ์ž‘์—…์„ ๋ชปํ•˜๊ณ  ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ๋‹ค๋ฅธ ์ž‘์—… ๋ชปํ•˜๊ณ  ์ˆœ์ฐจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ

๐Ÿ“Œ ๋น„๋™๊ธฐ ํ†ต์‹ ์€ ์š”์ฒญํ•˜๊ณ  ๊ธฐ๋‹ค๋ฆฌ์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ๋™์ž‘ ๊ฐ€๋Šฅ !

 

โœ… Ajax๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์˜์—ญ์—์„œ ์„œ๋ฒ„์™€ ํ†ต์‹ ํ•˜์—ฌ, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์›น ํŽ˜์ด์ง€์˜ ์ผ๋ถ€๋ถ„์—๋งŒ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.

์„œ๋ฒ„์™€ ์ฃผ๊ณ ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ ํ˜•ํƒœ  
JSON  
XML,XSLT,XMLHttpRequest ์›น ์„œ๋ฒ„์™€ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตํ™˜ํ•˜๊ณ  ์กฐ์ž‘
HTML(๋˜๋Š”XHTML) ๊ณผCSS ํ‘œํ˜„ ์ •๋ณด
DOM,์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋™์ ์ธ ํ™”๋ฉด ์ถœ๋ ฅ ๋ฐ ํ‘œ์‹œ ์ •๋ณด์™€์˜ ์ƒํ˜ธ์ž‘์šฉ
ํ…์ŠคํŠธ ํŒŒ์ผ ๋“ฑ  

Ajax ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์€ XML/XSLT ๋Œ€์‹  ๋ฏธ๋ฆฌ ์ •์˜๋œ HTML์ด๋‚˜ ์ผ๋ฐ˜ ํ…์ŠคํŠธ,JSON,JSON-RPC๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โ–ถ DHTML์ด๋‚˜LAMP์™€ ๊ฐ™์ด Ajax๋Š” ์ž์ฒด๊ฐ€ ํ•˜๋‚˜์˜ ํŠน์ •ํ•œ ๊ธฐ์ˆ ์„ ๋งํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ

     ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์ˆ ์˜ ๋ฌถ์Œ์„ ์ง€์นญํ•˜๋Š” ์šฉ์–ด์ด๋‹ค. 

๋”๋ณด๊ธฐ

์‹ค์ œ๋กœAFLAX์™€ ๊ฐ™์ด ์‚ฌ์‹ค์ƒ Ajax์— ๋ฐ”ํƒ•์„ ๋‘๊ณ  ์žˆ๋Š” ์œ ์‚ฌ/๋ณตํ•ฉ ๊ธฐ์ˆ ๋“ค์ด ์†์† ๋‚˜ํƒ€๋‚˜๊ณ  ์žˆ๋‹ค.

์ง€์›ํ•˜๋Š” ๋ธŒ๋ผ์šฐ์ €๋กœ๋Š”๋ชจ์งˆ๋ผ ํŒŒ์ด์–ดํญ์Šค,์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ,์˜คํŽ˜๋ผ,์‚ฌํŒŒ๋ฆฌ,๊ตฌ๊ธ€ ํฌ๋กฌ๋“ฑ

๋‹จ, ์˜คํŽ˜๋ผ๋Š” ํ˜„์žฌ XSL ํฌ๋งทํŒ… ๊ฐ์ฒด์™€ XSLT ๋ณ€ํ™˜์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

Ajax ์žฅ์  Ajax ๋‹จ์ 
์›น ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๋‹ค์‹œ ๋กœ๋”ฉํ•˜์ง€ ์•Š๊ณ ๋„
์›น ํŽ˜์ด์ง€์˜ ์ผ๋ถ€๋ถ„๋งŒ์„ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ๋‹ค.
ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๋Š”
ํด๋ผ์ด์–ธํŠธ ํ’€๋ง ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ
์„œ๋ฒ„ ํ‘ธ์‹œ ๋ฐฉ์‹์˜ ์‹ค์‹œ๊ฐ„ ์„œ๋น„์Šค๋Š” ๋งŒ๋“ค ์ˆ˜ ์—†๋‹ค.
์›น ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋œ ํ›„์— ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค ๋ฐ”์ด๋„ˆ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด๊ฑฐ๋‚˜ ๋ฐ›์„ ์ˆ˜ ์—†๋‹ค.
์›น ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋œ ํ›„์— ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค. ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํฌํ•จ๋œ ์„œ๋ฒ„๊ฐ€ ์•„๋‹Œ
๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ Ajax ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜๋Š” ์—†๋‹ค.
๋ฐฑ๊ทธ๋ผ์šด๋“œ ์˜์—ญ์—์„œ ์„œ๋ฒ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์˜ PC๋กœ Ajax ์š”์ฒญ์„ ๋ณด๋‚ผ ์ˆ˜๋Š” ์—†๋‹ค.
๐Ÿ“Œ ํด๋ผ์ด์–ธํŠธ ํ’€๋ง(client pooling)

์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์„œ๋ฒ„์—๊ฒŒ ์š”์ฒญํ•˜์—ฌ ์–ป๋Š” ๋ฐฉ์‹
์ด์— ๋ฐ˜ํ•ด ์„œ๋ฒ„ ํ‘ธ์‹œ(server push) ๋ฐฉ์‹์ด๋ž€ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•˜์ง€ ์•Š์•„๋„ ์„œ๋ฒ„๊ฐ€ ์•Œ์•„์„œ ์ž๋™์œผ๋กœ ํŠน์ • ์ •๋ณด๋ฅผ ์ œ๊ณต
ex) ์Šค๋งˆํŠธ ํฐ์—์„œ ๊ฐ์ข… ์•ฑ์ด ๋ณด๋‚ด๋Š” ํ‘ธ์‹œ ์•Œ๋ฆผ /์„œ๋ฒ„ ํ‘ธ์‹œ ๋ฐฉ์‹์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ

 

โœ… Ajax ํ”„๋ ˆ์ž„์›Œํฌ

Ajax๋ฅผ ์ด์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ์„ ์†์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฏธ๋ฆฌ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•ด ๋†“์€ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ

๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ.

 - Prototype

 - script.aculo.us

 - dojo

 - jQuery

 

์˜ˆ์‹œ ๐Ÿ”ฝ

$.ajax({
    url: " ์ฃผ์†Œ ", // ํด๋ผ์ด์–ธํŠธ๊ฐ€ HTTP ์š”์ฒญ์„ ๋ณด๋‚ผ ์„œ๋ฒ„์˜ URL ์ฃผ์†Œ
    data: { name: "์ด๋ฆ„" },  // HTTP ์š”์ฒญ๊ณผ ํ•จ๊ป˜ ์„œ๋ฒ„๋กœ ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ
    method: "GET",   // HTTP ์š”์ฒญ ๋ฉ”์†Œ๋“œ(GET, POST ๋“ฑ)
    dataType: "json" // ์„œ๋ฒ„์—์„œ ๋ณด๋‚ด์ค„ ๋ฐ์ดํ„ฐ์˜ ํƒ€์ž…
})
// HTTP ์š”์ฒญ์ด ์„ฑ๊ณตํ•˜๋ฉด ์š”์ฒญํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ done() ๋ฉ”์†Œ๋“œ๋กœ ์ „๋‹ฌ๋จ.
.done(function(json) {
    $("<h1>").text(json.title).appendTo("body");
    $("<div class=\"content\">").html(json.html).appendTo("body");
})
// HTTP ์š”์ฒญ์ด ์‹คํŒจํ•˜๋ฉด ์˜ค๋ฅ˜์™€ ์ƒํƒœ์— ๊ด€ํ•œ ์ •๋ณด๊ฐ€ fail() ๋ฉ”์†Œ๋“œ๋กœ ์ „๋‹ฌ๋จ.
.fail(function(xhr, status, errorThrown) {
    $("#text").html("์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.<br>")
    .append("์˜ค๋ฅ˜๋ช…: " + errorThrown + "<br>")
    .append("์ƒํƒœ: " + status);
})
// 
.always(function(xhr, status) {
    $("#text").html("์š”์ฒญ์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.");
});

์‹คํ–‰ ๐Ÿ”ฝ

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>jQuery๋ฅผ ์ด์šฉํ•œ ๋น„๋™๊ธฐ ํ†ต์‹  ๊ตฌํ˜„</title>
<script type="text/javascript" src="../js/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
/*
  AJAX(Asynchronous JavaScript And Xml) : ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ XML์„ ์ด์šฉํ•œ ๋น„๋™๊ธฐ ํ†ต์‹ 
 */
     $(document).ready(function(){
    	 //text ์ •๋ณด๋ฅผ ์ฝ์–ด ์˜ด
    	 $.ajax({
    		 url:'myString.jsp',
    		 success:function(param){//์„œ๋ฒ„์˜ ์‘๋‹ต์ด ์„ฑ๊ณตํ–ˆ์„ ๋•Œ ํ˜ธ์ถœ
    			 //์ „์†ก๋ฐ›์€ text๋ฅผ body์— ํ‘œ์‹œ
    			 $('body').append(param);
    		 }
    	 });
     });
</script>
</head>
<body>

</body>
</html>
<%@ page language="java" contentType="text/plain; charset=UTF-8"
    pageEncoding="UTF-8" trimDirectiveWhitespaces="true"%> 
<!-- contentType=plain์œผ๋กœ ๋ฐ”๊พธ๊ธฐ / ๊ณต๋ฐฑ ์ตœ๋Œ€ํ•œ ์ง€์›Œ์คŒ-->
Hello JSP!

 

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€