스프링에서 메시지를 담아 전송할때는 3가지 방법이 있다.
@PostMapping("URL1")
public String save(User user, Model m) throws Exception{
// 1. 유효성 확인
if (!(isVaild(user))) {
String msg = URLEncoder.encode("id를 잘못입력하셨습니다.", "utf-8");
// 첫번째 방법 : 모델을 쓰지 않고 직접 URL 재작성해서 보냄.
return "redirect:URL2?msg="+msg; // URL 재작성
// 두번째 방법 : 모델에 담아 redirect로 전송하는 방법
/* 여기서 모델은 URL1의 모델로 URL2로 redirect할때는 URL2에서는 모델을 쓸 수 없게 된다.
하지만 이 방법이 되는 이유는 스프링이 위의 첫번째 방법이 return 되는 것과 같이 바꿔주기 때문에 이렇게 쓸 수 있는 것이다. */
m.addAttribute("msg", msg);
return "redirect:URL2";
// 세번째 방법 : 모델에 담아 forward로 전송하는 방법
m.addAttribute("msg", msg);
return "forward:/register/add";
}
}
위의 코드와 같이 유효성을 검사하는 등의 작업 등 에서 메시지를 담아 보낼때는 메시지에 URL 인코딩을 반드시 해주어야 한다. 그리고 이를 받는 jsp에서는 반드시 이것을 디코딩을 해야 한다.
jsp에서는 디코더 클래스를 import해주고 해당 메시지를 디코딩 해주면 된다.