ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • AJAX
    프로그래밍/JSP 2022. 11. 22. 22:37
    728x90

     

     

    AJAX는 Asynchronous JavaScript And XML의 약자로 자바스크립트를 이용하여 서버와 브라우저간 비동기적으로 데이터 교환을 할 수 있는 통신 방식의 개념이다.

     

    AJAX를 사용하면 웹 페이지 일부만을 갱신하고자 할때 전체 페이지를 렌더링 할 필요없이 갱신이 필요한 부분만 로드하여 갱신하여 빠르고 다양하게 동작하는 동적 웹 페이지의 구현이 가능하다.

     

    반면 서버에서 클라이언트로 먼저 요청할 수 없고, 페이지의 이동이 없기 때문에 히스토리가 남지 않고 반복적인 데이터를 요청하게 되면 느려지거나 작동하지 않을 수 있다.

     

     


     

     

     

    AJAX를 구현하기 위한 절차 익히기

     

    1. XMLHttpRequest 객체

    XMLHttpRequest 객체는 Ajax의 가장 핵심적인 구성요소로 웹 브라우저가 서버와 데이터를 교환할 때, 백그라운드에서 지속적이고 비동기적인 서버 통신을 할 수 있는 기능을 제공한다. 페이지의 일부만을 업데이트 할 수 있도록 한다.

    const xhr = new XMLHttpRequest();

     

     

     

    2. 서버에 request 전달

     

    open()

    서버에 보낼 AJAX 요청의 형식을 설정한다.

    open(전달 방식, URL주소, 동기여부);

    - 전달방식 : get, post 방식 중 하나를 선택
    - URL주소 : 요청을 처리할 서버의 파일 주소
    - 동기여부 : 요청을 동기식으로 전달할지 비동기식으로 전달할지 선택(기본 : true, 비동기)

     

    send()

    서버 요청시 전송데이터를 보낸다.

    - GET 방식의 경우 URL에 붙여 보내므로 null 값으로 처리
    - POST 방식은 데이터를 key-value로 저장하여 전달

     

     

     

    3. 서버로 받은 response 처리

     

    Call Back 함수

    XMLHttpRequest는 요청과 관련된 상태값을 저장하며 그 값이 변경시 마다 event를 발생시킨다. 

    xhr.onreadystatechange = function(){
    	...
    }

    onreadystatechange : 요청에 대한 상태가 변화할 때 마다 발생하는 event를 처리한다.

     

     

    readyState

    request로 보낸 데이터 처리 상태를 나타내는 것으로 상태값 반환을 통해 서버로 부터 응답 여부를 확인 할 수 있다.

    이때 XMLHttpRequest.DONE(‘4’)과 같다면 서버로 부터 정상적으로 응답처리할 준비가 되었음을 의미한다.

     

    아래 표는 readyState의 상태값의 설명이다.

    구분 설명
    0(uninitialized) request가 초기화되지 않음
    1 (loading) 서버와의 연결이 성사됨
    2 (loaded) 서버가 request를 받음
    3 (interactive) request(요청)을 처리하는 중
    4 (complete) request에 대한 처리가 끝났으며 응답할 준비가 완료됨

     

    status

    XMLHttpRequest 객체가 접속한 서버페이지의 상태를 출력하며, 정상적인 호출은 200, 페이지가 없음은 404를 출력한다.

     

     

     


     

     

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Ajax</title>
    </head>
    <body>
    	<h2>Ajax</h2>
    	<button onclick="sendRequest()">요청 보내기</button>
    	<p id="text"></p>
    	
        <script>
        function sendRequest(){
        	const xhr = new XMLHttpRequest();
    
       		xhr.open('GET', 'Ajax_ok.jsp?userid=son&userpw=777', true);
        	xhr.send();
        	xhr.onreadystatechange = function(){
            	if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200){
            		document.getElementById('text').innerHTML = xhr.responseText;
            	}
            }
        }
        </script>
    </body>
    </html>

     

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    	String userid = request.getParameter("userid");	// son
    	String userpw = request.getParameter("userpw");	// 777
    	out.println(userid);	// son
    	out.println(userpw);	// 777
    %>

     

     

    728x90

    '프로그래밍 > JSP' 카테고리의 다른 글

    JSP 회원가입 만들기  (0) 2022.11.26
    JSP 로그인 만들기  (0) 2022.11.25
    세션(session)  (0) 2022.11.21
    쿠키(cookie)  (0) 2022.11.18
    HTTP Request/Response & GET/POST 방식 구현  (0) 2022.11.16

    댓글

Designed by Tistory.