[Spring] 비동기 통신

2024. 7. 6. 23:29BE/Spring

1. @PathVariable

@GetMapping("/blog/{userid}/{articleno}")
public String viewArticle(@PathVariable("userid") String userId, @PathVariable("articleno") int articleNo, Model model){
    ...
    return "blog/view";
}

url에 일부분을 매개변수로 사용할 수 있다.

 

Clean URL, Rest API에 유용하다.

 


2. @ResponseBody

// join.jsp
let isUseId = false;
document.querySelector("#userid").addEventListener("keyup", function () {
let userid = this.value;
console.log(userid);
     let resultDiv = document.querySelector("#idcheck-result");
     if(userid.length < 6 || userid.length > 16) {
         resultDiv.setAttribute("class", "mb-3 text-dark");
         resultDiv.textContent = "아이디는 6자 이상 16자 이하 입니다.";
         isUseId = false;
     } else {
         fetch("${root}/user/" + userid)
         .then(response => response.text())
         .then(data => {
             console.log(data);
         if(data == 0) {
               resultDiv.setAttribute("class", "mb-3 text-primary");
                 resultDiv.textContent = userid + "는 사용할 수 있습니다.";
                 isUseId = true;
         } else {
               resultDiv.setAttribute("class", "mb-3 text-danger");
                   resultDiv.textContent = userid + "는 사용할 수 없습니다.";
                 isUseId = false;
         }
       });
     }
});
  • fetch("${root}/user/" + userid) : 회원가입 시 중복되는 아이디 검사하는 비동기 통신 발생.

(${root}는 JSP파일에서 사용되는 EL 문법이다.)

 

@Controller
@RequestMapping("/user")
public class MemberController {

    @GetMapping("/{userid}")
    @ResponseBody
    public String idCheck(@PathVariable("userid") String userId) throws Exception {
        int cnt = memberService.idCheck(userId);
        return cnt + "";
    }
    ...
  • @GetMapping("/{userid}")@PathVariable("userid")를 사용. QueryString을 사용하지 않았다.
  • @ResponseBody : 반환값을 Http Body에 그대로 전달한다. View로 이동하지 않는다.

 


'BE > Spring' 카테고리의 다른 글

[Spring] SpringBoot  (0) 2024.07.06
[Spring] Rest API  (0) 2024.07.06
[Spring] MyBatis-Spring module  (0) 2024.07.06
[MyBatis] 동적 SQL  (0) 2024.07.06
[MyBatis] MyBatis란?  (0) 2024.07.06