Spring Framework

Ajax_비동기 방식

꾸주니12 2022. 5. 28. 17:04

Ajax

Asynchronous JavaScript And Xml

: 비동기로 통신 하는 JavaScript(json) 와 xml 이라는 뜻 

 

 

*동기화와 비동기화 방식의 차이점 *

 

*동기화 

  • 요청한 일이 끝날 때 까지 다른 일을 하지 못한다.
  • 이전까지 한 내용 다 동기화 방식 / Form 방식을 통해서
  • 값을 입력하고 실행하면 값이 사라짐

 

*비동기화 

  • 요청 해 놓고 다른일을 자유롭게 할 수 있다. (이거하면서 다른것도 할 수 있음)
  • 중간에 누가 존재 너는 할일해 기다리는건 내가할게 : xmlhttprequest 객체필요 
  • Form 을 사용하지 않음 
  • 값을 입력하고 실행을 해도 입력한 값이 남아있음 (아이디 중복체크할 때 씀 )

 

 

 

 

필요한 라이브러리 pom.xml

잭슨 라이브러리 의 역할 : 자바코드를 자바스크립트로 바꿔줌 ( 단, 비슷한 데이터 타입으로 작성해야함)

Jackson databind,Jackson core 2.11.0 _ pom.xml

<!-- ajax 통신을 위한 라이브러리 -->

<dependency>

    <groupId>com.fasterxml.jackson.core</groupId>

    <artifactId>jackson-databind</artifactId>

    <version>2.11.0</version>

</dependency>


<dependency>

    <groupId>com.fasterxml.jackson.core</groupId>

    <artifactId>jackson-core</artifactId>

    <version>2.11.0</version>

</dependency>

 

 

 

 

 

 

 

쓰는 방법

 

/Jquery로 쓸거야(자바스크립트는 어렵)/ 

$.ajax({

 type : '',   전송 방식을 지정(post or get)
url : '', 요청을 전송 할 url 주소 
data : {}, 요청시 추가할 파라메터
dataType : '', 응답 받을 데이터 타입 (json or xml or text or jsonp)
timeout : 5000, 요청 타임 아웃 (miliseconds)
success : function(data){
},
성공시 실행할 내용(data : 응답 받은 데이터)
error : function(e){} 실패시 실행할 내용

});

 

 

 

*중요*

자바스크립트는 콘솔 꼭 찍어주기 ! - 이거없으면 에러찾기 힘듦 

 

 

 

 

—— 순서 지키기 

home.jsp

(Data랑 e 는 그냥 원하는 이름 넣는거거임)

 

 

$.ajax();

  • 아작스 안에는 오브젝트가 들어가고 

$.ajax({});

  • 그 안에는 옵션이 많이 들어가고 (복수개의 데이터가 들어가면 object 형태로 {} /data )
  • 복수개로 받을 수 있는건 object, 배열
  • Object는 (key, value) (key,값) 형태
  • 배열은 값만 쭉 들어가는거 

ㄴ jquery에서 id를 가져오는 #  사용 $(“#id”) 만 가져오면 태그를 통째로 가져온대 

그래서 val 함수 넣어주기 (value=“” 써줘야하나? )

 

 

 

 

 

 

 

[controller도 비동기에 맞게 변경해줘야 한다.]

homeController

 

 

1. response 객체를 이용해 응답해줘야 한다.

- 동기방식은 request객체를 사용하여 데이터를 담아 페이지로 전달해줄 수 있음

- 반면에 비동기 방식은 response객체 사용, 데이터를 전달하지 못함 

- 데이터타입이 json인데 기존동기방식처럼 return “home”; 로 text html로 보낼 수 없음 - 이   경우 에러 메시지 

 

 

2. javascript 가 알 수 있는 형태로 응답 해줘야 한다. (array, object)

-  자바에서 자바스크립트를 쓸 수 없으니까 잭슨 라이브러리를 사용 

(비슷한 데이터 타입으로 써야 잭슨이 바꿔줌)

json 데이터 타입은 array(배열)나 object(객체)인데,

Array 는 java의  list 나 array list, object는 java의 hashmap으로 

 

개발자 도구