[JSP] AJAX

UnKnown12Β·2022λ…„ 10μ›” 23일
0

JSP

λͺ©λ‘ 보기
5/7

πŸ“Œ AJAX

Asynchronous Javascript And XML

  • ν•˜λ‚˜μ˜ 전체 νŽ˜μ΄μ§€ λ‚΄λΆ€μ—μ„œ
    [ν•„μš”ν•œ 데이터] 만 일뢀 νŽ˜μ΄μ§€(μ˜μ—­) μ—μ„œ μ‘λ‹΅λ°›λŠ” 방식
    ( 이것은 비동기방식 이라고 ν•œλ‹€ )

  • 일뢀 νŽ˜μ΄μ§€(μ˜μ—­) 만 λ°±κ·ΈλΌμš΄λ“œ 둜 μ„œλ²„μ™€ ν†΅μ‹ ν•˜μ—¬
    κ·Έ κ²°κ³Όλ₯Ό μΌλΆ€λΆ„μ—λ§Œ ν‘œμ‹œν•˜λŠ” 방식

  • μ„œλ²„μ™€ 데이터λ₯Ό μ£Όκ³  받을 λ•Œ XML λ₯Ό μ‚¬μš©ν•œλ‹€κ³  ν•΄μ„œ
    AJA'X' 라고 λΆˆλ¦°λ‹€.
    ( ❗ XML μ˜μ™Έμ—λ„ HTML, TXT , JSON 파일이 κ°€λŠ₯ν•œλ°
    μ΅œκ·Όμ—λŠ” JSON 파일 주둜 μ‚¬μš©ν•΄ 데이터λ₯Ό μ£Όκ³  λ°›λŠ”λ‹€ )

❗ AJAX μž₯점

  1. μ›Ή νŽ˜μ΄μ € 전체λ₯Ό μƒˆλ‘œκ³ μΉ¨ ν•˜μ§€ μ•Šμ•„λ„ μ›Ή νŽ˜μ΄μ§€ 일뢀뢄을 κ°±μ‹ ν•  μˆ˜μžˆλ‹€.

  2. μ›Ή νŽ˜μ΄μ§€κ°€ λ‘œλ“œ 된 후에 μ„œλ²„λ‘œ 데이터 μš”μ²­μ„ λ³΄λ‚΄κ±°λ‚˜ 받을 수 μžˆλ‹€.

  3. λ‹€μ–‘ν•œ UI κ΅¬ν˜„μ΄ κ°€λŠ₯ν•˜λ‹€

❗ AJAX 단점

  1. νŽ˜μ΄μ§€ 이동이 없기에 νžˆμŠ€ν† λ¦¬ 관리가 λΆˆκ°€λŠ₯ν•˜λ‹€.

  2. 반볡적인 데이터 μš”μ²­μ΄ 있으면 λŠλ €μ§€κ±°λ‚˜ μž‘λ™μ΄ λ©ˆμΆ˜λ‹€.

πŸ“Œ 동기 vs 비동기 방식

❗ 동기적 ν”„λ‘œκ·Έλž˜λ°

  • ν”„λ‘œκ·Έλž˜λ° 둜직이 'ν•œ λ°©ν–₯' 으둜 λ˜μ–΄μžˆμœΌλ©°
    λ‹€μŒ 업무λ₯Ό μ§„ν–‰ν•˜κΈ° μœ„ν•΄μ„œλŠ” 이전 업무 μˆ˜ν–‰μ΄ λ°˜λ“œμ‹œ ν•„μš”ν•˜λ‹€

  • 일뢀 μ˜μ—­μ΄λΌλ„ 데이터 λ³€ν™”λ₯Ό ν•˜κΈ° μœ„ν•΄μ„œλŠ”
    전체 νŽ˜μ΄μ§€λ₯Ό μƒˆλ‘œκ³ μΉ¨ν•˜μ—¬ 전체λ₯Ό μ„œλ²„μ— μž¬μš”μ²­ ν•΄μ•Όν•œλ‹€.

❗ 비동기적 ν”„λ‘œκ·Έλž˜λ°

  • ν•œ λ°©ν–₯에 업무가 μ—¬λŸ¬ 갈래둜 λ˜μ–΄μžˆμœΌλ©°
    이전 업무 μˆ˜ν–‰μ΄ 없어도 νŠΉμ • μ—…λ¬΄λ§Œ λ”°λ‘œ μˆ˜ν–‰μ‹œν‚¬ 수 μžˆλ‹€.

  • 일뢀 μ˜μ—­μ— 데이터 갱신을 ν•˜λ”λΌλ„ λ‚˜λ¨Έμ§€ 전체 μ˜μ—­μ€ λ©ˆμΆ”λŠ” 것이 μ•„λ‹Œ
    ν”„λ‘œκ·Έλž¨μ΄ 계속 λŒμ•„κ°„λ‹€

πŸ“Œ AJAX 예제

GET λ°©μ‹μœΌλ‘œ AJAX μš”μ²­λ³΄λ‚΄κΈ°

	function send_GET(){
     let xhr = new XMLHttpRequest();
     xhr.open("GET", "requset_ajax.jsp?userid=apple&userpw=1234", true );
     xhr.send();
     xhr.onreadystatechange = function(){
     	if( xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200){
        	document.getElementById("result").innerHTML = xhr.responseText;
   		 }
    }    
let xhr = new XMLHttpRequest();

new XMLHttpRequest();
μ›Ή λΈŒλΌμš°μ €κ°€ μ„œλ²„μ™€ 데이터λ₯Ό κ΅ν™˜ν•  λ•Œ ( AJAX λ₯Ό μ‚¬μš©ν•  λ•Œ ) μ‚¬μš©ν•˜λŠ” 객체

	xhr.open("GET", "requset_ajax.jsp?userid=apple&userpw=1234", true );	

open( 전달방식 , "URL μ£Όμ†Œ or 파일 μ£Όμ†Œ " , 동기여뢀 true = 비동기 , false = 동기 ) ;

  • ❗ 2번째 νŒŒλΌλ―Έν„° μ—μ„œ .JSON* νŒŒμΌμ„ 톡해 데이터λ₯Ό κ΅ν™˜ν•œλ‹€ _
xhr.send();

μž‘μ„±ν•œ AJAX μš”μ²­μ„ μ„œλ²„λ‘œ μ „λ‹¬ν•˜λŠ” λ©”μ†Œλ“œ

     xhr.onreadystatechange = function(){
     	if( xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200){
        	document.getElementById("result").innerHTML = xhr.responseText;
   		 }

xhr.onreadystatechange
μ„œλ²„λ‘œλΆ€ν„° μ‘λ‹΅ν•˜κΈ° μœ„ν•œ λ©”μ†Œλ“œ
xhr.readyStatus 와 xhr.status κ°€ 정상일 λ•Œμ—λ§Œ
<id="result"> νƒœκ·Έμ— xhr.응닡값을 λ°˜ν™˜ν•˜κ² λ‹€λŠ” 의미이며
XMLHttpRequest 객체의 readyStateν”„λ‘œνΌν‹° 값이 λ³€ν•  λ•Œλ§ˆλ‹€
μžλ™μœΌλ‘œ ν˜ΈμΆœλ˜λŠ” ν•¨μˆ˜λ₯Ό μ„€μ •ν•œλ‹€.

  • status
    -> μ„œλ²„μ˜ λ¬Έμ„œμƒνƒœλ₯Ό λ‚˜νƒ€λ‚Έλ‹€.(HTTP μƒνƒœμ½”λ“œ)
    1. 1XX : 쑰건뢀 응닡
    2. 2XX : 성곡
    3. 3XX : λΌλ‹€μ΄λ ‰μ…˜ μ™„λ£Œ
    4. 4XX : μš”μ²­ 였λ₯˜
    5. 5XX : μ„œλ²„ 였λ₯˜
  • readyState
    -> XMLHttpRequest 객체의 ν˜„μž¬ μƒνƒœλ₯Ό λ‚˜νƒ€λ‚Έλ‹€
    1. UNSENT(숫자 0) : XMLHttpRequest 객체가 생성됨
    2. OPENED(숫자 1) : open() λ©”μ„œλ“œκ°€ μ„±κ³΅μ μœΌλ‘œ 싀행됨
    3. HEADERS_RECEIVED(숫자 2) : λͺ¨λ“  μš”μ²­μ— λŒ€ν•œ 응닡이 도착
    4. LOADING(숫자 3) : μš”μ²­μ•ˆ 데이터λ₯Ό 처리 쀑
    5. DONE(숫자 4) : μš”μ²­ν•œ λ°μ΄ν„°μ˜ μ²˜λ¦¬κ°€ μ™„λ£Œλ˜μ–΄ 응닡할
    μ€€λΉ„κ°€ μ™„λ£Œλ¨.
profile
Hyobin12

0개의 λŒ“κΈ€