Java 기반 클라우드 융합 개발자 과정 - KH 정보교육원/10월

22.10.05 - [ Spring ] Ajax 활용 { 아이디 중복 체크, 숫자, json, 한글 인코딩 } + @RestController

giggs 2022. 10. 7. 15:38

 

 

-- INDEX --

 

 

1. 아이디 중복체크 2. ajax란? 3. 숫자 타입 4.json 타입 5. 인코딩 6. @RestController
id입력한 값 얻어오기 클라이언트
측에서 

받아오는 방식과
처리 방식이
다른 것.
data{age:20} Gson
<dependency>
produces() 컨트롤러의 있는
모든 메서드의
리턴은 문자열
그대로 처리되었으면 한다.
값 담아서
서버에 요청보내기
test2( String age ) gson.toJson()  
응답받은 값으로
처리하기
     

 

 

 

 


 

 

 

Ajax활용

 

1. 아이디 중복확인 체크하기

 

 

1-1 : form전송 안되도록 – 타입:버튼으로 변경해주고 – onclick 이벤트 걸어주기

  • flag 개념의 응답 결과 표시해놓을 input 태그도 만들어놓기

 

 


 

1-2 : <script> 태그에서 checkDup 메서드 만들어주기

  • 서버한테 가서, 지금 입력한 id가 디비에 있는지 물어보고 응답받기
  • 응답받아서,  표시해놓기

 

 

# ajax 호출해서 사용하기 $.ajax() ( ajax호출할때는 정보들 담아서 호출하기 ) #


이렇게 여러개의 data를 넘겨주어야 하는 상황에서는 

object를 활용해서 { key:value } 형태로 전달

$.ajax({  })

 

일단 서버로 요청 잘 전달되어서 -&nbsp; 통신 잘 되는지 확인 해보기

 

 

# Check 1

  • data는 key:value형태로 보내주어야 하므로 객체{} 형태로 보내준다.
  • key값 자리에는 무조건 문자열이 오는 것이므로 “ ” 생략 가능

 

 

#Check 2

  • success와 error 에는 동작이 들어온다 – 동작은 function으로 만들어 준다.

 

 


 

1-3 :ajax 요청 처리할 C-S-D : mapper 만들어주기

 

 

#컨트롤러 : ajax에서 넘겨주는 datakey 값과 동일한 이름으로 받아야 한다! #


 

 


 

 

1-4 : 서버에서 응답받은 값 - 파라미터로 받아서 처리하기

 

 

1. 히든으로 해놓은 input 태그 가져오기

2. 함수의 파라미터로 서버의 응답 값 받기

3. 중복되지 않아서 결과가 0으로 오면 – 중복 여부 ‘x’ 로 설정해주기

 

 


 

 

1-5 : form 태그의 check() 메서드에 중복확인 체크 여부 추가해주기 + ajax 다듬기

 

 

onsubmit 속성 값이  false 면 <form> 태그 제출 안된다.


 

서버로부터 응답받은 data 가  0이라면 - db에 해당 id 없다는 것 = 사용 가능한 id 

 

 

 

 

 

 


 

 

 

 

 

2.  Ajax란?

  • ajax는 view페이지 전체를 새로 고침 하는 것이 아니라
  • 페이지에 string 문자열이나 숫자 조금 끼어넣는 용도로 사용하는 비동기 통신

 

 

 

# form 요청과 ajax 요청 비교 #

 

클라이언트 측에서 - 요청을 보내는 것은 같다.

서버측에서 - 응답하는 것도 같다.

클라이언트 측에서 - 받아오는 방식과 처리 방식이 다른 것.

 

 

기존 방식대로 밥상을 받아왔으면 view페이지 자체로 보여주는 것이고,

ajax방식으로 조그마한 그릇에 받아왔으면 view페이지 한쪽에 보여주어도 되고 안 보여주어도 되는 것

 

 

( 밥상 전체 바꾸는 것이 아닌 조그마한 그릇에 담아서 내 밥상에 추가해주거나 말거나 하는 것 )

( 아이폰으로 주문한 건지,, 갤럭시로 주문한 건지 서버는 신경 쓸 거 아니다. )

 

 

 

 # 조그마한 그릇 == ajax에서 success() 의 파라미터

 

 

 

 

 


 

 

 

 

3. 숫자 데이터 타입 받아서 작업하기

 

 

 

 

 


 

 

 

 

4. json 타입 데이터 받아오기

  • 서버로부터 json타입 data 받아오기

 

 

4-1 : pom.xml에 <dependency> 추가

 

 


 

4-2 : Gson 객체 만들고 toJson 메서드 사용

  • vo 만들기 불편하니까 hashMap으로 진행
  • Gson gson = new Gson();
  • gson.toJson();

 

 

 

gson 도 자주 사용할 거 같으면 bean으로 등록해놓고 autowired 받아서 사용하면 된다.

단발성으로 한 번 사용할 것이라서 컨트롤러 만들어서 사용한 것이다.

 

 


 

4-3 : Json타입으로 잘 전달되어서 객체로 인식되나 확인해보기

 

 

 

 

 

 


 

 

 

5. Spring권장 인코딩 방식

 

 

5-1 : 우리가 해오던 한글 인코딩  방식 — resp 이용해서 했었다.

 

 


 

 

5-2 : spring이 권장하는 인코딩 방식 - produces

  • @*Mapping에 파라미터 값 2개 이상 사용할 때는 어떤 값인지 표시해 주어야 한다.
  • 파라미터 1개일 경우에는 value로 인식되지만, 2개 이상 사용할 때는 어떤 값인지 지정 필요
  • produces = "text/plain"; charset=UTF-8"

 

 

 

 

 

 


 

 

 

6.  @RestController

  • 해당 컨트롤러의 있는 모든 메서드의 리턴은 문자열 그대로 처리되었으면 한다.
  • 메서드 하나하나 @ResponseBody 해주는 것이 아닌
  • 클래스에 @RestController 해주면 된다!