1. @PathVariable
@GetMapping("/blog/{userid}/{articleno}")
public String viewArticle(@PathVariable("userid") String userId, @PathVariable("articleno") int articleNo, Model model){
...
return "blog/view";
}
Code language: JavaScript (javascript)
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;
}
});
}
});
Code language: JavaScript (javascript)
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 + "";
}
...
Code language: PHP (php)
@GetMapping("/{userid}")와@PathVariable("userid")를 사용. QueryString을 사용하지 않았다.@ResponseBody: 반환값을 Http Body에 그대로 전달한다. View로 이동하지 않는다.