URLEncoder
@PostMapping("/new-post")
public String newPostSubmit(@CurrentUser Account account, @Valid PostForm postForm, Errors errors, Model model){
if(errors.hasErrors()){
model.addAttribute(account);
return "post/form";
}
Post newPost = postService.createNewPost(account, modelMapper.map(postForm, Post.class));
return "redirect:/post/"+ URLEncoder.encode(newPost.getPath(), StandardCharsets.UTF_8);
}
새로운 게시글을 생성하고 나서 해당 게시글 페이지로 리다이렉트 해주는 코드이다.
새로운 게시글의 URL을 살펴보면 게시글을 식별하는 path 값을 URLEncoder를 통해서 인코딩을 하는 것을 알 수 있다.
결론부터 말하자면 path값은 한글이 올 수도 있기 때문에 이를 URL로 사용하기 위해서 인코딩을 해주는 것이다.
URL에는 여러가지 규칙이 존재하고, 이 규칙에 사용되는 문자들이 정해져 있기 때문에 URL에 사용되는 문자는 모두 이 규칙에 맞게 변환이 되어야한다.
그렇기 때문에 한글은 아스키 코드 값으로 변경이 되어야 하는 것이다.
간혹 블로그를 보다가도 티스토리나, velog에서 게시물의 주소에 한글이 들어가는 경우를 본 적이 있다.
이 경우에도 주소에 한글이 들어가지만, 해당 주소를 복사해서 출력해보면 한글 부분이 아스키 코드 값으로 인코딩이 되어 있는 것을 확인할 수 있다.
REFERENCE